异常检测Task05:高维异常

Task05:高维异常

主要内容:

  • Feature Bagging
  • 孤立森林

1、高维数据异常检测特异性介绍

高维数据异常检测是指在现实生活中,一些数据集往往具有较多的维度,数据维度的增加一方面使得数据的大小飞快增加,另一方面可能会出现数据稀疏性,这种状况被称为维度诅咒。维度诅咒会使得距离的计算出现问题,进而对聚类方法也造成了困难。
特别在对距离的计算上,因为是高维的数据,所有点的距离几乎都是相等的,基于距离进行异常点判断可能会失效

2、高维数据异常检测思路

1、通过主成分法,进行降维,选取低特征值的降维后特征进行异常点判断(线性部分内容)
2、通过集成(ensemble)的思路.
集成方法将多个算法或多个基检测器的输出结合起来。**其基本思想是一些算法在某些子集上表现很好,一些算法在其他子集上表现很好,然后集成起来使得输出更加鲁棒。**集成方法与基于子空间方法有着天然的相似性,子空间与不同的点集相关(其实就是bootstrap自助法),而集成方法使用基检测器来探索不同维度的子集,将这些基学习器集合起来。

3、集成方法1——Feature Bagging

3.1bagging的含义

bagging一词是bootstrap aggregating(自助法聚合),指的是对数据构建一组模型的方法

其中自助法的含义是从样本本身中有放回地抽取更多的样本,并对每次重抽样重新计算统计量或模型。

自助法也可用于多变量数据。这时该方法使用数据行作为抽样单元,可在自助数据上运行模型,估计模型参数的稳定性(或变异性),或是改进模型的预测能力。如我们可以使用分类和回归树(也称决策树)在自助数据上运行多个树模型,并平均多个树给出的预测值(或是使用分类,并选取多数人的投票),这通常要比使用单个树的预测性能更好。这一过程被称为Bagging方法。

3.2 Feature Bagging

Feature Bagging的基本思想与bagging相似,只是对象是 feature(特征),即只对变量做抽样,不对记录做抽样。Feature Bagging会按样本的特征进行重抽样得到多个数据集,再使用一组(多个)模型对这些数据集进行训练
(很像随机森林)

集成方法的设计主要有两步:

1.选择基检测器或者说模型

这些基本检测器可以彼此完全不同,或不同的参数设置,或使用不同采样的子数据集。Feature bagging常用lof算法为基算法。下图是feature bagging的通用算法:
在这里插入图片描述
2.分数标准化和组合方法:

不同检测器可能会在不同的尺度上产生分数。例如,平均k近邻检测器会输出原始距离分数,而LOF算法会输出归一化值。另外,尽管一般情况是输出较大的异常值分数,但有些检测器会输出较小的异常值分数。因此,需要将来自各种检测器的分数转换成可以有意义的组合的归一化值。分数标准化之后,还要选择一个组合函数将不同基本检测器的得分进行组合,最常见的选择包括平均和最大化组合函数。

下面是两个feature bagging两个不同的组合方法
1)广度优先:
在这里插入图片描述
2)累计求和
在这里插入图片描述
基探测器的设计及其组合方法都取决于特定集成方法的特定目标。很多时候,我们无法得知数据的原始分布,只能通过部分数据去学习。除此以外,算法本身也可能存在一定问题使得其无法学习到数据完整的信息。这些问题造成的误差通常分为偏差和方差两种。

方差:是指算法输出结果与算法输出期望之间的误差,描述模型的离散程度,数据波动性。

偏差:是指预测值与真实值之间的差距。即使在离群点检测问题中没有可用的基本真值

4、集成方法2——lsolation Forests(孤立森林)

孤立森林(Isolation Forest)算法是周志华教授等人于2008年提出的异常检测算法,是机器学习中少见的专门针对异常检测设计的算法之一,方法因为该算法时间效率高,能有效处理高维数据和海量数据,无须标注样本,在工业界应用广泛。
树算法思想的来源非常朴素,程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法,将满足条件和不满足条件的按一个个条件分割开来。
孤立森林属于非参数和无监督的算法,无需定义数学也不需要训练数据有标签。该算法非常高效。

举例:我们用一个随机平面来切割数据空间,会生成两个子空间,再用一个随机超平面来切割每个子空间,一直循环,直到所有的子空间只有一个数据点为止,直观来讲,那些具有高密度的簇需要被切很多次才会将其分离,而那些低密度的点很快就被单独分配到一个子空间了。
孤立森林认为这些很快被孤立的点就是异常点。
用四个样本做简单直观的理解,d是最早被孤立出来的,所以d最有可能是异常。
在这里插入图片描述
怎么来切这个数据空间是孤立森林的核心思想。因为切割是随机的,为了结果的可靠性,要用集成(ensemble)的方法来得到一个收敛值,即反复从头开始切,平均每次切的结果。孤立森林由t棵孤立的数组成,每棵树都是一个随机二叉树,也就是说对于树中的每个节点,要么有两个孩子节点,要么一个孩子节点都没有。树的构造方法和随机森林(random forests)中树的构造方法有些类似。流程如下:

1.从训练数据中随机选择一个样本子集,放入树的根节点;

2.随机指定一个属性,随机产生一个切割点V,即属性A的最大值和最小值之间的某个数;

3.根据属性A对每个样本分类,把A小于V的样本放在当前节点的左孩子中,大于等于V的样本放在右孩子中,这样就形成了2个子空间;

4.在孩子节点中递归步骤2和3,不断地构造左孩子和右孩子,直到孩子节点中只有一个数据,或树的高度达到了限定高度。

获得t棵树之后,孤立森林的训练就结束,就可以用生成的孤立森林来评估测试数据。

孤立森林检测异常的假设是:异常点一般都是非常稀有的,在树中会很快被划分到叶子节点,因此可以用叶子节点到根节点的路径长度来判断一条记录是否是异常的。和随机森林类似,孤立森林也是采用构造好的所有树的平均结果形成最终结果的。在训练时,每棵树的训练样本是随机抽样的。从孤立森林的树的构造过程看,它不需要知道样本的标签,而是通过阈值来判断样本是否异常。因为异常点的路径比较短,正常点的路径比较长,孤立森林根据路径长度来估计每个样本点的异常程度。
在这里插入图片描述
孤立森林也是一种基于子空间的方法,不同的分支对应于数据的不同局部子空间区域,较小的路径对应于孤立子空间的低维

5、总结

1.feature bagging优势:
可以降低方差,可以给不同维度组合采用最合适的算法,依据权重最终得到一个整体较高的训练结果。
2.孤立森林的优势:
计算成本相比基于距离或基于密度的算法更小。
具有线性的时间复杂度。
在处理大数据集上有优势。
孤立森林不适用于超高维数据,因为孤立森林每次都是随机选取维度,如果维度过高,则会存在过多噪音。

6、练习(待补充)

6.1 feature bagging
使用PyOD库生成toy example并调用feature bagging
6.2 使用PyOD库生成toy example并调用Isolation Forests
6.3 思考:feature bagging为什么可以降低方差?
方差的含义是输出结果与输出期望之间的误差,feature bagging核心可以给不同维度组合采用最合适的算法,依据权重进行得分加权最终得到一个效果较好的训练结果,其误差比单一模型降低了波动性也就降低了方差。
6.34思考2feature bagging存在哪些缺陷,有什么可以优化的idea?
基探测算法无法实现最佳选择,且进行自助法意味着需要多次运行算法,会消耗较多的算力资源和时间
可以在选取特征前,对整体数据划分测试集和训练集检测一下当前数据适合的基探测算法,再进行自助法抽取特征之后的步骤

猜你喜欢

转载自blog.csdn.net/qq_43720646/article/details/113100996