TASK05高维异常
维度诅咒/维度灾难/维度惩罚:
随着维度的增加,数据空间的体积会以指数级别增长,使数据变得稀疏。
现象:数据稀疏/距离集中。
高维场景下:常用子空间方法。
识别 子空间的几类常用方法:
- 基于稀有性。
- 无偏(特征袋/旋转袋/旋转子空间采样)
- 基于聚合的方法
集成方法是基于子空间方法的常用方法之一。集成方法两种常见方法如下:
feature bagging
feature bagging即特征组合。是集成方法的一种。
bagging是bootstrap aggregating的缩写。
feature bagging的设计步骤为:
选择基检测器
基本检测器可以彼此完全不同,或不同的参数设置,或使用不同采样的子数据集。
通用算法为:
- 给定数据集 S S S,xi属于Xd,yi属于Y={C,NC}。C为异常值,NC为正常值。d为向量X的维度。
- 归一化数据集S
- t=1,2,3… T T T
-
- 从一个在d/2到d-1之间的均匀分布中随机选择特征子集 N N Nt的大小
-
- 随机选择不放回, N N Nt特征,来创建一个特征子集 F F Ft
-
- 通过应用特征子集 F F Ft来应用异常检测算法子集 O O Ot
-
- 异常检测算法子集 O O Ot的输出是异常评分向量 A S AS ASt
- 组合这些异常得分向量的正常得分向量,并且输出最终异常得分向量ASFINAL
分数标准化和组合方法
不同检测器可能会在不同的尺度上产生分数。
分数标准化:需要将来自各种检测器的分数转换成可以有意义的组合的归一化值。
组合方法:选择一个组合函数将不同基本检测器的得分进行组合,最常见的选择包括平均和最大化组合函数。
两个feature bagging两个不同的组合分数方法:
- 广度优先
- 累积求和
方差:是指算法输出结果与算法输出期望之间的误差,描述模型的离散程度,数据波动性。
偏差:是指预测值与真实值之间的差距。即使在离群点检测问题中没有可用的基本真值
isolation forests
孤立森林是机器学习中少见的专门针对异常检测设计的算法之一。
孤立森林属于非参数和无监督的算法,既不需要定义数学模型也不需要训练数据有标签。
孤立森林认为这些很快被孤立的点就是异常点。
孤立森林由t棵孤立的数组成,每棵树都是一个随机二叉树,也就是说对于树中的每个节点,要么有两个孩子节点,要么一个孩子节点都没有。树的构造方法和随机森林(random forests)中树的构造方法有些类似。
流程:
- 从训练数据中随机选择一个样本子集,放入树的根节点;
- 随机指定一个属性,随机产生一个切割点V,即属性A的最大值和最小值之间的某个数;
- 根据属性A对每个样本分类,把A小于V的样本放在当前节点的左孩子中,大于等于V的样本放在右孩子中,这样就形成了2个子空间;
- 在孩子节点中递归步骤2和3,不断地构造左孩子和右孩子,直到孩子节点中只有一个数据,或树的高度达到了限定高度。
孤立森林检测异常的假设是:异常点一般都是非常稀有的,在树中会很快被划分到叶子节点,因此可以用叶子节点到根节点的路径长度来判断一条记录是否是异常的。
总结
1.feature bagging可以降低方差
2.孤立森林的优势在于:
计算成本相比基于距离或基于密度的算法更小。
具有线性的时间复杂度。
在处理大数据集上有优势。
作业
1.使用PyOD库生成toy example并调用feature bagging
homework2
使用PyOD库生成toy example并调用Isolation Forests