Isolation Forest 孤立森林

Isolation Forest 孤立森林

  从今天开始打算在CSDN博客上做笔记.希望有兴趣的可以一起讨论.现在主要做的和弱监督和无监督有关.今天读的是Isolation Forest这个文章.这是一篇有关异常检测,或者又称离群点检测的方法,在工业界很流行.我把里面对自己有用的部分结合自己的理解后摘录下来.为了给自己一些压力,我决定在今天将这个博客更完.

ITree

   Isolation(孤立)是指将每个样本都和其他样本分开.这里假设异常点具有”少而不同”的特性,因而更容易被孤立.这里建立的ITree树是一种二分树,其建立过程如下图所示:

   用自然语言描述下就是输入训练数据集XX,ee为当前的树高,ll为树的高度限制.首先将XX 放在根节点中,随机选择XX中的一个维度qq,并在qq上的最大值和最小值之间随机选择一个值pp,将XX中在qq上比pp大的样本流向右子节点中,比pp小的样本流向左子节点.然后重复上述步骤直到:1.每个子节点中都只有一个样本或者多个相同的样本,即每个样本都被孤立了;或2.树的高度达到ll .
如下图所示,当采用上述方法建立ITree的时候,异常点xox_{o}更容易被孤立,因此其被孤立时所在的子节点的路径长度也较短,即从根节点到xox_{o}所在子节点所经历过的边数.而正常点xix_{i}1不容易被孤立,因此其路径长度也较长.
   

   下图展示了,正常点和异常点随着ITree数量的增加其路径长度的变化趋势.可以看出正常点的路径长度大于异常值.
   
   这里树高ll取多少合适呢?假设XX中有n个样本,则n个样本组成的搜索二分树的平均树高为ceiling(log2n)ceiling(log_{2}n)。我们已知异常点的平均路径比较短,所以可以想到如果树增长到平均树高,如果XX中每个点还没孤立完,那么这些没孤立完的样本基本上不可能是异常点了,所以这里讲ll设置为平均树高。

IForest

   如何建立深林呢?
   IForest 实际上就是很多的ITree组成的.那这些ITree是怎么建立的呢?这里面采用的是对XX多次采样,得到众多子数据集,然后根据每个子数据集来建立一个ITree.这样的好处是什么呢?首先是当XX的规模比较大时,很容易出现正常点和异常点混在一起的情况,而采样可以一定程度上抑制这种情况.如图所示:
   
   这里红色的是异常点,蓝色的是正常点.IForest采用的是不放回抽样.那么要建立几棵树,以及每次采样多少次呢?给出的结论是是建立100棵树,每次采样256次,就够了,这是根据大量实验得出的结果.

   下一个问题是如何根据建立的孤立森林来估计XX中每个点的异常程度呢?
我们知道异常点的路径比较短,正常点的路径比较长,因此我们首先统计森林里所有树上待判断点xx的平均路径,记为E(h(x))E(h(x)),E()E()表示平均的意思,h(x)h(x)表示xx的路径长度,是从根节点到xx被孤立的节点经过的边的总数。然后呢,假设XX中有nn个点,那这nn个点如果用一个二分树来搜索,平均搜索不成功的路径就等于这nn个点的平均路径长度c(n)=2H(n−1)−(2(n−1)/n)c(n)=2H(n-1)-(2(n-1)/n)。所以用c(n)c(n)来归一化E(h(x))E(h(x))。那么这里存在一个疑问,为什么用c(n)c(n)来归一化,而不是这么多树真实的,每个点的平均路径长度来归一化呢?难道是为了节省计算力?不知道有没有小伙伴明白?请赐教。
   异常程度便可表示为:
                s(x,n)=2−E(h(x))c(n)s(x,n)=2^{ \frac{-E(h(x))}{c(n)}}
可以看出当其趋于0.5时,表示很可能是正常值,当其趋于1时,很可能是异常值。这里意思是如果某个点的平均路径和n个点(数据集中的点数)的平均路径趋于相同,则不太可能是异常点,只有当其大大小于n个点的平均路径时,才可能是异常值。
   至此对X<script type="math/tex" id="MathJax-Element-8136">X</script>中的样本进行异常成都估计的步骤就已经讲完。

Isolation Forest 孤立森林相关推荐

  1. 【R文档】1 isolation.forest/孤立森林算法

    [未完待续--] 目录 1.辅助信息 2.孤立森林原理 3.基本描述 4.句法 5.案例 案例1:检测一个明显的离群值 1.辅助信息 包名称:isotree​ 包的版本:0.5.14 网址:英文R文档 ...

  2. Isolation Forest孤立森林(一)

    孤立森林论文地址 http://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/icdm08b.pdf 概要    现有的基于模型的异常检测方法大多是构造一 ...

  3. 孤立森林算法matlab实现,隔离林在MATLAB和python中的简单应用,isolationforest,上

    1 问题描述 数据中的异常值的检测 异常点,也称为离群点.离群点检测算法主要看到了isolation forest算法和local outlier factor(LOF)算法. LOF算法的具体原理在 ...

  4. 孤立森林算法 python_孤立森林(isolation forest)

    1.简介 孤立森林(Isolation Forest)是另外一种高效的异常检测算法,它和随机森林类似,但每次选择划分属性和划分点(值)时都是随机的,而不是根据信息增益或者基尼指数来选择. 在建树过程中 ...

  5. Isolation Forest算法原理详解

    本文只介绍原论文中的 Isolation Forest 孤立点检测算法的原理,实际的代码实现详解请参照我的另一篇博客:Isolation Forest算法实现详解. 或者读者可以到我的GitHub上去 ...

  6. 异常检测概念、异常检测的思路、孤立森林Isolation Forest、​​​​​​​局部异常因子LOF、OneClassSVM、EllipticEnvelop

    异常检测概念.异常检测的思路.孤立森林Isolation Forest.局部异常因子LOF.OneClassSVM.EllipticEnvelop 目录

  7. 孤立森林(Isolation Forest)算法剖析

    之后会持续更新算法剖析系列,力图用最生动的例子演示每一个算法的原理,不稀里糊涂做一个调包侠.欢迎持续关注,指正不足. 孤立森林(Isolation Forest)算法是西瓜书作者周志华老师的团队研究开 ...

  8. 孤立森林(Isolation Forest)

    iForest (Isolation Forest)孤立森林 是一个基于Ensemble的快速异常检测方法,具有线性时间复杂度和高精准度,是符合大数据处理要求的state-of-the-art算法(详 ...

  9. 孤立随机森林(Isolation Forest)(Python实现)

    目录 1 简介 2 孤立随机森林算法 2.1 算法概述 2.2 原理介绍 2.3 算法步骤 3 参数讲解 4 Python代码实现  5 结果  1 简介 孤立森林(isolation Forest) ...

最新文章

  1. mobaxterm最多10个链接_短袖、纱裙、泳衣…百元左右夏季童装,我回购最多的10个品牌...
  2. 三层学习------实践篇
  3. java 静态分派_Java中的静态分派与动态分派
  4. Android之自定义view引用xml,Android自定义View在XML中映射错误
  5. 服务程序增加系统托盘
  6. Linux内核(1)--从开机到main函数
  7. 关于举办2017年暑期全国高校教师 “Python编程及应用”培训班通知
  8. Roboware (ROS IDE)字体设置
  9. HTML 使用字体图标 引入图标
  10. 考勤系统 服务器管理,zktime5.0考勤管理系统
  11. 浪曦_Struts2应用开发系列_第1讲.Struts2入门与配置--出现的问题笔记
  12. 高效液相色谱分析的基本原理
  13. 微信小程序后端用python_Python开发微信小程序后端开发小坑
  14. java毫秒_JAVA中怎么获取毫秒和微秒数
  15. 父传子 子传父以及兄弟之间传值
  16. C51单片机的电子时钟(数码管显示)
  17. matlab 变分不等式,求解变分不等式的matlab程序
  18. 2021年美赛解题思路汇总Final!!!
  19. 计算机中f4的应用,Excel中F4键的9个功能,提高90%工作效率
  20. R语言ggplot2可视化:使用patchwork包的plot_layout函数将多个可视化图像组合起来,ncol参数指定行的个数、byrow参数指定按照行顺序排布图

热门文章

  1. matlab求离散系统,离散系统的MATLAB的实现.doc
  2. ScePT: 为规划的场景一致和基于策略轨迹预测
  3. 一沉担千斤,一默解万愁
  4. 计算机网络(七) | 应用层:HTTPS协议
  5. 安全专家在多家厂商的SOHO路由器和NAS设备中发现了125个新漏洞
  6. 美国知名科技公司入门级软件工程师的薪水排名
  7. webmail lite php,WebMail Lite - 从Gmail,Yahoo,Outlook和其他管理和下载邮件
  8. 读书:每天做一个情绪稳定的成年人!
  9. Mean-Shift算法
  10. 运行多个mysql service_同时运行多个MySQL服务器的方法