8.主成分分析(PCA),算法思想与流程,思考与建议

1. 数据降维

降维就是一种对高维度特征数据预处理方法。降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用非常广泛的数据预处理方法。

数据降维

降维的一些优点:

  • 使得数据集更易使用。
  • 降低算法的计算开销。
  • 去除噪声。
  • 使得结果容易理解。

但是降维往往也会损失一部分原信息。降维的算法有很多,比如奇异值分解(SVD)、主成分分析(PCA)、因子分析(FA)、独立成分分析(ICA)。

2. PCA思想

主成分分析,又称主分量分析、K-L变换,堪称特征抽取方法中的经典。主成分分析作为一种数学方法和有力的数据分析工具,几乎在所有学科中都有它的身影。

PCA的数学定义是:一个正交化线性变换,把数据变换到一个新的坐标系统中,使得这一数据的任何投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。

在PCA中,要做的是找到一个方向向量(Vector direction),当把所有的数据都投射到该向量上时,PCA的关键点就是找到一个投影平面使得投影误差最小化。

假设有 n 个样本,p个指标,则可构成大小为 n × p 的样本矩阵 x :
X = [ x 11 x 12 ⋯ x 1 p x 21 x 22 ⋯ x 2 p ⋮ ⋮ ⋱ ⋮ x n 1 x n 2 ⋯ x n p ] = ( x 1 , x 2 , ⋯   , x p ) \mathrm{X}=\left[\begin{array}{cccc} \mathrm{x}_{11} & \mathrm{x}_{12} & \cdots & \mathrm{x}_{1 \mathrm{p}} \\ \mathrm{x}_{21} & \mathrm{x}_{22} & \cdots & \mathrm{x}_{2 \mathrm{p}} \\ \vdots & \vdots & \ddots & \vdots \\ \mathrm{x}_{\mathrm{n} 1} & \mathrm{x}_{\mathrm{n} 2} & \cdots & \mathrm{x}_{\mathrm{np}} \end{array}\right]=\left(\mathrm{x}_{1}, \mathrm{x}_{2}, \cdots, \mathrm{x}_{\mathrm{p}}\right) X= x11x21xn1x12x22xn2x1px2pxnp =(x1,x2,,xp)
假设我们想找到新的一组变量 (z1,z2,…,zm),这里m应该小于p,且他们满足:
{ z 1 = l 11 x 1 + l 12 x 2 + ⋯ + l 1 p x p z 2 = l 21 x 1 + l 22 x 2 + ⋯ + l 2 p x p ⋯ z m = 1 m 1 x 1 + l m 2 x 2 + ⋯ + l m p x p \left\{\begin{array}{l} \mathrm{z}_{1}=l_{11 \mathrm{x}_{1}}+l_{12 \mathrm{x}_{2}}+\cdots+l_{1 \mathrm{p}} \mathrm{x}_{\mathrm{p}} \\ \mathrm{z}_{2}=l_{21} \mathrm{x}_{1}+l_{22} \mathrm{x}_{2}+\cdots+l_{2 \mathrm{p}} \mathrm{x}_{\mathrm{p}} \\ \cdots \\ \mathrm{z}_{\mathrm{m}}=1_{\mathrm{m} 1} \mathrm{x}_{1}+l_{\mathrm{m} 2} \mathrm{x}_{2}+\cdots+l_{\mathrm{mp}} \mathrm{x}_{\mathrm{p}} \end{array}\right. z1=l11x1+l12x2++l1pxpz2=l21x1+l22x2++l2pxpzm=1m1x1+lm2x2++lmpxp
系数 l 的确定原则:

  • z 变量之间是相互无关的(正交)
  • z1是(x1,x2,…,xp)的一切线性组合中的方差最大者
  • z2是(x1,x2,…,xp)的一切线性组合中的与 z1 不相关的方差最大者

3. 算法流程

首先,假设我们有m个n维样本X,我们的目标是讲原始数据降低到k维度,然后用降维后的数据去完成模式识别任务。
X = ( x 1 , x 2 , … , x m ) X=\left(x_{1}, x_{2}, \ldots, x_{m}\right) X=(x1,x2,,xm)
(1)先将原始数据按列组合成n行m列的矩阵,然后将每一列的数据进行中心化,得到新的数据矩阵。中心化的公式如下所示:
x i = x i − 1 m ∑ j = 1 m x j x_{i}=x_{i}-\frac{1}{m} \sum_{j=1}^{m} x_{j} xi=xim1j=1mxj
(2)计算样本的协方差矩阵
C = 1 m X ′ X ′ T C=\frac{1}{m} X^{\prime} X^{\prime T} C=m1XXT
(3)基于特征值或者SVD分解协方差矩阵,求解出协方差矩阵的特征值以及对应的特征向量

(4)将特征向量按对应特征值大小从上到下按行排列成矩阵,取得前 k 行组成矩阵P

(5)得到降维后的新数据Y:
Y = P X Y = PX Y=PX
以上也仅仅是列出了PCA的主要步骤,在实际工作中,花费时间最多的往往是协方差矩阵的分解,这往往要花费很多的时间来实现。本文不做细致描述。

4. K的选取

PCA的原理是,为了将数据从n维降低到k维,需要找到k个向量,用于投影原始数据,是投影误差(投影距离)最小。

主成分误差

用公式来表示,如下:
1 m ∑ i = 1 m ∥ x ( i ) − x a p p r o x ( i ) ∥ 2 1 m ∑ i = 1 m ∥ x ( i ) ∥ 2 ≤ 0.01 \frac{\frac{1}{m} \sum_{i=1}^{m}\left\|x^{(i)}-x_{a p p r o x}^{(i)}\right\|^{2}}{\frac{1}{m} \sum_{i=1}^{m}\left\|x^{(i)}\right\|^{2}} \leq 0.01 m1i=1m x(i) 2m1i=1m x(i)xapprox(i) 20.01
其中,m代表特征的个数。分子表示原始点与投影点之间的距离之和,而误差越小,说明降维后的数据越能完整表示降维前的数据。如果这个误差小于0.01,说明降维后的数据能保留99%的信息。

实际应用中,我们一般根据上式,选择能使误差小于0.01(99%的信息都被保留)或0.05(95%的信息都被保留)的k值。

在对协方差矩阵做SVD分解时,我们可以得到特征值矩阵S,PCA误差的表达式等效于下式:
1 − ∑ 1 k S i ∑ 1 m S i ≤ 0.01 1-\frac{\sum_{1}^{k} S_{i}}{\sum_{1}^{m} S_{i}} \leq 0.01 11mSi1kSi0.01
通过定义降维后数据包含的信息占原始数据信息的比重来确定K。

主成分分析提取出的方差最大的信息,其最大意义在于方差最大化的约束,将使得提取出的特征最大程度反映原始数据中的信息。主成分分析的根本手段在于提取样例中体现各自特定的信息,用术语说就是使得所有样例之间差异最大化的信息。

5. 思考与应用

(1)通过PCA降维之后的各个主成分之间是正交的,可以很好的解除线性相关,但是对于高阶相关性就没有办法了,对于存在高阶相关性的数据,可以考虑Kernel PCA,通过Kernel函数将非线性相关转为线性相关。另外,PCA假设数据各主特征是分布在正交方向上,如果在非正交方向上存在几个方差较大的方向,PCA的效果就大打折扣了。

(2)各个主成分特征是原始特征的线性组合,其含义具有一定的模糊性,不如原始样本特征的解释性强。主成分只是由原来的坐标维度线性相加的结果,但加出来之后它到底是啥就不好说了

(3)PCA降维的标准是选取令原数据在新坐标轴上方差最大的主成分,方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。而且无论怎样,PCA做的都是有损压缩,难免会损失一些信息。

(4)在设计一个数学模型时,我们有时列举的项目计划一开始就包括了运用pca来降维,但是这是不可取的做法。我们应该首先考虑的是,不使用pca的情况下,整个系统会得到什么结果,而不是一开始就花费大量时间去运用pca降训练集降维。另外,在训练集中找出PCA的主成分,(可以看做为映射 mapping),然后应用到测试集和交叉验证集中。而不是对所有数据集使用PCA然后再划分训练集,测试集和交叉验证集。

(5)PCA有降维的效果,但它并不适合取处理过拟合问题,因为PCA会导致一部分原始数据特征的丢失,即使有可能效果不错,但更应该选择使用正则化这个方法。

(6)大部分时候,PCA能不用就不用。PCA算法比较好的应用是数据的压缩和高维数据的降维可视化。而更多情况下,刻意的PCA未必能取得良好的效果。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

⁠脱欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值