公司动态
主成分分析PCA
主成分分析 (Principle Component Analysis简称为PCA) 是一种去除特征之间相关性以及进行特征压缩的方法。PCA将原特征空间的向量变换到另外一个空间变换后的特征向量为变换后空间的正交基为。一般有即特征空间的维度被压缩了。可以基于变换后的特征和正交基来重建原特征通过PCA方法进行的特征变换会使得特征重建的平方误差最小。先通过一个简单的例子来理解PCA。下图所示的数据在方向上的方差很小因此即使忽略也不会损失太多信息。因此可以将原特征变换为特征变换的方向只有1个即此时特征重建误差为实际上是数据沿方向的方差。再观察另外一个特征分布。这个分布沿方向的方差最大而沿着方向的方差较小而垂直于。此时特征重建的误差为数据沿方向的方差。其中是噪声项噪声越强相关性越低。import numpy as np import matplotlib.pyplot as plt #x np.random.rand(50) * 10 #y np.random.randn(50) * 0.2 x np.random.rand(80) * 8 5.5 y 0.5 * x 1 np.random.randn(80) * 0.4 print(x.mean(), y.mean()) # 绘制散点图 plt.scatter(x, y, colorblue, labelData Points) # 添加标题和标签 plt.title(Scatter Plot with Custom Axis Limits) plt.xlabel(x1-axis) plt.ylabel(x2-axis) plt.xlim(0, 16) plt.ylim(0, 12) plt.grid(True) plt.show()x2能被x1预测出来可以只保留一个特征即特征压缩。方式将原空间的特征向量投影到它方差最大的方向v1上需要通过对原来x的协方差矩阵做特征分解即和这个方向的单位向量做点积保障损失最小如果直接去掉一个特征损失会较大。在v1方向上的投影就叫主成分。先找数据方差最大的方向第一个主成分再找这个方向的正交垂直方向第二个主成分如果有多维就找剩下的正交方向上方差最大的方向其他主成分。如果特征分布在更高维度的空间那么若想找到使得重建误差最小的特征变换空间需要遵循以下步骤1.数据中心化设数据集X包含n个样本d个特征即其中每一行代表一个样本包含d个特征。首先对数据中心化即减去每个特征的均值2.计算协方差矩阵设表示的协方差矩阵协方差矩阵的元素反映了和之间的相关度即3.求解特征值和特征向量对协方差矩阵进行特征值分解其中是一个单位向量表示一个投影方向是特征值表示数据投影到之后在该方向上的数据方差。由于是一个对称矩阵所以肯定可以进行特征值分解最多可以分解出n个和各个投影方向之间是互相正交的。注两个单位向量和正交的充要条件是两者的点积为0。4.选择主成分按照特征值大小排序选择前d个最大特征值所对应的特征向量形成投影矩阵5.特征投影将原始数据投影到新空间ZXW其中Z是绛维后的数据矩阵矩阵维度为。PCA应用将高维特征通过PCA降维为三维进行可视化展示空间中的分布。在古典的机器学习中希望每一维的特征之间没有相关性通过PCA变换消除各个特征之间的相关性后交给模型学习。