IForest简介

      异常值分析是检验数据是否有录入错误以及含有不合常理的数据的过程,忽视异常值的存在是十分危险的,不加剔除地把异常值包括进数据的计算分析过程中,对结果会产生不良影响,重视异常值的出现,分析其产生的原因,常常成为发现问题进而改进决策的契机。之前介绍过利用高斯分布进行异常值检测,今天我们来学习另外一种非常有用的IForest算法。


1. IForest思想简介


       IForest属于Non-parametric和unsupervised的方法,即不用定义数学模型也不需要有标记的训练。对于如何查找哪些点是否容易被孤立(isolated),iForest使用了一套非常高效的策略。假设我们用一个随机超平面来切割(split)数据空间(data space), 切一次可以生成两个子空间(想象拿刀切蛋糕一分为二)。之后我们再继续用一个随机超平面来切割每个子空间,循环下去,直到每子空间里面只有一个数据点为止。直观上来讲,我们可以发现那些密度很高的簇是可以被切很多次才会停止切割,但是那些密度很低的点很容易很早的就停到一个子空间了。


2. IForest算法步骤


      IForest 由t个iTree(Isolation Tree)孤立树组成,每个iTree是一个二叉树结构,其实现步骤如下:
     (1) 从训练数据中随机选择若干个样本点作为subsample,放入树的根节点;

     (2) 随机选择一个特征作为新节点,在当前特征数据中随机产生一个切割点p——切割点产生于当前节点数据中指定维度的最大值和最小值之间;

     (3) 以此切割点生成了一个超平面,然后将当前节点数据空间划分为2个子空间:把指定维度里小于p的数据放在当前节点的左孩子,把大于等于p的数据放在当前节点的右孩子;

     (4) 在孩子节点中递归步骤(2)和(3),不断构造新的孩子节点,直到孩子节点中只有一条数据(无法再继续切割) 或 孩子节点已到达树的限定高度 。

       获得t个iTree之后,iForest 训练就结束,然后我们可以用生成的iForest来评估测试数据了。对于一个训练数据x,我们令其遍历每一棵iTree,然后计算x最终落在每个树第几层(x在树的高度),最后我们可以得出x在每棵树的高度平均值h(x)。此时我们用下面的公式计算样本点x的异常概率:



参考资料:

1. iForest (Isolation Forest)孤立森林 异常检测 入门篇

2. Isolation Forest




猜你喜欢

转载自blog.csdn.net/jingyi130705008/article/details/79199319