IsolationForest
描述
使用一个与世隔绝的森林(合奏的孤立树)模型对象IsolationForest
异常值检测和新奇检测。
创建
创建一个IsolationForest
通过使用对象iforest
函数。
属性
CategoricalPredictors
- - - - - -分类预测指标
向量的正整数|[]
这个属性是只读的。
分类预测指标,指定为一个向量的正整数。CategoricalPredictors
包含索引值表明相应的预测分类。索引值介于1和p
,在那里p
预测的数量被用来训练模型。如果所有的预测都直言,那么这个属性是空的([]
)。
ContaminationFraction
- - - - - -部分训练数据的异常
数字标量范围[0,1]
这个属性是只读的。
分数异常的训练数据,指定为数字标量范围[0,1]
。
如果
ContaminationFraction
值为0,那么iforest
对待所有正常训练观察观察,并设置分数阈值(ScoreThreshold
属性值)的最大异常分数值训练数据。如果
ContaminationFraction
值范围内(0
,1
],然后iforest
确定阈值(ScoreThreshold
属性值),这样的功能检测指定的分数训练观察异常。
NumLearners
- - - - - -隔离的树
正整数标量
这个属性是只读的。
数量的孤立树,指定为一个正整数标量。
NumObservationsPerLearner
- - - - - -每个隔离观察树的数量
正整数标量
这个属性是只读的。
数量的观察从训练数据不重复每个孤立树,指定为一个正整数标量。
PredictorNames
- - - - - -预测变量的名字
单元阵列的特征向量
这个属性是只读的。
预测变量名称,指定为一个单元阵列的特征向量。元素的顺序PredictorNames
对应的顺序预测的名字出现在训练数据。
ScoreThreshold
- - - - - -阈值异常分数
数字标量范围[0,1]
这个属性是只读的。
阈值的异常分数用来识别异常在训练数据,指定为一个数字标量范围[0,1]
。
软件识别观测与异常分数高于阈值异常。
的
iforest
功能决定了阈值检测指定的分数(ContaminationFraction
属性)的训练观察异常。
的
isanomaly
目标函数使用ScoreThreshold
属性值的默认值ScoreThreshold
名称-值参数。
对象的功能
isanomaly |
使用隔离森林发现异常数据 |
例子
检测异常值
检测异常值(在训练数据异常)使用iforest
函数。
加载示例数据集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
的SALEDATE
列是datetime
数组,这是不支持的金宝appiforest
。创建列的月和日数据datetime
值,删除SALEDATE
列。
[~,NYCHousing2015.MM NYCHousing2015。DD] = ymd (NYCHousing2015.SALEDATE);NYCHousing2015。SALEDATE = [];
列区
,社区
,BUILDINGCLASSCATEGORY
包含分类预测。显示类别的分类预测的数量。
长度(独特(NYCHousing2015.BOROUGH))
ans = 5
长度(独特(NYCHousing2015.NEIGHBORHOOD))
ans = 254
长度(独特(NYCHousing2015.BUILDINGCLASSCATEGORY))
ans = 48
与64多个类别,类别变量iforest
函数使用一个近似分割方法,该方法可以减少隔离森林模型的准确性。删除社区
列,其中包含254个类别的类别变量。
NYCHousing2015。社区=[];
火车一个隔离森林模型NYCHousing2015
。指定的比例异常的训练观察为0.1,并指定第一个变量(区
)作为分类预测。第一个变量是一个数值数组,所以iforest
假设这是一个连续变量,除非你指定变量作为分类变量。
rng (“默认”)%的再现性(Mdl, tf,分数)= iforest (NYCHousing2015 ContaminationFraction = 0.1,…CategoricalPredictors = 1);
Mdl
是一个IsolationForest
对象。iforest
还返回异常指标(特遣部队
)和异常分数(分数
训练数据)NYCHousing2015
。
画一个柱状图的分数值。创建一个垂直线的分数阈值对应于指定的分数。
直方图(分数)参照线(Mdl.ScoreThreshold,“r -”,(“阈值”Mdl.ScoreThreshold])
如果你想确定异常污染有不同的分数(例如,0.01),你可以训练一个新的隔离森林模型。
rng (“默认”)%的再现性(newMdl newtf,分数)= iforest (NYCHousing2015,…ContaminationFraction = 0.01, CategoricalPredictors = 1);
如果你想确定异常有不同的分数阈值(例如,0.65),你可以通过IsolationForest
对象,训练数据,和一个新的阈值isanomaly
函数。
[newtf,分数]= isanomaly (Mdl、NYCHousing2015 ScoreThreshold = 0.65);
注意,改变污染分数或分数阈值变化异常指标,并且不影响异常的分数。因此,如果你不想计算异常分数再次利用iforest
或isanomaly
,您可以获得一个新的异常指标与现有的评分值。
改变训练数据中的异常的分数为0.01。
newContaminationFraction = 0.01;
找到一个新的分数阈值使用分位数
函数。
1-newContaminationFraction newScoreThreshold =分位数(分数)
newScoreThreshold = 0.7045
获得一个新的异常指标。
newtf = > newScoreThreshold得分;
发现新奇事物
创建一个IsolationForest
未被污染的培训对象观察使用iforest
函数。然后检测小礼品(新数据异常)通过对象和新的数据对象的功能isanomaly
。
1994年的人口普查数据加载存储census1994.mat
。数据集由人口数据来自美国人口普查局预测一个人是否使每年超过50000美元。
负载census1994
census1994
包含了训练数据集adultdata
和测试数据集成人
。
火车一个隔离森林模型adultdata
。假设adultdata
不包含异常值。
rng (“默认”)%的再现性[Mdl, tf, s] = iforest (adultdata);
Mdl
是一个IsolationForest
对象。iforest
还返回异常指标特遣部队
和异常分数年代
的训练数据adultdata
。如果你不指定ContaminationFraction
名称参数值大于0,iforest
对待所有正常训练观察观察,这意味着所有的值特遣部队
是逻辑0 (假
)。这个函数设置分数阈值最大的分数值。显示阈值。
Mdl.ScoreThreshold
ans = 0.8600
发现异常成人
通过训练有素的隔离森林模型。
[tf_test, s_test] = isanomaly (Mdl,成人);
的isanomaly
函数的作用是:返回异常指标tf_test
和分数s_test
为成人
。默认情况下,isanomaly
确定观测分数高于阈值(Mdl.ScoreThreshold
)异常。
创建直方图异常分数年代
和s_test
。创建一个垂直线阈值的异常分数。
直方图(年代,规范化=“概率”)举行在直方图(s_test正常化=“概率”)参照线(Mdl.ScoreThreshold“r -”,加入([“阈值”Mdl.ScoreThreshold]))传说(“训练数据”,“测试数据”位置=“西北”)举行从
显示异常的观测指标的测试数据。
找到(tf_test)
ans = 15655
的异常分数分布测试数据与训练数据,isanomaly
检测到少量的测试数据与异常默认阈值。您可以指定一个不同的阈值使用ScoreThreshold
名称-值参数。例如,看到的指定异常分数阈值。
更多关于
与世隔绝的森林
隔离森林算法[1]孤立异常检测异常的使用一个正常点的孤立树。
的iforest
函数创建一个隔离森林模型(合奏的孤立树)训练观察和检测异常值(训练数据中的异常)。每个孤立树是训练的一个子集训练观察如下:
iforest
吸引不重复样本训练观察的每棵树。iforest
成长树通过选择分离变量和随机分割位置一致。一直持续到每个样本函数达到一个单独的每棵树的叶子节点。
该算法假设数据只有少数异常和他们不同于正常点。因此,异常达到另一个叶子节点靠近根节点和有一个短的路径长度(从根节点到叶子节点的距离)比正常点。的iforest
函数识别异常值使用异常分数定义基于平均路径长度超过所有孤立树。
的isanomaly
函数使用一个训练有素的隔离森林模型来检测异常数据。新奇检测(检测异常在新数据与未被污染的训练数据),你可以训练一个隔离森林模型与未被污染的训练数据(数据没有异常值),用它来检测异常的新数据。对于每一个新数据的观察,发现功能对应的每棵树的叶子节点,发现平均路径长度达到一个根节点的叶子节点隔离森林训练模型,并返回一个异常指标和评分。
更多细节,请参阅异常检测与隔离森林。
异常分数
隔离森林算法计算异常分数年代(x)的观察x通过规范化路径长度h(x):
在哪里E(h(x)]平均路径长度超过所有孤立树隔离森林,然后呢c(n)成功搜索的平均路径长度在一个二叉搜索树的n观察。
比分接近1E(h(x)]接近0。因此,一个分数值接近1显示异常。
比分接近0E(h(x)]方法n- 1。同时,比分接近0.5时E(h(x)]方法c(n)。因此,一个分数值小于0.5,接近0表示正常点。
提示
您可以使用可解释性特性,比如
石灰
,沙普利
,partialDependence
,plotPartialDependence
,解释如何预测导致的异常分数。定义一个自定义函数,它返回异常分数,然后通过自定义函数的可解释性的功能。例如,看到的指定模型使用函数处理。
引用
[1],f . T。,K. M. Ting, and Z. Zhou. "Isolation Forest,"2008第八届IEEE国际会议数据挖掘。比萨,意大利,2008年,页413 - 422。
版本历史
介绍了R2021b
Beispiel offnen
您有一张这本Beispiels geanderte版本。您这本Beispiel麻省理工学院古老Anderungen offnen吗?
MATLAB-Befehl
您有窗户的链接geklickt,汪汪汪der diesem MATLAB-Befehl entspricht:
在das MATLAB-Befehlsfenster Fuhren您窝Befehl军队Eingabe来自。浏览器unterstutzen MATLAB-Befehle。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。