孤立森林算法简介

前言

现有的异常检测方法主要是通过对正常样本的描述,给出一个正常样本在特征空间中的区域,对于不在这个区域中的样本,视为异常。这些方法的主要缺点是,异常检测器只会对正常样本的描述做优化,而不会对异常样本的描述做优化,这样就有可能造成大量的误报,或者只检测到少量的异常。

异常具有两个特点:异常数据只占很少量,异常数据特征值和正常数据差别很大。而孤立森林不再是描述正常的样本点,而是孤立异常点

在孤立森林中,异常被定义为“容易被孤立的离群点 (more likely to be separated)”,可以将其理解为分布稀疏且离密度高的群体较远的点。 在特征空间里,分布稀疏的区域表示事件发生在该区域的概率很低,因而可以认为落在这些区域里的数据是异常的。

孤立森林是一种适用于连续数据无监督异常检测方法。在孤立森林中,递归地随机分割数据集,直到所有的样本点都是孤立的。在这种随机分割的策略下,异常点通常具有较短的路径。

直观上来讲,那些密度很高的簇是需要被切很多次才能被孤立,但是那些密度很低的点很容易就可以被孤立。

如下图:

X需要多次的分割才能被孤立,而 Xo 需要较少的分割次数就能被孤立。因此 X为正常点,Xo 为异常点。

分割方式采用的是,随机选择一个特征以及拆分的值(这个值位于该特征的最小值和最大值之间)。

isolation tree (iTree)

定义:假设 T 是孤立树的一个节点,它要么是没有子节点的叶子节点,要么是只有两个子节点 (Tl,Tr) 的内部节点。

每一步分割,都包含特征 q 和分割值 p,将 q < p 的数据分到Tl,将 q ≥ p 的数据分到Tr。

给定 n 个样本数据 X = {x1,⋯,xn},特征的维度为 d。为了构建一棵孤立树,需要随机选择一个特征 q 及其分割值 p,递归地分割数据集 X

直到满足以下任意一个条件:(1) 树达到了限制的高度;(2) 节点上只有一个样本;(3) 节点上的样本所有特征都相同。

异常检测的任务是给出一个反应异常程度的排序,常用的排序方法是根据样本点的路径长度或异常得分来排序,异常点就是排在最前面的那些点。

Path Length(路径长度)

定义: 样本点 的路径长度 h(x) 为从 iTree 的根节点到叶子节点所经过的边的数量。

Anomaly Score(异常得分)

给定一个包含 个样本的数据集,树的平均路径长度为:

                                                                           

其中 H(i) 为调和数,该值可以被估计为 ln(i) + 0.5772156649。c(n) 为给定样本数 n 时,路径长度的平均值,用来标准化样本 x 的路径长度 h(x)。

样本 的异常得分定义为

                                                                         

其中,E(h(x)) 为样本 x 在一批孤立树中的路径长度的期望。下图给出了 s 和 E(h(x)) 的关系。

由上图可以得到一些结论:

当 E(h(x))→c(n) 时,s→0.5,即样本 x 的路径平均长度与树的平均路径长度相近时,则不能区分是不是异常。

当 E(h(x))→0 时,s→1,即 x 的异常分数接近1时,被判定为异常。

当 E(h(x))→n−1 时,s→0,被判定为正常。

参考链接:https://blog.csdn.net/extremebingo/article/details/80108247

猜你喜欢

转载自www.cnblogs.com/yytest/p/12708948.html
今日推荐