主要内容

isanomaly

发现使用健壮的异常数据随机森林

自从R2023a

    描述

    例子

    特遣部队= isanomaly (森林,资源描述)表中发现异常资源描述使用RobustRandomCutForest模型对象森林并返回逻辑数组特遣部队的元素是真正的在检测到异常时在相应的行资源描述。如果您创建您必须使用这种语法森林通过一个表rrcforest函数。

    特遣部队= isanomaly (森林,X)发现异常的矩阵X。如果您创建您必须使用这种语法森林通过矩阵的rrcforest函数。

    例子

    特遣部队= isanomaly (___,名称=值)指定选项使用一个或多个名称参数除了任何输入参数组合在前面的语法。例如,设置ScoreThreshold= 0.5识别异常观测分数在0.5以上。

    (特遣部队,分数)= isanomaly (___)还返回一个异常分数范围内[0,)为每一个观察资源描述X。小积极值表示一个正常的观察,和一个大正值显示异常。

    例子

    全部折叠

    创建一个RobustRandomCutForest模型对象未被污染的训练观察使用rrcforest函数。然后检测小礼品(新数据异常)通过对象和新的数据对象的功能isanomaly

    1994年的人口普查数据加载存储census1994.mat。数据集包含了人口数据来自美国人口普查局预测一个人是否使每年超过50000美元。

    负载census1994

    census1994包含了训练数据集adultdata和测试数据集成人

    假设adultdata不包含异常值。火车一个健壮的随机森林模型adultdata。指定StandardizeData作为真正的标准化的输入数据。

    rng (“默认”)%的再现性[Mdl, tf, s] = rrcforest (adultdata StandardizeData = true);

    Mdl是一个RobustRandomCutForest模型对象。rrcforest还返回异常指标特遣部队和异常分数年代的训练数据adultdata。如果你不指定ContaminationFraction名称参数值大于0,rrcforest对待所有正常训练观察观察,这意味着所有的值特遣部队是逻辑0 ()。这个函数设置分数阈值最大的分数值。显示阈值。

    Mdl.ScoreThreshold
    ans = 86.5315

    发现异常成人通过训练有素的鲁棒随机森林模型。因为你指定的StandardizeData = true当你训练模型,isanomaly函数标准化输入数据通过使用预测手段和训练数据存储在的标准差μσ属性,分别。

    [tf_test, s_test] = isanomaly (Mdl,成人);

    isanomaly函数的作用是:返回异常指标tf_test和分数s_test成人。默认情况下,isanomaly确定观测分数高于阈值(Mdl.ScoreThreshold)异常。

    创建直方图异常分数年代s_test。创建一个垂直线阈值的异常分数。

    直方图(年代,规范化=“概率”)举行直方图(s_test正常化=“概率”)参照线(Mdl.ScoreThreshold“r -”,加入([“阈值”Mdl.ScoreThreshold]))传说(“训练数据”,“测试数据”位置=“西北”)举行

    图包含一个坐标轴对象。坐标轴对象包含3直方图类型的对象,constantline。这些对象代表训练数据,测试数据。

    显示异常的观测指标的测试数据。

    找到(tf_test)
    ans = 3541

    的异常分数分布测试数据与训练数据,isanomaly检测到少量的测试数据与异常默认阈值。

    放大的异常和阈值附近的观察。

    xlim ([92]) ylim (0.001 [0])

    图包含一个坐标轴对象。坐标轴对象包含3直方图类型的对象,constantline。这些对象代表训练数据,测试数据。

    您可以指定一个不同的阈值使用ScoreThreshold名称-值参数。例如,看到的指定异常分数阈值

    指定的阈值异常分数通过使用ScoreThreshold名称-值参数isanomaly

    1994年的人口普查数据加载存储census1994.mat。数据集包含了人口数据来自美国人口普查局预测一个人是否使每年超过50000美元。

    负载census1994

    census1994包含了训练数据集adultdata和测试数据集成人

    火车一个健壮的随机森林模型adultdata。指定StandardizeData作为真正的标准化的输入数据。

    rng (“默认”)%的再现性[Mdl, tf,分数]= rrcforest (adultdata StandardizeData = true);

    画一个柱状图的分数值。在默认的分数阈值创建一条垂直线。

    直方图(分数,正常化=“概率”);参照线(Mdl.ScoreThreshold“r -”,加入([“阈值”Mdl.ScoreThreshold]))

    图包含一个坐标轴对象。坐标轴对象包含2直方图类型的对象,constantline。

    发现的异常测试数据使用训练有素的鲁棒随机森林模型。使用不同的阈值从默认阈值训练模型时获得的。

    首先,确定分数阈值使用isoutlier函数。

    [~,~,U] = isoutlier(分数)
    U = 14.0904

    指定的值ScoreThreshold名称-值参数为U

    [tf_test, scores_test] = isanomaly (Mdl、成人ScoreThreshold = U);直方图(scores_test正常化=“概率”)参照线(U,“r -”,加入([“阈值”U]))

    图包含一个坐标轴对象。坐标轴对象包含2直方图类型的对象,constantline。

    输入参数

    全部折叠

    训练有素的鲁棒随机森林模型,指定为一个RobustRandomCutForest模型对象。

    预测数据,指定为一个表。每一行的资源描述对应于一个观察,每一列对应一个预测变量。多列变量和细胞数组以外的细胞阵列的特征向量是不允许的。

    如果你训练森林使用一个表,那么您必须提供预测数据通过使用资源描述,而不是X。所有的预测变量资源描述必须有相同的变量名和数据类型的训练数据。然而,列顺序资源描述不需要训练数据对应的列顺序。

    数据类型:

    预测数据,指定为一个数字矩阵。每一行的X对应于一个观察,每一列对应一个预测变量。

    如果你训练森林使用一个矩阵,那么你必须通过提供预测数据X,而不是资源描述。的变量的列X必须有相同的订单作为训练数据。

    数据类型:|

    名称-值参数

    指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

    例子:ScoreThreshold = 0.75, UseParallel = true设置阈值的异常分数0.75和运行并行计算。

    阈值的异常分数,指定为数字标量范围[0,)isanomaly确定观测与分数高于阈值异常。

    默认值是ScoreThreshold属性值的森林

    例子:ScoreThreshold = 50

    数据类型:|

    国旗并行运行,指定为真正的。如果您指定UseParallel = true,isanomaly函数执行通过循环迭代parfor。并行循环运行时并行计算工具箱™。

    例子:UseParallel = true

    数据类型:逻辑

    输出参数

    全部折叠

    异常指标,作为一个逻辑返回列向量。一个元素的特遣部队真正的当观察相应的行资源描述X是一个异常,否则。特遣部队一样的长度吗资源描述X

    isanomaly标识的观察与分数高于阈值(ScoreThreshold作为异常值)。

    异常分数,作为一个数字列向量与返回值的范围[0,)分数一样的长度吗资源描述X的每个元素分数包含一个观测的异常分数对应的行资源描述X。小积极值表示一个正常的观察,和一个大正值显示异常。

    更多关于

    全部折叠

    鲁棒随机森林减少

    鲁棒随机森林算法[1]分类点作为一个正常点的或反常的基于模型的变化引入的复杂性。类似于与世隔绝的森林算法的随机森林算法构建一个整体的树木。这两个算法的差异表现在他们在树上选择一个分裂变量以及它们如何定义异常分数。

    rrcforest函数创建一个健壮的随机森林减少模型(合奏的鲁棒随机砍树)训练观察和检测异常值(训练数据中的异常)。每棵树的一个子集训练训练观察如下:

    1. rrcforest吸引不重复样本训练观察的每棵树。

    2. rrcforest生长树通过选择分裂变量比例变量的范围,并选择随机分割的位置一致。一直持续到每个样本函数达到一个单独的每棵树的叶子节点。

    使用范围信息选择分裂变量使得算法健壮的无关变量。

    描述异常容易,但是要描述剩余的数据更加困难。因此,向模型添加异常增加模型的复杂性森林模型[1]。的rrcforest函数识别异常值使用异常分数定义基于变化模型的复杂性。

    isanomaly函数使用一个训练有素的鲁棒随机森林模型来检测异常数据。新奇检测(检测异常在新数据与未被污染的训练数据),你可以训练一个健壮的随机森林模型与未被污染的训练数据(数据没有异常值),用它来检测异常的新数据。对于每一个新数据的观察,发现功能对应的每棵树的叶子节点,计算模型的复杂性的变化引入的叶节点,并返回一个异常指标和评分。

    异常分数

    鲁棒随机森林削减算法使用共谋的位移作为一个异常分数。的共谋的位移的一个点x显示的贡献x模型的复杂性森林模型。小正的异常分数值表示一个正常的观察,和一个大正值显示异常。

    中定义的[1],模型的复杂性|(T)|T路径长度的总和(从根节点到叶子节点)在训练数据中所有点吗Z

    | ( T ) | = y Z f ( y , Z , T ) ,

    在哪里f(y,Z,T)的深度是y在树T。的位移x定义显示预期的变化模型引入的复杂性x

    Disp ( x , Z ) = T , y Z { x } P ( T ) ( f ( y , Z , T ) f ( y , Z { x } , T ) ) ,

    在哪里T '是一棵树Z——{x}Disp(x,Z)是预期的数量的分叶节点的兄弟节点包含吗x。这个定义并不健壮的副本或复本,并可能导致异常掩蔽。为了避免异常掩蔽,健壮的随机森林算法使用共谋的位移CoDisp,一组C包括x的能力x

    CoDisp ( x , Z ) = E T ( 马克斯 x C Z 1 | C | y Z C ( f ( y , Z , T ) f ( y , Z C , T ) ) ] ,

    在哪里T”是一棵树Z- - - - - -C,|C|点的子树的数量吗TC

    默认值为CollusiveDisplacement名称-值参数rrcforest“最大”。对于每一个树,默认情况下,软件发现的一组C最大化的比率Disp(x,C)/ |C|叶子节点的遍历x根节点,所述[2]。如果您指定CollusiveDisplacement=“平均”,软件计算的平均每棵树的比率,并使用平均值计算共谋的位移值。

    算法

    isanomaly认为,(空字符向量),”“(空字符串),<失踪>,<定义>资源描述X缺失值。

    isanomaly使用观察与缺失值找到分裂这些观测变量的有效值。函数可能将这些观察一个分支节点,不是一个叶子节点。然后isanomaly计算比率(Disp(x,C)/ |C|),遍历每个分支节点到根节点的树。函数的地方观察与根节点的所有缺失值。因此,比率和异常分数成为训练观察每棵树的数量,这是训练的最大可能的异常分数健壮的随机森林模型。您可以指定数量的训练观察每棵树使用NumObservationsPerLearner名称-值参数。

    引用

    [1]·古Sudipto, n . Mishra g·罗伊,o . Schrijvers。“鲁棒随机森林异常检测基于流,”美国第33机器学习国际会议48(2016年6月):2712 - 21所示。

    [2]Bartos,马修·D。,A. Mullapudi, and S. C. Troutman. "rrcf: Implementation of the Robust Random Cut Forest Algorithm for Anomaly Detection on Streams."开源软件杂志》上4,没有。35 (2019):1336。

    扩展功能

    版本历史

    介绍了R2023a