一口气读懂 PCA 主成分分析:从原理到代码,本科生/研究生都能彻底学会
一口气读懂 PCA 主成分分析从原理到代码本科生/研究生都能彻底学会大家好今天我们用最通俗、最详细、最不绕弯子的方式把PCA主成分分析讲明白。不管你是刚接触机器学习的本科生还是做实验、写论文需要降维的研究生看完这篇文章你以后遇到高维数据再也不会头疼。全文结构一句话PCA 到底是干嘛的为什么要用 PCA3 个最真实的理由PCA 最核心的原理大白话版数学原理一步步讲不跳步代码实战鸢尾花数据集 可视化PCA 优缺点 适用场景面试/论文直接用一、PCA 到底是什么一句话讲明白PCA 把一堆复杂、高维、冗余的数据压缩成少数几个“最关键”的维度同时尽量不丢信息。更通俗一点你有 100 个特征太乱、太冗余、太占内存PCA 帮你找出最重要的 2 个或 3 个方向把所有数据投影上去结果数据变简单了关键信息还在二、我们为什么一定要用 PCA3 个真实理由1. 特征太多、太冗余比如你有身高、体重、肩宽、腰围、臀围……这些特征高度相关其实只需要 1~2 个“体型维度”就能表达。2. 数据可视化人类只能看懂2 维 / 3 维的图。如果你有 10 维、20 维数据不降到 2 维根本画不出来。3. 提升模型速度、防止过拟合维度越少模型跑得越快也不容易乱学习噪声。三、PCA 最核心的思想大白话不讲公式想象你有一堆数据点像一个拉长的土豆/云朵第一主成分PC1数据拉得最长、分布最开的那个方向。→ 包含最多信息、最大方差。第二主成分PC2和 PC1垂直正交且是数据第二长的方向。后面所有主成分依次正交方差越来越小。我们只保留前 2~3 个主成分就够表达 95% 以上的信息四、PCA 数学原理一步一步讲最详细版下面内容论文可直接引用且本科生完全能看懂。步骤 1数据标准化 / 中心化必须做PCA 极度依赖“零均值”。公式每个特征减去它自己的均值X~X−μ\tilde{X} X - \muX~X−μ目的让数据中心在原点避免均值影响方差计算。步骤 2计算协方差矩阵协方差矩阵用来衡量特征之间的线性相关程度公式C1n−1X~⊤X~C \frac{1}{n-1} \tilde{X}^\top \tilde{X}Cn−11X~⊤X~这个矩阵非常关键对角线每个特征自己的方差非对角线特征之间的相关性步骤 3特征值分解PCA 最核心对协方差矩阵做分解CviλiviC v_i \lambda_i v_iCviλiviλ特征值表示这个方向有多少方差多少信息v特征向量主成分的方向步骤 4按特征值从大到小排序特征值越大这个方向越重要步骤 5数据投影降维完成把原始数据投影到前 k 个主成分上ZX~⋅VkZ \tilde{X} \cdot V_kZX~⋅Vk五、一句话总结 PCA 流程中心化让均值0算协方差矩阵特征值分解得到主成分方向按方差大小排序投影降维 → 完成六、代码实战PCA 降维 可视化可直接复制我们用最经典的鸢尾花数据集4 个特征 → 降到 2 个主成分 → 画图。importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimportseabornassnsfromsklearn.datasetsimportload_irisfromsklearn.decompositionimportPCAfromsklearn.preprocessingimportStandardScaler# 1. 加载数据irisload_iris()Xiris.data yiris.target feature_namesiris.feature_names target_namesiris.target_names# 2. 标准化PCA 必须步骤scalerStandardScaler()X_scaledscaler.fit_transform(X)# 3. PCA 降维4 维 → 2 维pcaPCA(n_components2)X_pcapca.fit_transform(X_scaled)# 4. 查看方差贡献率最重要print(PC1 方差贡献率:,round(pca.explained_variance_ratio_[0],3))print(PC2 方差贡献率:,round(pca.explained_variance_ratio_[1],3))print(累计方差贡献率:,round(sum(pca.explained_variance_ratio_),3))# 5. PCA 可视化plt.figure(figsize(10,6))fori,color,labelinzip(range(3),[red,blue,green],target_names):plt.scatter(X_pca[yi,0],X_pca[yi,1],colorcolor,labellabel,s80,alpha0.7)plt.title(PCA 降维可视化4D → 2D,fontsize14)plt.xlabel(fPC1 ({pca.explained_variance_ratio_[0]:.2%}))plt.ylabel(fPC2 ({pca.explained_variance_ratio_[1]:.2%}))plt.legend()plt.grid(alpha0.3)plt.show()七、运行结果你会看到PC1 贡献约 72%PC2 贡献约 23%累计超过 95%也就是说只用 2 个维度就表达了原始 4 个维度 95% 以上的信息八、累计方差贡献率图论文必备pca_fullPCA().fit(X_scaled)cumulativenp.cumsum(pca_full.explained_variance_ratio_)plt.figure(figsize(10,5))plt.plot(range(1,5),cumulative,markero,linewidth2,colorpurple)plt.axhline(y0.9,colorred,linestyle--,label90% 信息)plt.title(累计方差贡献率)plt.xlabel(主成分数量)plt.ylabel(累计信息占比)plt.legend()plt.grid()plt.show()九、PCA 优点面试/论文直接写无监督降维不需要标签正交无冗余主成分之间互相独立速度极快只用到矩阵分解信息可量化方差贡献率告诉你保留了多少信息可视化神器任何高维数据都能降到 2/3 维画图十、PCA 缺点必须知道只能处理线性关系对尺度非常敏感必须标准化主成分不可直接解释不像原始特征那么直观对异常值敏感十一、PCA 最适合什么场景论文/比赛通用特征高度线性相关需要降维、可视化需要降噪、加速模型无标签数据十二、总结最精简一句话PCA 就是把高维、冗余、复杂的数据用少数几个最关键的正交方向压缩保留最多方差信息让数据变简单、可画、可跑模型。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2495118.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!