Isolation Forest孤立森林(一)

孤立森林论文地址 http://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/icdm08b.pdf

概要   

  现有的基于模型的异常检测方法大多是构造一个正常实例的概要文件,然后将不符合标准的实例作为异常文件进行认证。本文提出了一种完全不同的基于模型的方法,该方法明确地分离了异常。实证评价表明,在AUC和处理时间方面,特别是在大数据集方面,经验评估显示iForest对ORCA很有利(一种基于时间复杂度距离的近线性方法)、LOF和随机森林。iForest在具有大量不相关属性的高维问题以及训练集不包含任何异常的情况下也能很好地工作。

IForest算法伪代码

 

    Forest是利用随机森林思想,随机的选取样本构成多个iTree,算法首先构建IForest(X,t,),X为输入的数据,t为构建多少棵树,为采样个数,设置hight limit=设置为256效果最佳)这是因为异常数据记录都比较少,其路径长度也比较低,而我们也只需要把正常记录和异常记录区分开来,因此只需要关心低于平均高度的部分就好,这样算法效率更高。然后循环构建t棵iTree,将iTree变成森林返回。

以下图片是iTree的构建伪代码

iTree的构成过程如下:

   构建iTree(X',e,l)  其中X'为随机选取的个样本,e为当前样本的高度,l=

首先判断是否满足递归条件,如果e>=l或者X'<=1 返回 exNode(X.Size)

如果满足条件 取特征属性Q,在Q中最大值与最小值之间随机取一个值p,取Q中的值q

进行判断:  如果q<p,放在Xl (左节点) 

                        q>p,放在Xr(右节点)

 返回一个内部节点inNode(iTree(Xl,e+1,l),iTree(Xr,e+1,l),q,p)  =>构建成一个二叉树形结构

 

算法构建好后要进行预测

   要进行预测时要明白一个模型好坏的评判标准是什么,也就是输入进来样本怎么确定是否是异常样本。 这时候,我们可以利用样本在森林中的均值来表示样本的路径长度。

 

 

用公式来表达这个关系是 ,图像表示为

当E(h(X))=1时,p=0.5那么就意味着当,当离根节点路径为1时,才能被认为是异常点,这样做显然是不合理的。那么怎样做才能将指数进行归一化呢,因为iTree的外部节点终止条件与BST(二叉搜索树)的不成功搜索(Unsuccessful search)的结构相同,所以利用BST的分析来估计iTree的平均路径长度。

当具有n个实例二叉搜索树的外部节点的平均深度为 c(n) = 2H(n 1) (2(n  1)/n)

异常评分公式就变成

这样的话当  E(h(x))->0时  S=1           

                    E(h(x))->c(n)   S=0.5     

                    E(h(x))->n-1  S=0            

 E(h(x))表示记录x在每棵树的高度均值,另外h(x)计算需要改进,在生成叶节点时,算法记录了叶节点包含的记录数量,这时候要用这个数量Size估计一下平均高度,h(x)的计算方法如下:

PathLength(x,T,e) 进行匹配如果是外部节点 当前路径长度e+c(数据经过训练后到达叶子节点后数据集合的长度) , 如果是内部节点,当前实例的索引数据<(内部节点的最大最小中的随机值) return  PathLength(x,T.leftchild,e+1) 否则 return  PathLength(x,T.rightchild,e+1)

 

Isolation Forest特点

   与现有的方法不同,大样本容量更理想,隔离方法在取样规模小的时候是最好的。大的采样量会降低iForest隔离异常的能力,因为正常的实例会干扰隔离过程,因此会降低iForest清晰隔离异常的能力。由于iForest不需要隔离所有的正常实例——大部分的训练样本,iForest能够很好地与部分模型一起工作,而不需要隔离所有的正常点,并使用较小的样本容量构建模型。

在异常检测中,研究了淹没(swamping)和掩蔽(masking)的问题。

swamping:指的是将正常实例识别为异常,当正常样本很靠近异常样本,隔离异常时需要的拆分次数会增加,使得从正常样本中区分出异常样本更加困难。

masking:太多异常点隐藏了他们的本来面目,当异常簇比较大,并且比较密集,同时需要更多拆分才能将他们隔离出来,异常难以孤立。

导致swamping和masking发生的原因是因为样本数量太大,当使用整个样本时,iForest报告的AUC为0.67。当使用128的子采样大小时,iForest的AUC达到0.91。结果表明,iForest具有较强的异常检测能力,能够通过显著减小的子样本处理沼泽效应和掩蔽效应。

 

 

 

总结:

iForest不适用于特别高维的数据。由于每次切数据空间都是随机选取一个维度,建完树后仍然有大量的维度信息没有被使用,导致算法可靠性降低。高维空间还可能存在大量噪音维度或无关维度(irrelevant attributes),影响树的构建。对这类数据,建议使用子空间异常检测(Subspace Anomaly Detection)技术。此外,切割平面默认是axis-parallel的,也可以随机生成各种角度的切割平面,详见“On Detecting Clustered Anomalies Using SCiForest”。

iForest仅对Global Anomaly 敏感,即全局稀疏点敏感,不擅长处理局部的相对稀疏点 (Local Anomaly)。目前已有改进方法发表于PAKDD,详见“Improving iForest with Relative Mass”。

                                              

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值