iforest异常检测

iForest是一种基于统计的异常检测算法,具有对特征尺度和相关性不敏感的优点,但存在随机性导致的理解困难。文章介绍了模型原理,包括其优缺点,并详细解析了训练过程和异常score分数的计算方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模型原理

iforest模型优缺点

  • 优点:

    • 基于统计的异常检测中,iforest还是很好用的,而且异常检测结果有一定的可解释性。
    • 对特征的scale和特征之间的相关性不敏感
    • 算法具有线性的时间和空间复杂度
  • 缺点:

    • 识别“少而不同”的点为孤立异常点,“少而不同”靠特征反映(特征很重要),对时序性的异常,即有时序趋势的异常模式,就不能直接用了;但如果是时间序列的其他异常,也是可以的,比如断崖式异常,单点值异常,趋势异常。如下图。
      Screenshot from 2021-09-23 15-42-09
      Screenshot from 2021-09-23 15-41-15
      Screenshot from 2021-09-23 15-39-45

    • 算法中有很有random,random选特征,random选特征切分点,影响对算法的理解

模型实现

训练:长树的过程

Screenshot from 2021-09-03 17-18-56

如上
输入: X  # shape=(n * m), n个样本,m维特征空间
     t  # number of trees # 论文提到,t=100(默认)的时候,模型就可收敛
     sub_size  # 论文中提到,算法喜欢小样本空间(默认128),即默认sample 128个样本,然后长一棵树
               # 样本空间增大,对算法性能没有提升(不理解);
输出: ensemble trees  # 长好的树

Screenshot from 2021-09-03 17-25-29

树停止生长的条件:
    (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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值