Isolation Forest

IsolationForest是一种用于异常检测的高效算法。它通过构建多棵二叉树(iTree)来隔离异常点,异常点通常需要较少的分割即可被隔离。本文详细介绍了IsolationForest的原理,包括训练过程和预测方法,以及如何计算数据点的异常分值。

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

什么是Isolation Forest?

Isolation Forest的思路很简单。假设我们的数据集合是一维空间下的点

我们通过切分的方式可以很方便的将异常点B点切分出来。

如何定义方便?

切分的次数

那这个思路对于正常点点A来说也可以取,可以看到如果要把A隔离出来我要切很多遍。

 

Isolation Forest算法

1.训练:抽取多个样本,构建多棵二叉树(isolation tree,即iTree);

2.预测:综合多棵二叉树的结果,计算每个数据点的异常分值

 

训练

构建一棵iTree时,先从全量数据中抽取一批样本,然后随机选择一个特征作为起始节点,并为该特征的最大值和最小值之间随机选择一个值,将样本中小于该取值的数据划到左分支,大于等于该取值的划到右分支。然后,在左右两个分支数据中,重复上述步骤,直道满足如下条件:

1.数据不可再分,即:只包含一条数据,或者全部数据相同。

2.二叉树达到限定的最大深度

 

预测

计算数据x的异常分值时,先要估算它在每棵iTree中的路径长度(也可以叫深度)。具体的,先沿着一棵iTree,从根节点开始按不同特征的取值从上往下,直到达到某叶子节点。假设iTree的训练样本中同样落在x所在叶子节点的样本数为T.size,则数据x在这棵iTree上的路径长度h(x),可以用下面这个公式计算:

公式中,e表示数据x从iTree的根节点到叶结点过程中经过的边的数目,C(T.size)可以认为是一个修正值,它表示在一棵用T.size条样本数据构建的二叉树的平均路径长度。一般的,C(n)的计算公式如下:

 

其中,H(n-1)可用ln(n-1)+0.5772156649估算,这里的常数是欧拉常数。数据x最终的异常分值Score(x)综合了多棵iTree的结果:

 

从异常分值的公式看,如果数据x在多棵iTree中的平均路径长度越短,得分越接近1表明数据x越异常;如果数据x在多棵iTree中的平均路径长度越长,得分越接近0,表示数据x越正常;如果数据x在多棵iTree中的平均路径长度接近整体均值,则打分会在0.5附近

 

总结

其实这个很好理解,就看score函数2的指数部分,是一个分数形式,分子是数据x的在树中的平均长度,分母是树的平均长度。所以假设这个点是异常点,则整体的分数值应该是小于1的,而且是趋近于0。然后呢前面这个负号很有说法。等于说,越异常的点,带负号分数值就越大越趋近于0。所以1为数据x越异常。

 

参考

机器学习-异常检测算法(1):https://zhuanlan.zhihu.com/p/27777266

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值