原文:Isolation Forest
对含有大量不相关属性的高维问题,孤立森林可使用新增的属性快速获得检测结果;而基于距离方法的检测效果不佳。即使在训练数据集没有异常数据,孤立森林依旧可良好工作。孤立森林是高效准确的异常检测器,特别是对大的数据集
iForest:对给定数据集,构建一个全集树,异常样本就是有最短路径的样本。
有两个参数,树的个数和采样大小。
孤立树孤立的特点使其能构建不完全的模型并利用其它模型不适用的欠采样。由于大部分孤立树孤立了正常点,异常检测就不必要了;小样本能产生更好的孤立树,淹没和遮挡效果都被减少了。
孤立森林不使用距离或密度检测取测试异常。这样减少了大部分的距离计算的花销。
孤立森林是线性时间复杂度,内存需求很低。
孤立森林有能力提高处理大量数据和高维度问题(属性不相关)
本文中孤立指从剩余的样本中区分出一个样本。由于异常是少量且不同的,因此异常更易于孤立。
为证明在随机划分情况下,异常点更易被孤立,下图中a,b 随机划分正常点和异常点可视化。
通过观察,正常点xi 更多的划分才能孤立,而异常点正相反,较少的划分即可孤立。
划分是随机选择属性,随机在选择的属性中最大和最小值中划分的。
T 为孤立树的节点,或是没有子节点的外部节点,或是有两个子节点的内部节点,同时还有一个测试,由属性 q 和划分值 p 组成。根据属性是否小于 q,将数据划入左右两个节点。
一个孤立树是二叉树,每个节点有0个或2个子节点。
假设每个样本都是不同的,最终每个样本都会被孤立在一个外部节点,此时,外部节点数量为 n ,内部几点数量为 n - 1;一颗孤立树的总节点数量为 2 * n + 1;内存需求是有限的,仅随着 n 线性增长。
异常检测任务提供了一个排序以反映异常的级别。一种方法是根据路径长度或异常分数排序数据;排在列表顶部的是异常点。
路径长度:点 x 在孤立树中从根节点到外部节点间的边数量。
一个异常分数是任何异常检测方法都需要的。
从 h(x) 中获得这样的分数的难点在于当孤立树最大可能高度按照 n 的顺序增长,而平均高度按照 log(n) 的顺序增长。任何通过上述期限正则化的 h(x) 都没有边界或不可直接比较。
因为孤立树有一个等价于二分搜索树结构或BST,均值h(x)对外部节点终端的估计等同于BST中的未成功搜索。
借用BST分析评估孤立树的平均路径长度。考虑到有一个 n 个样本的数据集。
BST中的未成功搜索平均路径长度:
H(i) 是调和数,可使用ln(i) + 0.5772156649(欧拉常数)估算。
给定 n 个样本,c(n) 是h(x) 的均值,使用 c(n) 标准化 h(x)。
一个样本 x 的异常分数: ;
n 个样本中的一个异常分数可用公式计算,E(h(x)) 是h(x) 的均值,h(x) 来自孤立树。
s对h(x)是单调的,
当E(h(x))趋于c(n)时, s趋近于0.5;
当E(h(x))趋于 0 时, s趋近于1;
当E(h(x))趋于你- 1时, s趋近于0。
路径的期望值与异常分数间的关系。
因为孤立森林不需要孤立所有正常样本,孤立森林可以使用部分模型就很好的工作而不必孤立所有正产点,使用少量样本训练。
大的样本量会减少孤立森林孤立异常样本的能力,因为正常样本会干扰孤立过程,降低了清晰孤立异常点的能力。
欠采样对孤立森林是和好的使用环境,本文中欠采样是随机不放回的抽取。
Swamping是指将正常样本错标为异常;
Masking是存在过多异常导致遮盖了异常的自身。当异常簇很大很密集时,会增加孤立每个异常点的划分次数。
Swamping和Masking都是数据过多导致的结果。
图 a 是异常点较多且密度集中的情况;图 b 是采样样本后异常点稀疏的情况。
使用孤立森林做异常检测需要两步。
一是用下采样数据集构建孤立树;二是给出样本的异常分数。
在训练阶段,孤立树是通过反复划分给定的训练集直到样本都被孤立或带到了特定的树的高度。树高 l 的限制是自动生成的,根据欠采样的数据大小 n 确定:l = log2(n)。这个值近似于树的平均高度,模型只对短于平均路径的数据即异常数据感兴趣。
孤立森林算法有两个参数,下采样大小 n 和 森林中的树的数量。
根据经验,设置 采样数量为 256,这样通常能提供足够的信息检测异常。
设置 t = 100 作为森林中树的数量的默认值。
在评估阶段,异常点分数是从样本路径长度期望获得的;期望 E(h(x)) 是通过样本在森林中经过的每颗树获得的。
使用路径长度函数,单独路径长度 h(x) 通过计数从孤独树根节点到最终节点的边的数量,最终返回时如果Size>1, 需要再加上一个调整数,c(Size)。
当每个树的h(x) 汇聚起来,可通过上面的公式计算异常值分数。
将异常分数降序排列,找到前 m 个点就是异常点。
本文提出一种完全不同的模型,致力于使异常孤立而不是正常样本的概述。
异常样本少且不同的特性,孤立树可在更接近根节点处是异常点孤立;这个特性使孤立森林可不构建完全的模型,使用训练数据的一小部分就可有效构建模型。
实验评估显示孤立森林比近似线性时间复杂度的,基于距离的方法,如ORCA、LOF、RF,在AUC和执行时间上更有优势,特别是在大数据集上。此外,孤立森林可在小样本上快速汇集,能更高效的检测异常。
对含有大量不相关属性的高维问题,孤立森林可使用新增的属性快速获得检测结果;而基于距离方法的检测效果不佳而且更好是。
即使在训练数据集没有异常数据,孤立森林依旧可良好工作。孤立森林是高效准确的异常检测器,特别是对大的数据集。