【异常检测3】线性模型(线性回归、主成分分析)
文章目录
回归
回归问题在某种程度上等价于函数的拟合,即选择一条函数曲线,使其能很好地拟合已知数据,并较好地预测未知数据。回归问题的目的是求解数据的相关性。解决回归问题主要可以分为两类,一类是线性回归,通过其他变量预测某一个属性值;另一类是主成分分析,是通过潜在变量来代表数据。
注意回归问题的求解有两个假设:
1.近似线性相关假设。
2.子空间假设。
线性回归
什么是线性回归?
线性回归通过线性方程组来建模不同维度的向量之间的关系。由于样本数通常远大于数据维度,无法直接求解线性方程组,因此通过优化最小化模型预测值和真实数据的误差。
线性回归一般研究的是自变量对因变量的影响,相当于找到自变量和因变量的关系,可以用于解决回归、分类或预测等问题。线性回归根据自变量的个数可以分为一元线性回归和多元线性回归。一元线性回归指自变量只有一个,研究的是单变量对因变量的影响。多元线性回归则是研究多个自变量对因变量的影响。
线性回归中的异常检测
在线性回归中的异常值主要指的是在特定模型的基础上偏离预测值的值,而非考虑样本特征(自变量)之间的关系。在线性方法中,异常检测的目标是找到低维子空间,其中离群点的行为与其他数据点非常不同。由于异常点会对模型性能产生影响,因此异常检测是为了用于数据降噪,防止异常点对模型产生影响。
有哪些线性回归的方法?
基于自变量与因变量的线性回归
最小二乘法
以一个多元线性回归为例,最小二乘法的原理如下:
$X_{1}…X_{d}$为一系列因变量,也就是输入值,变量$Y$为因变量,也就是我们要预测的值,线性回归的方法可以将$Y$表示为:
$$
Y=\sum_{i=1}^{d} a_{i} \cdot X_{i}+a_{d+1} \tag{1}
$$
其中系数$a_{1}…a_{d+1}$是可以被学习到的参数。假设数据共包含$N$个样本,第$j$个样本包含的数据为$x_{j1}…x_{jd}$和$y_{j}$,带入式如下式所示:
$$
y_{j}=\sum_{i=1}^{d} a_{i} \cdot x_{j i}+a_{d+1}+\epsilon_{j} \tag{2}
$$
这里$\epsilon_{j}$为第$j$个样本的误差。以$Y$ 代表 $N \times 1$ 的因变量矩阵${(y_{1}…y_{N})}^{T}$,即样本中的真实值;以$U$代表$N \times (d+1)$的自变量矩阵,其中第$j$行为$(x_{j1}…x_{jd}, 1)$;以$A$ 代表 $(d+1) \times 1$ 的系数矩阵$(a_{1}…a_{d+1})^{T}$。则模型可表示为:
$$
f(U, A) = U \cdot A \tag{3}
$$
对A求导,可得:
$$
\frac{\partial L(A)}{\partial A} = \frac{1}{2}\times\frac{\partial{|Y - U \cdot A|}^2}{\partial A}= - {U^T}(Y - U \cdot A) \tag{4}
$$
令$\frac{\partial L(A)}{\partial A}=0$,得到最优参数为:
定义目标函数为:
$$
L(A) = \frac{1}{2}{\left| {Y - U \cdot A} \right|^2} \tag{5}
$$
目标函数是关于$A$的凸函数,其对$A$求偏导为:
$$
A=\left(U^{T} \cdot U\right)^{-1} \cdot\left(U^{T} \cdot Y\right) \tag{6}
$$
梯度下降法
优化目标是最小化损失函数,深度学习是利用随机梯度下降有限次地迭代模型参数,尽可能降低损失函数的值,相当于求出了数值解。但线性回归和平方误差是能够直接求出误差的最小化,因此是求出了解析解。
基于异常检测的线性回归
一组变量 $X_{1}… X_{d}$, 对应的回归平面如下:
$$
a_{1} \cdot X_{1}+\ldots+a_{d} \cdot X_{d}+a_{d+1}=0 \tag{7}
$$
为了后续计算的方便,对参数进行如下约束:
$$
\sum\limits_{i = 1}^d {a_i^2 = 1} \tag{8}
$$
以$L_{2}$范数作为目标函数:
$$
L = {\left| {U \cdot A} \right|_2} \tag{9}
$$
这种方式是以相似的方式对待所有的变量,通过最小化数据对平面的投影误差来确定最佳回归平面。
主成分分析
什么是主成分分析?
主成分分析能够在上述的方法上通过找到一个比原始维数更低的维度表示的最优超平面,它相当于一种降维的操作。
主成分分析的原理
对于 $d$ 维,包含 $N$ 个样本的数据,用 $R_{i}$ 表示其中第 $i$ 行为:$[x_{i1}… x_{id}]$。由此可以得到 $d \times d$ 的协方差矩阵$Σ$ (标准的PCA应当计算相关系数矩阵,即对数据进行均值为0方差为1的标准化处理,而协方差矩阵只需要减去均值即可):
$$
Σ = (R - \bar{R})^{T} \cdot (R - \bar{R}) \tag{10}
$$
协方差矩阵是对称并且半正定的,因此可以进行相似对角化:
$$
Σ = P \cdot D \cdot P^{T} \tag{11}
$$
对角化后,$D$是特征值组成的对角矩阵,$P$ 是标准正交矩阵,每一行为对应的特征向量;这些标准正交向量提供了数据应该投影的轴线方向。
获取特征值和特征向量后,可以将原始的数据转换到新的坐标系中。$Y_{1}…Y_{k}$ 表示新坐标系中的数据,这些数据可以通过原始向量 $R_{i}$ 与包含新轴系的标准正交特征向量矩阵 $P$ 的乘积来实现。
$$
{Y_i} = {R_i} \cdot P \tag{12}
$$
通常高维数据的很多特征值接近0,相当于他们对原始数据特征向量的贡献不高,可以被忽略,当然这些较小的特征值也可以被看成异常。具体与异常检测相关的性质如下所示。
异常检测相关性质
- 最大的前k个特征值的特征向量定义的k维超平面是所有维度为k的超平面中数据点到它的均方距离尽可能小的平面。
- 如果将数据转换为与正交特征向量对应的轴系,则转换后的数据沿每个特征向量维的方差等于相应的特征值。在这种新表示中,转换后的数据的协方差为0。(?)
- 由于沿特征值小的特征向量的转换数据的方差很低(没有更好地保持在原空间上的关系),因此沿这些方向的变换数据与平均值的显着偏差可能表示离群值。
主成分分析中的异常检测
对于特征值较小(方差较小)的特征向量 $j$,第 $i$ 条记录的 $y_{ij}$ 与 $y_{kj}$ 的其他值的偏差较大,说明有离群行为。这是因为当$j$固定而$k$变化时,$y_{kj}$ 的值应当变化不大。因此,$y_{ij}$ 值是不常见的。
使用特征值来计算数据点沿每个主分量方向到质心的归一化距离。设$e_{j}$为第$j$个特征向量,$λ_j$为沿该方向的方差(特征值)。数据点$\bar{X}$相对于对数据质心$\bar{\mu}$的总体归一化异常得分可以由下式给出:
$$
S \operatorname{core}(\bar{X})=\sum_{j=1}^{d} \frac{|(\bar{X}-\bar{\mu}) \cdot \bar{e_j}|^{2}}{\lambda_j} \tag{13}
$$
注意在使用PCA时,需要对数据进行归一化操作,进行均值为0方差为1的标准化处理。这隐含地导致在主成分分析中使用相关矩阵而不是协方差矩阵。
回归分析的优劣
优点
1.线性建模提供一种有效的工具来从底层数据中移除异常值或者进行异常检测。
2.主成分分析提供了去除异常值和进行异常检测最有效的方法,因为它对存在少数异常值的数据更有鲁棒性。
缺点
1.数据不相关,但在某些区域高度聚集时,这种方法可能不会有效。
2.数据中相关性本质上可能不是全局的,主成分分析发现的全局子空间对异常检测可能是次优的,可能需要将线性模型和临近模型进行结合。
原文作者: Ruoting Wu
原文链接: https://codingclaire.github.io/2021/05/17/2021-05-17-anomaly-detection-3/
许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议