iForest (Isolation Forest)是由Liu et al. [1] 提出来的基于二叉树的ensemble异常检测算法,具有效果好、训练快(线性复杂度)等特点。
1. 前言
iForest为聚类算法,不需要标记数据训练。首先给出几个定义:
划分(partition)指样本空间一分为二,相当于决策树中节点分裂;
isolation指将某个样本点与其他样本点区分开。
iForest的基本思想非常简单:完成异常点的isolation所需的划分数大于正常样本点(非异常)。如下图所示:
xi 样本点的isolation需要大概12次划分,而异常点x0指需要4次左右。因此,我们可以根据划分次数来区分是否为异常点。但是,如何建模呢?我们容易想到:划分对应于决策树中节点分裂,那么划分次数即为从决策树的根节点到叶子节点所经历的边数,称之为路径长度(path length)。假设样本集合共有n个样本点,对于二叉查找树(Binary Search Tree, BST),则查找失败的平均路径长度为
其中,H(i)为harmonic number,可估计为ln(i)+0.5772156649。那么,可建模anomaly score:
其中,h(x)为样本点x的路径长度,E(h(x))为iForest的多棵树中样本点x的路径长度的期望。特别地,
当s值越高(接近于1),则表明该点越可能为异常点。若所有的样本点的s值都在0.5左右,则说明该样本集合没有异常点。
2. 详解
iForest采用二叉决策树来划分样本空间,每一次划分都是随机选取一个属性值来做,具体流程如下:
停止分裂条件:
树达到了最大高度;
落在孩子节点的样本数只有一个,或者所有样本点的值均相同;
为了避免错检(swamping)与漏检(masking),在训练每棵树的时候,为了更好地区分,不会拿全量样本,而会sub-sampling样本集合。iForest的训练流程如下:
sklearn给出了iForest与其他异常检测算法的比较。
-
检测算法
+关注
关注
0文章
119浏览量
25266 -
二叉树
+关注
关注
0文章
74浏览量
12396
原文标题:异常检测算法:Isolation Forest
文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
二叉树算法在单总线技术中的应用
基于二叉树分解的自适应防碰撞算法
基于二叉树的时序电路测试序列设计
![基于<b class='flag-5'>二叉树</b>的时序电路测试序列设计](https://file.elecfans.com/web2/M00/49/61/pYYBAGKhtEqAYbJ1AAAUAGheIIE265.jpg)
二叉树层次遍历算法的验证
![<b class='flag-5'>二叉树</b>层次遍历<b class='flag-5'>算法</b>的验证](https://file1.elecfans.com//web2/M00/A6/F8/wKgZomUMQYuACG4BAAD6E6w3nWA722.png)
二叉树操作的相关知识和代码详解
![<b class='flag-5'>二叉树</b>操作的相关知识和代码详解](https://file.elecfans.com/web1/M00/D3/8A/o4YBAF_UNdWAKbdOAABCZo07G7k600.png)
评论