主成分分析法 PCA
此系列笔记来源于
Coursera上吴恩达老师的机器学习课程
主成分分析法 PCA
数据压缩
对于一个多维度的特征量,我们可以进行压缩,来使得数据量减少
如:
数据可视化
对于下列数据,我们先将 变为了
随后作图
便能很清楚直观的了解到数据的一些信息
PCA
PCA的目的
PCA的目的就是去压缩数据或者可视化
在数据压缩时,如二维变为一维:
我们找到一个方向,即图中这条直线,随后将所有数据点投影到这条直线上。
我们令这个垂直的投影距离,即蓝色线段为投影误差,而PCA所做的就是去寻找令数据压缩后投影误差最小的这个方向\向量
可以推广到更高维度
将n维压缩到k维,我们找到k个向量,能让数据投影到这些向量上后,整体投影误差之和最小
PCA算法过程
1、我们先计算协方差矩阵 (注意与求和符号区分)
2、计算协方差矩阵的特征向量矩阵
这里可以调用函数 [U, S, V] = svd(Sigma);
而第一个U 即为我们所要的特征向量矩阵
假设我们要降到 k维,那么我只需选取前 k 个特征向量,并记为
这 k 个向量便是我们新的特征
3、计算 z
假设原始数据为 ,我们要将其变为 k维
另外因为,所以
压缩重建
在转化为后我们同样可以转化回去
选择主成分的数量 k
PCA是为了最小化平均平方映射误差
另外定义数据的总变差 Total variation:
我们要选择 最小的一个k,能满足:
用PCA的语言来说就是保留了99%的差异性
如果是
那么就是保留了95%的差异性
算法过程:

也就是遍历 k 从1开始,对于每个k 计算对应的数值然后看看是否满足下面的式子。但是这样的效率是十分低的。
我们用其他方法做:
1、[U, S, V] = svd(sigma)
2、这里的 S 是一个对角矩阵
Check的式子可以等价为
因此只需要逐渐增加k,并检查是否满足
加速学习算法
我们可以利用PCA 通过压缩数据的方法来加速算法
已知训练集 training set
我们先使用PCA来对训练集降维(不能对cv集 和 test集使用)
得到新训练集
训练集上的的映射关系 可以再用于cv集 和 test集
完成降维后,对新的数据集再运行原来的学习算法即可
PCA的应用
PCA的不恰当使用
1、用PCA去解决 过度拟合overfitting问题,更合适的方法是正则化
2、在设计一个机器学习系统前,我们不应该直接就将PCA列入步骤,如果不使用PCA,系统也能运行的话,那么PCA根本没有必要。而应当在运行速率较慢等问题下,再去运用PCA解决问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?