降维
降维,即数据压缩,将高维数据以一种低维数据做替代,例如将分布在空间/平面的点,降维分布到平面/线上,可以看成是一种映射关系。

上图即将数据从二维降到一维,即$x^{(i)}\in \mathbb{R}^2–>z^{(i)}\in \mathbb{R}$。

上图即将数据从三维降到二维,即$x^{(i)}\in \mathbb{R}^3–>z^{(i)}\in \mathbb{R}^2$。
数据压缩的好处:
减少计算机内存使用
加速算法的学习速度
数据可视化
选取特征进行数据降维后,通过可视化手段可以看出样本点的分布规律,进而对具有类似特点的样本点组成类。
主成分分析PCA
目的:最小化数据集中所有样本点到投影面的距离和。

所以选择橙色的投影面而非粉色。
流程:找到n个方向向量(主成分),将数据从m维降到n维,以最小化投影误差。
PCA与线性回归的区别

PCA没有标签y,任何一个特征$x_i$均同等重要,需要在其基础上进行主成分(方向)的寻找。最小化投影误差,而非像线性回归的误差函数——预测值与标签之间的方差。
算法流程
特征中心化
$\mu=\frac{1}{m}\sum_{i=1}^m x_j^{(i)} $
替换每个$x_j^{(i)}$为$x_j^{(i)}-\mu_j$
(可选)若特征的数值不在同一数量级,则需要归一化
$x_j^{(i)}<–\frac{x_j^{(i)}-\mu_j}{s_j} $
计算协方差矩阵$\Sigma $
$\Sigma=\frac{1}{m}\sum_{i=1}^n(x^{(i)})(x^{(i)})^T $
总共有m个样本,每个样本均有一个协方差矩阵,$\Sigma$即为对这m个协方差矩阵求均值。
选取$\Sigma$的k个特征向量为主成分
$[U,S,V]=svd(\Sigma)$,$eig(\Sigma)$均能返回特征向量
$U\in\mathbb{R}^{n\times n}–>U——{reduce}\in\mathbb{R}^{n\times k} $
得到降维结果
$U_{reduce}\in\mathbb{R}^{n\times k},X\in \mathbb{R}^n–>Z=U_{reduce}^TX\in\mathbb{R}^{k} $
主成分选择
目的:原向量与投影的矢量差最小
平均平方投影误差:$\frac{1}{m}\sum_{i=1}^m||x^{(i)}-x_{approx}^{(i)}||^2$
样本集的平均欧式范数:$\frac{1}{m}\sum_{i=1}^m||x^{(i)}||^2 $
选定一个阈值$\epsilon$和超参数$k$,满足
$$
\frac{\frac{1}{m}\sum_{i=1}^m||x^{(i)}-x_{approx}^{(i)}||^2}{\frac{1}{m}\sum_{i=1}^m||x^{(i)}||^2 }\leq\epsilon
$$
就能保证$1-\epsilon$的样本的特征可以被保留,以达到降维的目的。
实例分析:
对给定的超参数$k$,使用
[U,S,V]=svd(Sigma)
,得到
$$
S=diag([s_11,s_22,…,s_nn])
$$
则则需要选定最小的k,满足
$$
1-\frac{\sum_{i=1}^ks_{ii}}{\sum_{i=1}^ns_{ii}}\leq0.01
$$
故仅需保证
$$
\frac{\sum_{i=1}^ks_{ii}}{\sum_{i=1}^ns_{ii}}>0.99
$$
即可得到99%的信息保留。
原始数据的重构
重构是降维的逆过程,即从$z^{(i)}–>x^{(i)}$,由于$Z=U_{reduce}^TX$,所以$X$的重构为$X_{approx}=U_{reduce}Z$,示意图如下:
使用PCA的注意事项
- 先降维后训练
PCA只能先用训练集进行训练,由此定义了从x到z的映射后,再将映射应用到交叉验证集和测试集中。
- PCA是防止过拟合的方法?
通过减少特征数量,而降低了过拟合的可能性。但最好使用正则化的方法,其效果更好。PCA因为不关心y值,所有会丢失一些有效信息。
- 不应该优先考虑PCA
在应用PCA前,应先使用原始的x进行训练,只有在效果不太好的时候,再考虑用PCA降维。