孤立森林的简要记录

20200920 -

0. 引言

在之前的时候,进行一些任务分类的时候,使用过孤立森林来实现一些代码,但是也没有具体来深究原理,只知道这个跟随机森林有些像,都是决策树的一种集成方式,最近正好看到了这部分内容,就正好记录一下,本部分内容主要是有文章[1]中阅读后记录。

1. 孤立森林的理论背景

1.1 孤立森林是什么

  • 孤立森林可以用于异常点检测
  • 孤立森林是一种无监督学习方法
  • 孤立森林是一种集成学习方法

1.2 孤立森林所使用的假设

  • 异常点在整个实例中的数量上占比比较小
  • 他们的某些属性与正常点有差别

以上的说法,透露出来的一个意思就是,异常是少量的,同时也是带有不同属性的

思考:那么这个比例,是不是可以通过参数进行控制,这个控制的过程是什么样子?但是这个比例是自己设置嘛?还是怎么样?还有,如果我的数据集中没有异常呢,他也会强行把这个东西给列举出来吗?

1.3 孤立森林的简单描述

孤立森林是很多个二叉树的集成算法,而异常点相对于正常点来说,他们的点在树上的路径会更短,或者说是最短的。
那么整体的算法就是这个样子:构造一个树,然后通过集成算法构造一个森林,然后度量每个点在每个树中距离,最后决定这个点是不是异常。

2. 代码设计

前文中已经说明了,孤立森林主要是三个部分:
1)构造一个隔离树
2)利用集成算法构造一个森林
3)度量每个点在每个树上的距离,最后得出一个类似异常分数的数值,最后分析出来是不是异常点

那么具体代码我就不粘贴了,直接去原文看就好了,下面简单说一下一些细节。

2.1. 构造隔离树

构造过程中,分割属性是随机选取的;而属性的分割点也是随机生成的(random),他提供的代码是仅仅适用于数值类型的。

2.2. 构造隔离森林

直接根据树的个数进行构造。

2.3. 测量路径

直接将所有的实例点都带入到隔离森林中;他这部分代码提供的方式是所有的树的路径然后取平均。当然也有其他的方法来测试。


3. 思考

在前面的说法中,我一开始以为可以填充异常的比例(因为我之前的时候实验好像就是这么实验,不过我也记不清了,不知道是不是sklearn中的实现是可以实现的,这个后续可以进行考究。)
我的想法就是,是不是数据集中一定要有异常呢?但是我实现也不知道比例,他们应该是怎么知道的呢?这个很关键,他怎么把控这个输出的比例呢?

参考

[1]Isolation Forest from Scratch

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值