孤立森林---1-算法初探

孤立森林(Isolation Forest)

先简单解释一下什么是孤立森林

为什么叫孤立?

“孤立”(isolation)指的是“把异常点从所有样本中孤立出来”

为什么叫森林?

孤立森林是由N个树构成的。

每棵树的的学习过程非常随机:它会随机抽取特征、随机选取分割值来建立决策树,从而将每一个样本分到一个独立的子节点上(取值相同的样本视为同一个样本)。这样我们就得到了N个(基本)不相同的树。

从超空间的角度看,这样就是不断地用随机选取的超平面切分样本点,直到所有的样本点都被这些超平面“孤立”起来,即与其他样本点分隔开了。

「假设我们用一个随机超平面来切割(split)数据空间(data space), 切一次可以生成两个子空间(想象拿刀切蛋糕一分为二)。

之后我们再继续用一个随机超平面来切割每个子空间,循环下去,直到每子空间里面只有一个数据点为止。直观上来讲,我们可以发现那些密度很高的簇是可以被切很多次才会停止切割,但是那些密度很低的点很容易很早的就停到一个子空间里了」

既然是森林,那么和随机森林一样,孤立森林由 iTree(isolation tree) 组成,iTree树和随机森林的决策树不太一样,构建过程只是一个完全随机的过程。下面详细解释一下构建过程:

  1. 现有数据集中有n条数据,先从这n条数据中抽取一批样本(一般是无放回抽样),假设样本个数 ψ \psi ψ
  2. 随机选择一个特征作为起始节点,并在该特征的值域里随机选择一个值,对个样本进行二叉划分,将样本中小于该取值的样本划到左分支,样本中大于该取值的划到右分支。
  3. 然后在左右两个分支重复这样的二叉划分操作。直到达到满足如下条件:

1.数据本身不可再分
2.二叉树达到限定的最大深度,树的最大深度在算法里面已经被限制了,一般只需要达到 l o g 2 ( ψ ) log_2(\psi) log2(ψ) 深度即可。

训练-测试过程

1. 单棵树的训练

  1. 单棵树的训练从训练数据中随机选择 Ψ 个点作为子样本,放入一棵孤立树的根节点;
  2. 随机指定一个维度,在当前节点数据范围内,随机产生一个切割点p——切割点产生于当前节点数据中指定维度的最大值与最小值之间;
  3. 此切割点的选取生成了一个超平面,将当前节点数据空间切分为2个子空间:把当前所选维度下小于p的点放在当前节点的左分支,把大于等于 p 的点放在当前节点的右分支;
  4. 在节点的左分支和右分支节点递归步骤2、3,不断构造新的叶子节点,直到叶子节点上只有一个数据(无法再继续切割)或树已经生长到了所设定的高度。(至于为什么要对树的高度做限制,后续会解释)

注意:在训练过程中,每棵孤立树都是随机选取部分样本

2. 整合全部孤立树的结果

由于切割过程是完全随机的,一棵树不够可信?

没事,记得随机森林random forest不?没错,这里也引进一堆树。如果多数的树都在前几次分割时分出同一个点,那么这个点是异常点的概率就非常高了。

所以需要用ensemble的方法来使结果收敛,即反复从头开始切,然后计算每次切分结果的平均值。(注意,从头开始切意味着,重新从训练数据中随机选择 ψ \psi ψ个点作为子样本)

获得 t 个孤立树后,单棵树的训练就结束了。接下来就可以用生成的孤立树来评估测试数据了,即计算异常分数s。

对于一个训练数据x,我们令其遍历每一棵iTree,然后计算x最终落在每个树第几层(x在树的高度)。然后我们可以得出x在每棵树的高度平均值。

最后通过下面的公式计算这个训练数据 x 的异常得分
s ( x , ψ ) = 2 − E ( h ( x ) ) c ( ψ ) s(x,\psi)=2^{-\frac{E(h(x))}{c(\psi)}} s(x,ψ)=2c(ψ)E(h(x))

  1. h ( x ) h(x) h(x)为 x 在每棵树的高度,
  1. c ( ψ ) c(\psi) c(ψ)为给定样本数Ψ时路径长度的平均值,用来对样本 x 的路径长度 h(x) 进行标准化处理。
  2. 如果异常得分接近 1,那么一定是异常点;
    如果异常得分远小于 0.5,那么一定不是异常点;
    如果异常得分所有点的得分都在 0.5左右,那么样本中很可能不存在异常点。

影响孤立森林效果的几个主要参数:

  1. 每棵树的训练样本数量
  2. 每棵树的高度
  3. 树的个数

训练一棵树的时候,从样本中随机抽取一定数量的样本——抽样的数量不宜过大,一般最大256个。研究表明,这个小样本集的容量超过256以后,模型的效果提升不大,有时候反而会降低模型的效果。当样本太多的时候,他们在高维空间中的分布会比较稠密,树会比较复杂,不利于离群点被区分出来。

参考

作者:大鱼
链接:https://zhuanlan.zhihu.com/p/74508141
来源:知乎

作者:桔了个仔
链接:https://www.zhihu.com/question/347847220/answer/836019446
来源:知乎

作者:YeZhu
链接:https://www.jianshu.com/p/5af3c66e0410
来源:简书

作者:李鹏宇
链接:https://zhuanlan.zhihu.com/p/30033618
来源:知乎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值