先说重点
1、孤立森林是一种适用于连续数据的无监督异常检测方法
2、孤立森林,不再是描述正常的样本点(给出一个正常样本在特征空间中的区域,对于不在这个区域中的样本,视为异常),而是要孤立异常点。
3、根据‘高密度的簇是需要被切很多次才能被孤立,低密度的点被切分较少次就可以被孤立’的原理,最终算法比较路径长度的平均值即可捕获异常点。
4、对小数据集能取得更好的效果。样本数较多会降低孤立森林孤立异常点的能力,从而出现典型的swamping和masking问题。
细说原理
异常的两个特点:异常数据只占很少量、异常数据特征值和正常数据差别很大。
孤立森林机制是近似随机森林的。下图直观地看出,正常点通常是密度很高的簇,需要被切很多次才能被孤立,但是那些密度很低的点很容易就可以被孤立。由于数的切割点是随机生成的,且直到树的孩子节点中只有一个数据(无法再继续切割) 或 孩子节点已到达限定高度时停止。故需计算各点的平均路径长度作为衡量标准。如右图看到异常点的平均路径长度小于正常点的路径长度。
isolation tree (iTree)
定义:假设TT是孤立树的一个节点,它要么是没有子节点的叶子节点,要么是只有两个子节点(Tl,Tr)的内部节点。每一步分割,都包含特征q和分割值p,将q<p的数据分到Tl,将q≥p的数据分到Tr。给定n个样本数据X={x1,⋯,xn},特征的维度为d。为了构建一棵孤立树,需要随机选择一个特征qq及其分割值p,递归地分割数据集X,直到满足以下任意一个条件:(1)树达到了限制的高度;(2)节点上只有一个样本;(3)节点上的样本所有特征都相同。
异常检测的任务是给出一个反应异常程度的排序,常用的排序方法是根据样本点的路径长度或异常得分来排序,异常点就是排在最前面的那些点。
Path Length
定义: 样本点xx的路径长度h(x)h(x)为从iTree的根节点到叶子节点所经过的边的数量。
Anomaly Score
给定一个包含nn个样本的数据集,树的平均路径长度为 c(n)=2H(n−1)−2(n−1)/n
其中H(i)为调和数,该值可以被估计为ln(i)+0.5772156649。c(n)为给定样本数nn时,路径长度的平均值,用来标准化样本x的路径长度h(x)。
其中,E(h(x))为样本x在一批孤立树中的路径长度的期望。下图给出了s和E(h(x))的关系。
由上图可以得到一些结论:
当E(h(x))→c(n)时,s→0.5,即样本xx的路径平均长度与树的平均路径长度相近时,则不能区分是不是异常。
当E(h(x))→0时,s→1,即xx的异常分数接近1时,被判定为异常。
当E(h(x))→n−1时,s→0,被判定为正常。
鸣谢 https://blog.csdn.net/extremebingo/article/details/80108247