主要内容

模型相关的异常检测

统计和机器学习工具箱™提供特定于模型的异常检测功能,可以在培训分类,回归或聚类模型后应用。例如,您可以使用这些对象函数来检测异常:

  • 接近矩阵 -概要对于随机森林(CompactTreeBagger

  • Mahalanobis距离 -泰姬陵对于判别分析分类器(ClassificationDiscriminant) 和泰姬陵对于高斯混合模型(GMDistribution.

  • 无条件概率密度 -logp.对于判别分析分类器(ClassificationDiscriminant),logp.对于天真贝叶斯分类器(ClassificationNaiveBayes), 和logp.对于侏儒贝叶斯分类器,用于增量学习(incrementalClassificationNaiveBayes

具体操作请参见功能参考页面。

训练随机森林后检测离群值

通过使用培训随机林分类器TreeBagger使用对象函数来检测培训数据中的异常值概要

训练随机森林分类器

加载电离层数据集,其中包含雷达返回品质(Y)和预测的数据(X), 34个变量。雷达回波质量良好('G')或品质差(“b”)。

负载电离层

火车随机森林分类器。存储禁止袋的信息以进行预测值重要性估算。

RNG(“默认”再现性的百分比mdl_tb = treebagger(100,x,y,方法=“分类”...Oobpredictorimportance =“上”);

Mdl_TB是一个TreeBagger用于分类的模型对象。TreeBagger商店预计属性重要性估计OobpermutedPredictordeltaError

使用接近度检测离群值

方法检测训练数据中的离群值概要函数。该函数根据训练的随机森林中一个观测值与其他观测值之间的平均接近平方计算离群值。

cmdl_tb = compact(mdl_tb);s_proximity = OutliEremeAleure(cmdl_tb,x,labels = y);

离群值度量的高值表明该观察结果是一个离群值。找到与第95个百分位对应的阈值,并使用isoutlier函数。

[TF,~,U] = isoutlier(s_proximity,百分位数=[0 95]);

绘制离群值度量的直方图。在离群值处创建一条垂直线。

直方图(S_proximity)Xline(U,“r -”,加入([“阈值=”U]))标题(“离群值度量直方图”

Figure包含一个轴对象。标题为《离群值直方图》的轴对象包含直方图类型的2个对象,常数线。

使用属性中由预测器重要性估计选择的两个最重要的特征来可视化观察值OobpermutedPredictordeltaError

[~, idx] = (Mdl_TB排序。OOBPermutedPredictorDeltaError,“下降”);tf_c =分类(tf,[0 1],[“正常点”“异常”]);g箭头(x(:,idx(1)),x(:,idx(2)),tf_c,“kr”“。X”,[],“上”...mdl_tb.predictornames(idx(1)),mdl_tb.predictornames(idx(2)))

Figure包含一个轴对象。轴对象包含2个类型的物体。这些物体代表法线点,异常点。

再次培训分类器而没有异常值,并绘制异常值措施的直方图。

mdl_tb = treebagger(100,x(〜tf,:),y(〜tf),方法=“分类”);s_proximity = outlierMeasure (CMdl_TB X (~ TF,:),标签= Y (~ TF));直方图(s_proximity)标题(“消除异常值后的异常措施的直方图”

Figure包含一个轴对象。删除异常值后,带有标题直方图的轴对象包含类型直方图的对象。

培训判别分析分类器后检测异常值

通过使用培训判别分析模型fitcdiscr.使用对象函数来检测培训数据中的异常值logp.泰姬陵

火车判别分析模型

加载费雪虹膜数据集。矩阵测定包含150种不同的花的测量值。的变量物种列出每朵花的物种。

负载渔民

使用整个数据集训练判别分析模型。

mdl = fitcdiscr(meas,speies,predictornames =...“花萼长度”“萼片宽度”“花瓣长度”“瓣宽”]);

MDL.是一个ClassificationDiscriminant模型。

使用Log无条件概率密度检测异常值

计算培训数据的日志无条件概率密度。

s_logp = logp(mdl,meas);

密度值低,表示该观测值为离群值。

方法确定离群值的较低密度阈值isoutlier函数。

[〜,l_logp] = isoullier(s_logp);

通过使用阈值来识别异常值。

TF_logp = s_logp < L_logp;

绘制密度值的直方图。在离群值处创建一条垂直线。

图直方图(s_logp)参照线(L_logp“r -”,加入([“阈值=”l_logp]))标题(“对数无条件概率密度直方图”

Figure包含一个轴对象。轴对象的标题直方图的日志无条件概率密度包含2个对象直方图类型,常数线。

为了比较法线点和异常点的观测值,利用gplotmatrix函数。

tf_logp_c = patporical(tf_logp,[0 1],[“正常点”“异常”]);gplotmatrix(meas,[],tf_logp_c,“kr”“。X”,[],[],[], Mdl.PredictorNames)

图包含16个轴对象。轴对象1包含2个类型为line的对象。轴对象2包含2个类型为line的对象。轴对象3包含2个类型为line的对象。轴对象4包含2个类型为line的对象。轴对象5包含2个类型为line的对象。轴对象6包含2个类型为line的对象。轴对象7包含2个类型为line的对象。轴对象8包含2个类型为line的对象。轴对象9包含2个类型为line的对象。 Axes object 10 contains 2 objects of type line. Axes object 11 contains 2 objects of type line. Axes object 12 contains 2 objects of type line. Axes object 13 contains 2 objects of type line. Axes object 14 contains 2 objects of type line. Axes object 15 contains 2 objects of type line. Axes object 16 contains 2 objects of type line. These objects represent Normal Points, Anomalies.

使用mahalanobis距离检测异常值

求训练数据到真实标签类均值的马氏距离的平方。

s_mahal = mahal(mdl,meas,classlabels = speies);

大距离值表示相应的观察是一个异常值。

确定与第95百分位数相对应的阈值,并通过使用识别异常值isoutlier函数。

[tf_mahal,〜,u_mahal] = isoullier(s_mahal,百分位数= [0 95]);

绘制距离的直方图。在离群值处创建一条垂直线。

图直方图(s_mahal)参照线(U_mahal“-r”,加入([“阈值=”U_MAHAL]))标题(“Mahalanobis距离的直方图”

Figure包含一个轴对象。带有Mahalanobis距离的标题直方图的轴对象包含2个类型直方图,响应线的对象。

将正态点与异常点的观测值进行比较gplotmatrix函数。

TF_mahal_c = categorical(TF_mahal_c,[0 1],[“正常点”“异常”]);TF_mahal_c gplotmatrix(量,[],“kr”“。X”,[],[],[], Mdl.PredictorNames)

图包含16个轴对象。轴对象1包含2个类型为line的对象。轴对象2包含2个类型为line的对象。轴对象3包含2个类型为line的对象。轴对象4包含2个类型为line的对象。轴对象5包含2个类型为line的对象。轴对象6包含2个类型为line的对象。轴对象7包含2个类型为line的对象。轴对象8包含2个类型为line的对象。轴对象9包含2个类型为line的对象。 Axes object 10 contains 2 objects of type line. Axes object 11 contains 2 objects of type line. Axes object 12 contains 2 objects of type line. Axes object 13 contains 2 objects of type line. Axes object 14 contains 2 objects of type line. Axes object 15 contains 2 objects of type line. Axes object 16 contains 2 objects of type line. These objects represent Normal Points, Anomalies.

另请参阅

||||||

相关话题