本文介绍了一种基于树集成的异常检测方法,其核心思想是“异常点是容易被孤立的离群点”。首先介绍了孤立森林算法的设计思路。然后介绍了孤立森林算法的特点和适用场景。最后给出了sklearn中孤立森林算法的几个重要参数。
作者 | 文杰
编辑 | yuquanle
孤立森林(Isolation Foreset)是基于树(iTree)集成的快速异常检测方法,其异常检测的核心思想是“异常点是容易被孤立的离群点”。
因此,孤立森林采用随机特征随机阈值划分生成多个树,直到树到达一定的高度或者直到每个叶子节点中只有一个点。
那么,那些离群点很容易被提前(即所在叶子节点的深度较浅)被划分出来。由于每个树都是由随机采样独立生成的,所以树之间具有一定的独立性,多个树的集成就是最终的孤立森林。
可以看出,按照离群点大概率为异常点的话,那么d最有可能为异常点。
1)从训练集中随机选择(有放回和无放回)个样本点构成子集,在个子集上构建树;
2)随机选择一个特征,随机选择一个阈值(最大值与最小值之间)进行二分裂;
3)递归2)建树,直到树到达一定的高度或者每个叶子节点中只有一个点;
4)个树建好,根据个决策树的平均深度来定义其异常的概率:
a)统计每棵树的BST路径长度定义:
b)定义异常的概率为:
是在给定下的平均值, 其中的可以通过公式 来估计,是欧拉常数,其值为0.5772156649,为从根节点到叶子节点的路径长度。
5)计算异常概率:
a)当,
b)当,
c)当,
从上面建树的过程,可以看出孤立森林是针对连续值属性的,二分裂二叉树,当然离散值属性我想也是可以的。
sklearn中孤立森林的参数设置:
The End