异常检测的学习笔记并非原创,而是搜索各位大佬的帖子整理而得。如有冒犯,请联系我。
真实数据集中不同维度的数据通常具有⾼度的相关性,这是因为不同的属性往往是由相同的基础过程以密切相关的⽅式产⽣的。在古典统计学中,这被称为——回归建模,⼀种参数化的相关性分析。
需要明确的是,这⾥有两个重要的假设:
1. 近似线性相关假设。线性相关假设是使⽤两种模型进⾏异常检测的重要理论基础。
2. ⼦空间假设。⼦空间假设认为数据是镶嵌在低维⼦空间中的,线性⽅法的⽬的是找到合适的低维⼦空间使得异常点(o)在其中区别于正常点(n)。
基于这两点假设,在异常检测的第⼀阶段,为了确定特定的模型是否适合特定的数据集,对数据进⾏探索性和可视化分析是⾮常关键的。
1. 线性回归
在线性回归中,我们假设不同维度的变量具有⼀定的相关性,并可以通过⼀个相关系数矩阵进⾏衡量。因此对于特定的观测值,可以通过线性⽅程组来建模。在实际应⽤中,观测值的数量往往远⼤于数据的维度,导致线性⽅程组是⼀个超定⽅程,不能直接求解。因此需要通过优化的⽅法,最小化模型预测值与真实数据点的误差。
⼴义的回归建模只是⼀种⼯具,这种⼯具既可以⽤来进⾏数据降噪也可以进⾏异常点检测。
1.1 基于⾃变量与因变量的线性回归
1.1.1 最小⼆乘法
⼀元线性回归:
变量Y为因变量,也就是我们要预测的值; 为⼀系列因变量,也就是输⼊值。系数为要学习的参数。
定义⽬标函数为:
⽬标函数是关于的凸函数,其对求偏导为:
利用FOC条件,。这种求解线性回归参数的⽅法也叫最小⼆乘法。
最小⼆乘法要求矩阵可逆,即是满秩的。当不可逆时可以通过两种⽅法进⾏参数估计,⼀种先使⽤主成分分析等⽅法来预处理数据,消除不同特征之间的相关性,然后再使⽤最小⼆乘法。第⼆种⽅法是使⽤梯度下降法。
1.1.2 梯度下降法
监督学习⼀般靠数据驱动。我们通常收集⼀系列的真实数据,例如多栋房屋的真实售出价格和它们对应的⾯积和房龄。在机器学习术语⾥,该数据集被称为训练数据集(training data set)或训练集(training set),通常还应该有⼀个⽤于防⽌过拟合的交叉验证集和⼀个⽤于评估模型性能的测试集(test set)。⼀栋房屋被称为⼀个样本(sample),其真实售出价格叫作标签(label),⽤来预测标签的两个因素叫作特征(feature)。
如果把线性回归看作是⼀个优化问题,那么我们要优化的⽬标就是损失函数。损失函数是⽤来衡量样本误差的函数,我们的优化⽬标是要求得在误差最小的情况下模型参数的值。
在求数值解的优化算法中,小批量随机梯度下降(mini-batch stochastic gradient descent)被⼴泛使⽤。在每次迭代中,先随机均匀采样⼀个由固定数⽬训练数据样本所组成的小批量(mini-batch),然后求小批量中数据样本的平均损失和有关模型参数的导数(梯度),最后⽤此结果与预先设定的学习率的乘积作为模型参数在本次迭代的减小量。
学习率(): 代表在每次优化中,能够学习的步⻓的⼤小;批量⼤小(): 是小批量计算中的批量⼤小batch size
1.2 基于异常检测的线性回归
前⼀节讨论了这样⼀种情况:即⼀个特定的变量被认为是特殊的,最优平⾯是通过最小化该特殊变量的均⽅误差而确定的。而我们通常所说的异常检测中并不会对任何变量给与特殊对待,异常值的定义是基于基础数据点的整体分布,因此需要采⽤⼀种更⼀般的回归建模:即以相似的⽅式对待所有变量,通过最小化数据对该平⾯的投影误差确定最佳回归平⾯。这样的⼀个问题可以通过主成分分析⽅法得到有效解决。
以 范数作为⽬标函数:
2. 主成分分析(PCA)
上⼀节的最小⼆乘法试图找到⼀个与数据具有最佳匹配维的超平⾯,主成分分析⽅法可⽤于解决这⼀问题的⼴义版本。具体来说,它可以找到任意最优表⽰超平⾯维。从而使平⽅投影误差最小化。
如何通俗易懂地讲解什么是 PCA 主成分分析?
值得注意的是,对异常得分的⼤部分贡献是由特征值较小的主成分的偏差提供的,这⼀点上⽂中有提及过。主成分分析⽐因变量回归能更稳定地处理少数异常值的存在。这是因为主成分分析是根据最优超平⾯来计算误差的,而不是⼀个特定的变量。当数据中加⼊更多的离群点时,最优超平⾯的变化通常不会⼤到影响离群点的选择。因此,这种⽅法更有可能选择正确的异常值,因为回归模型⼀开始就更准确。
归一化处理:当不同维度的尺度差别较⼤时,使⽤ 有时并不能得到直观有效的结果。例如,考虑⼀个包含年龄和⼯资等属性的⼈口统计数据集。⼯资属性的范围可能是⼏万,而年龄属性⼏乎总是小于100,使⽤主成分分析会导致主成分被⾼⽅差属性所控制。对于⼀个只包含年龄和⼯资的⼆维数据集,最⼤的特征向量⼏乎与⼯资轴平⾏,这会降低异常点检测过程的有效性。因此,⼀个⾃然的解决⽅案是对数据进⾏均值为0⽅差为1的标准化处理。这隐含地导致在主成分分析中使⽤相关矩阵而不是协⽅差矩阵。
3. 回归分析的局限性
为了使回归分析技术有效,数据需要⾼度相关,并沿着低维⼦空间对⻬。当数据不相关,但在某些区域⾼度聚集时,这种⽅法可能不会有效。
另⼀个相关的问题是,数据中的相关性在本质上可能不是全局性的。
因此,为了创建更⼀般的局部⼦空间模型,有时将线性模型与邻近模型(在后续章节中讨论)结合起来是有⽤的。这将是⾼维和⼦空间异常检测的主题,将在后续章节详细讨论。
4. 总结
真实数据中,数据不同属性之间往往具有显著的相关性。在这种情况下,线性建模可以提供⼀种有效的⼯具来从底层数据中移除异常值或者进⾏异常检测。对于其他基于因变量回归的应⽤,线性建模是⼀种⼯具,去除异常值对于提⾼此类应⽤的性能是⾮常重要的。在⼤多数情况下,主成分分析提供了去除异常值和进⾏异常检测最有效的⽅法,因为它对存在少数异常值的数据更有鲁棒性。
5.练习
数据来源:https://download.csdn.net/download/weixin_39940512/14008876
用PCA分析异常:
1. 思路:https://blog.csdn.net/fu_jian_ping/article/details/112491976
2. 代码实现:https://zhuanlan.zhihu.com/p/48110105
3. 拓展:https://www.dazhuanlan.com/2019/12/12/5df17ef1118d2/