模型原理
iforest模型优缺点
-
优点:
- 基于统计的异常检测中,iforest还是很好用的,而且异常检测结果有一定的可解释性。
- 对特征的scale和特征之间的相关性不敏感
- 算法具有线性的时间和空间复杂度
-
缺点:
-
识别“少而不同”的点为孤立异常点,“少而不同”靠特征反映(特征很重要),对时序性的异常,即有时序趋势的异常模式,就不能直接用了;但如果是时间序列的其他异常,也是可以的,比如断崖式异常,单点值异常,趋势异常。如下图。
-
算法中有很有random,random选特征,random选特征切分点,影响对算法的理解
-
模型实现
训练:长树的过程
如上
输入: X # shape=(n * m), n个样本,m维特征空间
t # number of trees # 论文提到,t=100(默认)的时候,模型就可收敛
sub_size # 论文中提到,算法喜欢小样本空间(默认128),即默认sample 128个样本,然后长一棵树
# 样本空间增大,对算法性能没有提升(不理解);
输出: ensemble trees # 长好的树
树停止生长的条件:
(1)树高超过限制(因为异常点,应该是很容易划分的点,异常点的平均路径应 < 平均树高, 所以,当树长高超过一定值的时候,就stop,论文里称为partial model)
(2) 叶子节点只有1个样本;
(3)叶子节点的feature values相同,不能再被划分
异常score分数的计算
1. 指标:平均划分路径
划分出当前实例所需要的划分次数:
s c o r e ( x ) = 2 − 平 均 树 高 ( x ) / c ( n ) (1) score(x) = 2^{-平均树高(x) / c(n)}\tag{1} score(x)=2−平均