孤立森林的使用场景和效果
- 只根据isolation的概念,不用密度,距离等衡量标准。
- 由于下采样subsampling,只需要线性时间复杂度,空间复杂度也不高。
- 比one class svm,ORCA, LOF(以AUC为标准) 效果好
- iForest是two-staged方法,训练和验证 train and evaluate
Reference:
基本理念
- 异常点一般来说是稀疏的
- 使用k-d树类似的
空间切分
方式。每次
选择一个维度
,切分空间,分成左右子空间,递归切分至只空间只
有一个点或者每个点值
都一样。 - 完全二叉树
- 如下图假如
x
0
x_0
x0是异常值,
x
i
x_i
xi是正常值,可以判断, 异常值的切分次数少,也就是异常点到根节点的深度普遍小于正常值的深度。
具体怎么分空间??
- 一个森林很多树
- 每一颗树,都是随机放回抽样抽取的sampling size ϕ \phi ϕ大小的数据集,也意味着这棵树生长完全的情况下,是有着 ϕ \phi ϕ数目的叶子节点
- 每次切分变量是随机选择 subsample的数据集的某特征q,随机选取某个值p进行切分
- 直到叶子结点只有一个点或者所有点都是一个值
- 最后生成t棵树,以上是训练过程。
1训练算法
2还有evaluate呢?
借助BST结构操作iForest
它综合考虑了所有子树的期望高度,然后带入指数函数,最后得到一个异常分数。
越接近1,表示越可能是异常值!
异常分 vs. 期望路径长度