2021-05-15

异常检测-------线性模型

一、概述[5]

真实数据中的属性通常是相关的。这种依赖关系提供了相互预测属性的能力。如在正常情况下,一个人的身高和体重之间具有一定的相关性;房价和房屋面积的相关性;薪资和工龄之间的相关性等。

预测和异常检测的概念是密切相关的。异常值通常是在特定模型的基础上偏离预期值(预测值)的值。

线性模型侧重于使用属性间依赖关系来实现这一目标,这也叫回归模型

回归建模是相关性分析的一种参数化形式

     一些形式的相关分析试图从其他自变量预测因变量,如对时间序列等复杂数据类型更有用(线性回归)。

      其他一些形式则以潜在变量的形式总结整个数据集,如对主成分分析方法等传统的多维数据类型更有用。   

  需要明确的是,这里有两个重要的假设

  假设一:近似线性相关假设。线性相关假设是使用两种模型进行异常检测的重要理论基础。

在数学中,线性近似是指使用线性函数对一般函数进行近似处理的方法。线性近似就是用线性函数对普通函数进行近似。这个线性函数称为仿射函数https://baike.baidu.com/item/%E7%BA%BF%E6%80%A7%E8%BF%91%E4%BC%BC/7704332?fr=aladdin

  假设二:子空间假设。子空间假设认为数据是镶嵌在低维子空间中的,线性方法的目的是找到合适的低维子空间使得异常点(o)在其中区别于正常点(n)。

  基于这两点假设,在异常检测的第一阶段,为了确定特定的模型是否适合特定的数据集,对数据进行探索性和可视化分析是非常关键的。

二、线性回归

    在线性回归中,我们假设不同维度的变量具有一定的相关性,并可以通过一个相关系数矩阵进行衡量。因此对于特定的观测值,可以通过线性方程组来建模。在实际应用中,观测值的数量往往远大于数据的维度,导致线性方程组是一个超定方程,不能直接求解。因此需要通过优化的方法,最小化模型预测值与真实数据点的误差。

  线性回归是统计学中一个重要的应用,这个重要的应用往往是指通过一系列自变量去预测一个特殊因变量的值在这种情况下,异常值是根据其他自变量对因变量的影响来定义的,而自变量之间相互关系中的异常则不那么重要。这里的异常点检测主要用于数据降噪,避免异常点的出现对模型性能的影响,因而这里关注的兴趣点主要是正常值(n)。

  而我们通常所说的异常检测中并不会对任何变量给与特殊对待,异常值的定义是基于基础数据点的整体分布,这里我们关注的兴趣点主要是异常值(o)。

广义的回归建模只是一种工具,这种工具既可以用来进行数据降噪【4】也可以进行异常点检测。

2.1 基于自变量与因变量的线性回归

2.1.1 最小二乘法

最小二乘法要求矩阵 UT⋅U可逆,即UT⋅U是满秩的。当UT⋅U不可逆时可以通过两种方法进行参数估计,一种先使用主成分分析等方法来预处理数据,消除不同特征之间的相关性,然后再使用最小二乘法。第二种方法是使用梯度下降法

2.1.2 梯度下降法(代码实现[2])

数据集

  监督学习一般靠数据驱动。我们通常收集一系列的真实数据,例如多栋房屋的真实售出价格和它们对应的面积和房龄。我们希望在这个数据上面寻找模型参数来使模型的预测价格与真实价格的误差最小。在机器学习术语里,该数据集被称为训练数据集(training data set)或训练集(training set),通常还应该有一个用于防止过拟合的交叉验证集和一个用于评估模型性能的测试集(test set)。一栋房屋被称为一个样本(sample),其真实售出价格叫作标签(label),用来预测标签的两个因素叫作特征(feature)。

损失函数

  如果把线性回归看作是一个优化问题,那么我们要优化的目标就是损失函数。损失函数是用来衡量样本误差的函数,我们的优化目标是要求得在误差最小的情况下模型参数的值。这里强调一下损失函数和代价函数的区别:

注意: **Loss Function(损失函数):**the error for single training example; **Cost Function(代价函数):**the average of the loss functions of the entire training set;

当模型和损失函数形式较为简单时,上面的误差最小化问题的解可以直接用公式表达出来。这类解叫作解析解(analytical solution)。本节使用的线性回归和平方误差刚好属于这个范畴。然而,大多数深度学习模型并没有解析解,只能通过优化算法有限次迭代模型参数来尽可能降低损失函数的值。这类解叫作数值解(numerical solution)。

梯度下降(gradient descent)在机器学习中应用十分的广泛,不论是在线性回归还是Logistic回归中,它的主要目的是通过迭代找到目标函数的最小值,或者收敛到最小值。【2】

在求数值解的优化算法中,小批量随机梯度下降(mini-batch stochastic gradient descent)被广泛使用。它的算法很简单:先选取一组模型参数的初始值,如随机选取;接下来对参数进行多次迭代,使每次迭代都可能降低损失函数的值。在每次迭代中,先随机均匀采样一个由固定数目训练数据样本所组成的小批量(mini-batch),然后求小批量中数据样本的平均损失和有关模型参数的导数(梯度),最后用此结果与预先设定的学习率的乘积作为模型参数在本次迭代的减小量。如下式所示:

2.2 基于异常检测的线性回归

前一节讨论了这样一种情况:即一个特定的变量被认为是特殊的,最优平面是通过最小化该特殊变量的均方误差而确定的。而我们通常所说的异常检测中并不会对任何变量给与特殊对待,异常值的定义是基于基础数据点的整体分布,因此需要采用一种更一般的回归建模:即以相似的方式对待所有变量,通过最小化数据对该平面的投影误差确定最佳回归平面。

三、主成分分析

 上一节的最小二乘法试图找到一个与数据具有最佳匹配 (d−1)维超平面。主成分分析方法可用于解决这一问题的广义版本。具体来说,它可以找到任意 k(k<d)维的最优表示超平面,从而使平方投影误差最小化。

PCA代表“主成分分析”(principal component analysis),而这个新属性称为“第一主成分”。同时,我们通常不说“属性”(property)或“特性”(characteristic),而说“特征”(feature)或“变量”(variable)。[3]

所谓的主成分分析,除了找出体现特征间差异的属性;并且还构造了重构旧特征的新特征。

3.1 原理推导

这里的 D为对角矩阵,对角元素为特征值;P为标准正交矩阵,每一行为对应的特征向量;这些标准正交向量提供了数据应该投影的轴线方向。与异常检测相关的主成分分析的主要性质如下:

  • 如果前 k的特征向量选定之后(根据最大的k个特征值),由这些特征向量定义的 k 维超平面是在所有维度为 k 的超平面中,所有数据点到它的均方距离尽可能小的平面。

  • 如果将数据转换为与正交特征向量对应的轴系,则转换后的数据沿每个特征向量维的方差等于相应的特征值。在这种新表示中,转换后的数据的协方差为0。

  • 由于沿特征值小的特征向量的转换数据的方差很低,因此沿这些方向的变换数据与平均值的显着偏差可能表示离群值。

  需要注意的是,相比2.2节的内容,这里提供了一个更加普遍的解决方法。2.2中的内容可以归为主成分分析中只保留最大特征值对应的特征向量的情况。

  在得到这些特征值和特征向量之后,可以将数据转换到新的坐标系中。以 Y1...YN 表示新坐标系中的数据,这些数据可以通过原始向量 Ri与包含新轴系的标准正交特征向量矩阵 P的乘积来实现。

 

Yi= R_{i}\cdot P

在许多涉及高维数据集的真实场景中,很大一部分特征值往往非常接近于零。这意味着大多数数据都沿着一个低维的子空间排列。从异常检测的角度来看,这是非常方便的,因为离这些投影方向非常远的观测值可以被假定为离群值。例如,对于特征值较小(方差较小)的特征向量 j,第 i条记录的 yij与 ykj的其他值的偏差较大,说明有离群行为。这是因为当j固定而k变化时,ykj的值应当变化不大。因此,yij值是不常见的。

  在不选取任何特定的 k 维集合的情况下,一种更精确的异常检测建模方法是使用特征值来计算数据点沿每个主分量方向到质心的归一化距离。设 ej为第 j个特征向量,λj为沿该方向的方差(特征值)。

值得注意的是,对异常得分的大部分贡献是由 λjλj 值较小的主成分的偏差提供的,这一点上文中有提及过。主成分分析比因变量回归能更稳定地处理少数异常值的存在。这是因为主成分分析是根据最优超平面来计算误差的,而不是一个特定的变量。当数据中加入更多的离群点时,最优超平面的变化通常不会大到影响离群点的选择。因此,这种方法更有可能选择正确的异常值,因为回归模型一开始就更准确。

3.2 归一化问题

当不同维度的尺度差别较大时,使用 PCA 有时并不能得到直观有效的结果。例如,考虑一个包含年龄和工资等属性的人口统计数据集。工资属性的范围可能是几万,而年龄属性几乎总是小于100,使用主成分分析会导致主成分被高方差属性所控制。对于一个只包含年龄和工资的二维数据集,最大的特征向量几乎与工资轴平行,这会降低异常点检测过程的有效性。因此,一个自然的解决方案是对数据进行均值为0方差为1的标准化处理。这隐含地导致在主成分分析中使用相关矩阵而不是协方差矩阵。当然,这个问题并不是线性建模所独有的,对于大多数异常检测算法,都需要使用这样的预处理。

 

四、总结

 真实数据中,数据不同属性之间往往具有显著的相关性。在这种情况下,线性建模可以提供一种有效的工具来从底层数据中移除异常值或者进行异常检测。对于其他基于因变量回归的应用,线性建模是一种工具,去除异常值对于提高此类应用的性能是非常重要的。在大多数情况下,主成分分析提供了去除异常值和进行异常检测最有效的方法,因为它对存在少数异常值的数据更有鲁棒性。

参考文献

  1. AnomalyDetection/三、线性模型.md · Datawhale/team-learning-data-mining - 码云 - 开源中国 (gitee.com)
  2. https://blog.youkuaiyun.com/qq_41800366/article/details/86583789
  3. https://www.zhihu.com/question/41120789/answer/474222214
  4. https://www.zhihu.com/people/matongxue
  5. https://blog.youkuaiyun.com/fu_jian_ping/article/details/112464833

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值