提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
十二、数据降维
压缩数据使得数据占用更少的计算机内存和硬盘空间 ,它还能给算法提速 ,它还能给算法提速 。如图,是将3维数据压缩成2维
也可以将其应用于数据可视化中:
例如:
通过将上述特征采用二维数据概括来进行可视化。
12.1 PCA
Principal Component Analysis(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。
PCA 所做的就是寻找 一个投影平面 ,对数据进行投影, 使得这个能够最小化 。另外, 在应用PCA之前通常的做法是先进行均值归一化和特征规范化 ,使得特征x1和x2均值为0, 数值在可比较的范围之内。
我们有 n 维的数据想降到 k 维 。在这种情况下, 我们不仅仅只寻找单个的向量 来对数据进行投影 ,我们要找到 k 个方向
来对数据进行投影 ,从而最小化投影误差。补充:PCA与RL(线性回归)差别: PCA和LR是不同的算法,PCA计算的是投影误差,而LR计算的是预测值与实际值的误差。
PCA中只有特征没有标签数据y,LR中既有特征样本也有标签数据。
PCA步骤如下:
1.数据预处理
我们需要进行数据归一化,通过计算出 每个特征的均值 μ 然后我们用 x - μ 来替换掉 x 这样就使得 所有特征的均值为0,然后将该值除以标准值或者范围值(最大-最小)
2.计算协方差矩阵:
3.利用奇异值分解分解协方差矩阵:
选择前k列:
得到了降维后的数据。
总结:
1.对数据进行均值归一化,确保每一个特征的均值为0,根据实际情况看是否做特征缩放,以使得所有特征之间具有比较行。
2.计算所有样本之间的协方差矩阵
3.利用奇异值分解对协方差矩阵进行分解求出新的特征向量空间
4.然后取前k个向量作为新的特征向量空间,将原始特征空间中的数据样本x转化为新特征空间中的新的数据样本z。(注意不包括偏差项x0x0)
12.2 PCA分析
如何将压缩后的数据转化为开始的高维数据?
公式如下:
如何选择主成分的数量k?
为了简化计算,我们可以用如下方法:
当用SVD对样本之间的协方差矩阵进行计算时,可以求出协方差矩阵的奇异值Sij
PCA应用:
1.利用PCA加速监督学习算法
具体步骤如下:
1)将训练样本的特征向量提取出来(不包括标签数据)
2)运行PCA将原始训练样本x(1),x(2),x(3),…x(m)(x∈Rn)x(1),x(2),x(3),…x(m)(x∈Rn)映射到降维后新数据样本z(1),z(2),z(3),…z(m)(z∈Rk)z(1),z(2),z(3),…z(m)(z∈Rk)中
3)将新的训练样本和标签数据重新组合重新的训练样本进行学习求解最优参数θ
4)如果有新样本加入,则首先要对新样本进行PCA映射,然后将得到的新样本z代入到模型中进行计算
PCA只运行到训练样本中,不用在交叉验证数据集和测试数据集中,当求得了映射关系后,可以将这种关系直接应用到交叉验证数据集和测试数据集中
2.数据压缩:
1)压缩数据,减小存储空间和内存空间
2)加速学习算法
3)可视化
补充: 不建议利用PCA防止过拟合问题
PCA可以减少特征的数量(维数),所以在理论上讲可以防止过拟合问题,但是并不是最好的方法。最好的方法还是利用规则化参数对算法防止过拟合。
何时使用PCA?
并不是所有的问题都是要对原始数据进行PCA降维,首先应看在不使用PCA的情况下算法的运行情况,如果未达到所期望的结果,再考虑PCA对数据进行降维。