【机器学习笔记】PCA降维

降维

降维也是一种无监督学习问题。当有很多特征时,有一些特征会是冗余的,可以转化为更少的特征。
也可以用降维来压缩数据,减少内存空间。

一、数据压缩

【机器学习笔记】PCA降维
把3维的数据,映射到一个平面上,就转化为了2维的数据。

二、可视化数据

对于一个高达50维特征的数据集,我们不能直观地去绘制图像来观察数据,这时候就可以应用降维。
这时候可以将50维->2维,那就要用这2维特征来概括50维。例如一个国家的特征由GDP、人均GDP、环境、医疗等等,那么这时用国民幸福指数就能概括人均GDP、环境、医疗等特征,这样就把很多个特征概括成了一个特征。

三、PCA主成分分析法

1、什么是PCA
【机器学习笔记】PCA降维
原来是2维的数据,现在要降维,PCA就是要找到一条直线(一个向量),使得原来的点投影到这条直线上,并且使得投影距离的平方和最小
这个投影距离的平方和也可以称为:投影误差。(就是点到直线距离的平方和)
另外的,对于3D空间,就要找到一个平面(用两个向量表示)来投影。
【机器学习笔记】PCA降维
那么,PCA和线性回归是不一样的,虽然在2维的情况下也是找一条直线去拟合。
但是,两者的最小化目标不同。
【机器学习笔记】PCA降维
线性回归最小化的是垂直距离,也就是纵坐标的差。
PCA最小化的是点到直线的距离
此外,线性回归有y的概念,也就是输出。而PCA中,没有y,全是特征x1,x2…xn。

2、如何实现PCA
1)数据预处理
数据:x1x^1x2x^2x3x^3、…、xmx^m
要对数据进行均值标准化。
μj=1mm=1mxji{\mu}_j = {\frac{1}{m}}{\sum_{m=1}^m {x}_{j}^{i}},其中μj\mu_j表示所有样本第j个特征的均值。
然后用xjμjx_j-\mu_j来代替xji{x}_{j}^{i}这个特征(第i个样本的第j个特征)。
此时,对于该特征,所有样本的均值就是0。
另外,类似于特征缩放,不同的特征会有不同的取值范围,有些取值范围很大[1,10000],有些很小[0,1],那么这个时候就要用:xji=xjiμjsj{x}_{j}^{i}=\frac{{x}_{j}^{i}-\mu_j}{s_j},分母是特征j的标准差(也可以用最大值-最小值)。

2)计算
先找到映射向量(直线、平面等),再计算出映射后的点。
首先计算协方差,
Σ=1mi=1n(xi)(xi)T {\Sigma} = \frac{1}{m}\sum_{i=1}^n (x^i)(x^i)^T 其中,Σ{\Sigma}是大写的sigma,而不是求和标记。
然后再用 svd函数,求得矩阵U。
【机器学习笔记】PCA降维
【机器学习笔记】PCA降维
再从U中获取前K个列向量,组成一个矩阵(算是U的一个降维版本)
然后乘上x向量,得到最终的K维向量z。
【机器学习笔记】PCA降维

3、如何选择维数K
从K=1开始选择一个K使得,
【机器学习笔记】PCA降维
xapproxix_{approx}^i表示投影后的样本点。分子就表示:原来样本点到投影点的距离的平方和(也就是投影代价),分母表示:数据的总方差。

当然这个式子太复杂了,另外一个简便的计算方法:
前面协方差矩阵上应用svd函数计算出来的S矩阵,是一个对角矩阵。
【机器学习笔记】PCA降维
对于一个给定的K,可以计算
【机器学习笔记】PCA降维

四、降维后如何还原为原空间

还记得上面要得到映射向量z,
【机器学习笔记】PCA降维
那么要还原出x的话,就用Ureduce矩阵去乘z向量,可以知道Ureduce是nk的,z是k1的,因此得到n*1的x向量。

五、应用PCA

对于一个给定的带标签的数据集,
【机器学习笔记】PCA降维
首先先去掉标签,变成m个不含标签的数据。
然后进行PCA降维,得到低维的m个z向量。
【机器学习笔记】PCA降维
这样就获得了一个新的低维的数据集,此时再去训练拟合等,得到预测输出。
而对于一个新的样本x,同样也要先PCA降维,再放到预测输出函数中,得到输出值。
【注意】PCA仅仅运行在训练集数据上,而不用在交叉验证集或者测试集上。

六、不能用PCA去防止过拟合

也许会有效果,但是不建议这样做。
因为PCA在拟合的时候,是不依靠标签y的,因此PCA舍弃一些信息而不关心y,也就可能舍弃一些有价值的信息。相比之下,正则化的效果就更好,因此在最小化的过程中是知道y的,因此不太会舍弃一些有价值的信息。
所以PCA可以较好的提高学习速度,但是不适合去防止过拟合。