高维数据异常检测
引言
在实际场景中,很多数据集都是多维度的。随着维度的增加,数据空间的⼤小(体积)会以指数级别增 ⻓,使数据变得稀疏,这便是维度诅咒的难题。维度诅咒不⽌给异常检测带来了挑战,对距离的计算, 聚类都带来了难题。例如基于邻近度的⽅法是在所有维度使⽤距离函数来定义局部性,但是,在⾼维空间中,所有点对的距离⼏乎都是相等的(距离集中),这使得⼀些基于距离的⽅法失效。在⾼维场景 下,⼀个常⽤的⽅法是⼦空间⽅法。
集成是⼦空间思想中常⽤的⽅法之⼀,可以有效提⾼数据挖掘算法精度。集成⽅法将多个算法或多个基 检测器的输出结合起来。其基本思想是⼀些算法在某些⼦集上表现很好,⼀些算法在其他⼦集上表现很 好,然后集成起来使得输出更加鲁棒。集成⽅法与基于⼦空间⽅法有着天然的相似性,⼦空间与不同的 点集相关,而集成⽅法使⽤基检测器来探索不同维度的⼦集,将这些基学习器集合起来。
下⾯来介绍两种常⻅的集成⽅法:
Feature Bagging
Feature Bagging,基本思想与bagging相似,只是对象是feature。feature bagging属于集成⽅法的⼀ 种。集成⽅法的设计有以下两个主要步骤:
1.选择基检测器。这些基本检测器可以彼此完全不同,或不同的参数设置,或使⽤不同采样的⼦数据 集。Feature bagging常⽤lof算法为基算法。下图是feature bagging的通⽤算法:
2.分数标准化和组合⽅法:不同检测器可能会在不同的尺度上产⽣分数。例如,平均k近邻检测器会输出 原始距离分数,而LOF算法会输出归⼀化值。另外,尽管⼀般情况是输出较⼤的异常值分数,但有些检 测器会输出较小的异常值分数。因此,需要将来⾃各种检测器的分数转换成可以有意义的组合的归⼀化 值。分数标准化之后,还要选择⼀个组合函数将不同基本检测器的得分进⾏组合,最常⻅的选择包括平 均和最⼤化组合函数。 下图是两个feature bagging两个不同的组合分数⽅法:
基探测器的设计及其组合⽅法都取决于特定集成⽅法的特定⽬标。很多时候,我们⽆法得知数据的原始 分布,只能通过部分数据去学习。除此以外,算法本⾝也可能存在⼀定问题使得其⽆法学习到数据完整 的信息。这些问题造成的误差通常分为偏差和⽅差两种。
⽅差:是指算法输出结果与算法输出期望之间的误差,描述模型的离散程度,数据波动性。
偏差:是指预测值与真实值之间的差距。即使在离群点检测问题中没有可⽤的基本真值
Isolation Forests
孤⽴森林(Isolation Forest)算法是周志华教授等⼈于2008年提出的异常检测算法,是机器学习中少⻅ 的专⻔针对异常检测设计的算法之⼀,⽅法因为该算法时间效率⾼,能有效处理⾼维数据和海量数据, ⽆须标注样本,在⼯业界应⽤⼴泛。
孤⽴森林属于⾮参数和⽆监督的算法,既不需要定义数学模型也不需要训练数据有标签。孤⽴森林查找 孤⽴点的策略⾮常⾼效。假设我们⽤⼀个随机超平⾯来切割数据空间,切⼀次可以⽣成两个⼦空间。然 后我们继续⽤随机超平⾯来切割每个⼦空间并循环,直到每个⼦空间只有⼀个数据点为⽌。直观上来 讲,那些具有⾼密度的簇需要被切很多次才会将其分离,而那些低密度的点很快就被单独分配到⼀个⼦ 空间了。孤⽴森林认为这些很快被孤⽴的点就是异常点。
⽤四个样本做简单直观的理解,d是最早被孤⽴出来的,所以d最有可能是异常。
怎么来切这个数据空间是孤⽴森林的核⼼思想。因为切割是随机的,为了结果的可靠性,要⽤集成 (ensemble)的⽅法来得到⼀个收敛值,即反复从头开始切,平均每次切的结果。孤⽴森林由t棵孤⽴ 的数组成,每棵树都是⼀个随机⼆叉树,也就是说对于树中的每个节点,要么有两个孩⼦节点,要么⼀个孩⼦节点都没有。树的构造⽅法和随机森林(random forests)中树的构造⽅法有些类似。流程如下:
- 从训练数据中随机选择⼀个样本⼦集,放⼊树的根节点;
- 随机指定⼀个属性,随机产⽣⼀个切割点V,即属性A的最⼤值和最小值之间的某个数;
- 根据属性A对每个样本分类,把A小于V的样本放在当前节点的左孩⼦中,⼤于等于V的样本放在右 孩⼦中,这样就形成了2个⼦空间;
- 在孩⼦节点中递归步骤2和3,不断地构造左孩⼦和右孩⼦,直到孩⼦节点中只有⼀个数据,或树的 ⾼度达到了限定⾼度。 获得t棵树之后,孤⽴森林的训练就结束,就可以⽤⽣成的孤⽴森林来评估测试数据。
孤⽴森林检测异常的假设是:异常点⼀般都是⾮常稀有的,在树中会很快被划分到叶⼦节点,因此可以 ⽤叶⼦节点到根节点的路径⻓度来判断⼀条记录是否是异常的。和随机森林类似,孤⽴森林也是采⽤构 造好的所有树的平均结果形成最终结果的。在训练时,每棵树的训练样本是随机抽样的。从孤⽴森林的 树的构造过程看,它不需要知道样本的标签,而是通过阈值来判断样本是否异常。因为异常点的路径⽐ 较短,正常点的路径⽐较⻓,孤⽴森林根据路径⻓度来估计每个样本点的异常程度。
路径⻓度计算⽅法:
孤⽴森林也是⼀种基于⼦空间的⽅法,不同的分⽀对应于数据的不同局部⼦空间区域,较小的路径对应 于孤⽴⼦空间的低维。
总结
1.feature bagging可以降低⽅差
2.孤⽴森林的优势在于:
- 计算成本相⽐基于距离或基于密度的算法更小。
- 具有线性的时间复杂度。
- 在处理⼤数据集上有优势。
孤⽴森林不适⽤于超⾼维数据,因为⿎励森林每次都是随机选取维度,如果维度过⾼,则会存在过多噪 ⾳。