主要内容

LocalOutlierFactor

局部离群值因素的异常检测模型

自从R2022b

    描述

    使用一个局部离群因子模型对象LocalOutlierFactor异常检测。

    • 在训练数据异常值检测(检测异常)——在训练数据通过使用检测异常lof函数。的lof函数创建一个LocalOutlierFactor对象,并返回异常指标和评分(局部离群因子值)的训练数据。

    • 新奇检测(检测异常在新数据与未被污染的训练数据),创建一个LocalOutlierFactor对象通过未被污染的训练数据(数据没有异常值)lof,在新数据通过检测异常对象和新的数据对象的功能isanomaly。的isanomaly函数返回异常指标和评分的新数据。

    创建

    创建一个LocalOutlierFactor通过使用对象lof函数。

    属性

    全部展开

    这个属性是只读的。

    预测用来训练当地的离群值因子模型,指定为一个数字矩阵或表。每一行的X对应于一个观察,每一列对应一个变量。

    这个属性是只读的。

    最大数量的每个叶节点的数据点Kd-tree,指定为一个正整数。

    该属性时是有效的SearchMethod“kdtree”。如果SearchMethod“详尽”,BucketSize值是空的([])。

    这个属性是只读的。

    分类预测指标,指定为一个向量的正整数。CategoricalPredictors包含索引值表明相应的预测分类。索引值介于1和p,在那里p预测的数量被用来训练模型。如果所有的预测都直言,那么这个属性是空的([])。

    这个属性是只读的。

    分数异常的训练数据,指定为数字标量范围[0,1]

    • 如果ContaminationFraction值为0,那么lof对待所有正常训练观察观察,并设置分数阈值(ScoreThreshold属性值)的最大异常分数值训练数据。

    • 如果ContaminationFraction值范围内(0,1],然后lof确定阈值(ScoreThreshold属性值),这样的功能检测指定的分数训练观察异常。

    这个属性是只读的。

    距离度量,指定为一个特征向量。

    • 如果所有的预测变量是连续变量(数字),然后距离值可以是其中一个距离度量。

      价值 描述
      “欧几里得”

      欧氏距离

      “mahalanobis”

      Mahalanobis距离,距离使用中存储的协方差矩阵DistParameter财产。

      闵可夫斯基的

      闵可夫斯基距离,距离使用指数的值存储在DistParameter财产。

      “chebychev”

      Chebychev距离(最大坐标差异)

      “cityblock”

      城市街区的距离

      “相关”

      1 -样本之间的相关性观察(视为序列值)

      的余弦

      1 -之间的夹角的余弦值观察(视为向量)

      “枪兵”

      1 -样本之间的斯皮尔曼等级相关的观察(视为序列值)

    • 如果所有的预测变量是分类变量,然后距离值可以是其中一个距离度量。

      价值 描述
      “汉明”

      汉明距离,协调不同的百分比

      “jaccard”

      1 - Jaccard系数,非零坐标不同的百分比

    各种距离度量的更多信息,请参阅距离度量

    这个属性是只读的。

    距离度量Mahalanobis或者闵可夫斯基距离参数值,指定为一个积极的标量。的DistParameter值是空的([]其他距离),这表明指定的距离度量公式没有参数。

    • 如果距离“mahalanobis”,然后DistParameter是协方差矩阵的距离公式。的名称-值参数lof设置此属性。

    • 如果距离闵可夫斯基的,然后DistParameter指数在闵可夫斯基距离公式。的指数名称-值参数lof设置此属性。

    这个属性是只读的。

    系包含标志指示是否LocalOutlierFactor包括所有的邻居距离值等于kth最小距离,指定为逻辑0()或1(真正的)。如果IncludeTies真正的,LocalOutlierFactor包括所有的邻居。否则,LocalOutlierFactor包括确切的k邻居。

    这个属性是只读的。

    最近的邻居X用于计算局部离群因子值,指定为一个正整数的值。

    这个属性是只读的。

    预测变量名称,指定为一个单元阵列的特征向量。元素的顺序PredictorNames对应的顺序预测的名字出现在训练数据。

    这个属性是只读的。

    阈值的异常分数用来识别异常在训练数据,指定为负的标量。

    软件识别观测与异常分数高于阈值异常。

    • isanomaly目标函数使用ScoreThreshold属性值的默认值ScoreThreshold名称-值参数。

    这个属性是只读的。

    最近邻搜索方法,指定为“kdtree”“详尽”

    • “kdtree”这个方法使用一个Kd-tree算法来找到最近的邻居。这个选项是有效的,当距离度量(距离)是下列之一:

      • “欧几里得”——欧几里得距离

      • “cityblock”——城市街区的距离

      • 闵可夫斯基的- - - - - -闵可夫斯基距离

      • “chebychev”——Chebychev距离

    • “详尽”——这个方法使用穷举搜索算法来找到最近的邻居。

      • 当你计算局部离群因子值X使用lof函数,通过计算函数发现的最近邻中所有点的距离值X在每一个点X

      • 当你为新数据计算局部离群因子值Xnew使用isanomaly函数,通过计算函数发现的最近邻中所有点的距离值X在每一个点Xnew

    对象的功能

    isanomaly 使用当地发现异常数据离群值的因素

    例子

    全部折叠

    检测异常值(在训练数据异常)使用lof函数。

    加载示例数据集NYCHousing2015

    负载NYCHousing2015

    数据集包括10变量信息属性的销售在2015年在纽约。显示一个总结的数据集。

    总结(NYCHousing2015)
    变量:区:91446 x1双重价值:1分钟3马克斯5社区中位数:91446 x1单元阵列的特征向量BUILDINGCLASSCATEGORY: 91446 x1单元阵列的特征向量RESIDENTIALUNITS: 91446 x1双重价值:最小值0 8759 Max COMMERCIALUNITS中位数:91446 x1双重价值:最小值0最大612 LANDSQUAREFEET: 91446 x1双重价值:最小值0 1700 Max 2.9306 e + 07 GROSSSQUAREFEET中位数:91446 x1双重价值:最小值0 1056 Max 8.9422 e + 06 YEARBUILT中位数:91446 x1双重价值:最小值0 1939 Max 2016 SALEPRICE中位数:91446 x1双重价值:最小0值3.3333 e + 05年最大4.1111 e + 09 SALEDATE: x1 datetime值:91446分钟01 - 2015年1月- 2015位数09年7月- Max 31 - 12月- 2015

    删除非数字变量NYCHousing2015。的数据类型变量是翻倍,但它是一个类别变量说明财产所在地的区。删除变量。

    NYCHousing2015 = NYCHousing2015 (:, vartype (“数字”));NYCHousing2015。区= [];

    培训当地的离群值因子模型NYCHousing2015。指定的比例异常的训练观察为0.01。

    (Mdl, tf,分数)= lof (NYCHousing2015 ContaminationFraction = 0.01);

    Mdl是一个LocalOutlierFactor对象。lof还返回异常指标(特遣部队)和异常分数(分数训练数据)NYCHousing2015

    画一个柱状图的分数值。创建一个垂直线的分数阈值对应于指定的分数。

    h =直方图(分数,NumBins = 50);h.Parent。YScale =“日志”;参照线(Mdl.ScoreThreshold“r -”,(“阈值”Mdl.ScoreThreshold])

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

    如果你想确定异常污染有不同的分数(例如,0.05),你可以训练一个新的局部离群因子模型。

    [newMdl newtf,分数]= lof (NYCHousing2015, ContaminationFraction = 0.05);

    注意,改变污染分数变化异常指标,并且不影响异常分数。因此,如果你不想计算异常分数再次利用lof,您可以获得一个新的异常指标与现有的评分值。

    改变训练数据中的异常的分数为0.05。

    newContaminationFraction = 0.05;

    找到一个新的分数阈值使用分位数函数。

    1-newContaminationFraction newScoreThreshold =分位数(分数)
    newScoreThreshold = 6.7493

    获得一个新的异常指标。

    newtf = > newScoreThreshold得分;

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

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

    负载census1994

    census1994包含了训练数据集adultdata和测试数据集成人。预测数据必须连续或所有分类培训LocalOutlierFactor对象。删除非数字变量adultdata成人

    adultdata = adultdata (:, vartype (“数字”));成人=成人(:,vartype (“数字”));

    培训当地的离群值因子模型adultdata。假设adultdata不包含异常值。

    [Mdl, tf, s] = lof (adultdata);

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

    Mdl.ScoreThreshold
    ans = 28.6719

    发现异常成人通过训练当地异常因素模型。

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

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

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

    h1 =直方图(年代,NumBins = 50,标准化=“概率”);持有h2 =直方图(s_test h1.BinEdges正常化=“概率”);参照线(Mdl.ScoreThreshold“r -”,加入([“阈值”h1.Parent Mdl.ScoreThreshold]))。YScale =“日志”;h2.Parent。YScale =“日志”;传奇(“训练数据”,“测试数据”位置=“北”)举行

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

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

    找到(tf_test)
    ans = 0 x1空双列向量

    的异常分数分布测试数据与训练数据,isanomaly没有发现任何异常的测试数据默认阈值。您可以指定一个不同的阈值使用ScoreThreshold名称-值参数。例如,看到的指定异常分数阈值

    更多关于

    全部展开

    提示

    引用

    [1]Breunig,马库斯·M。,et al. “LOF: Identifying Density-Based Local Outliers.”学报2000年ACM SIGMOD国际会议管理的数据,2000年,页93 - 104。

    版本历史

    介绍了R2022b