主成分分析(评价 / 降维) · 深度手册
分类:评价类 | 难度:★★☆ 进阶 | 编号:
pca_eval
一、这是什么(一句话用途)
多指标压缩成少数综合指标(降维 + 评价)
二、核心思想
主成分分析(PCA)的本质是坐标变换:把原来相关的多个指标,旋转投影到一组新的、彼此正交(不相关)的坐标轴上,并且让第一个新轴指向数据方差最大的方向(携带信息最多),第二个轴在与第一个垂直的方向上方差次大……如此下去。前 个新轴(主成分)就能以远少于原指标的个数保留绝大部分信息。在评价里,它既解决了多重共线性,又自动给出"综合得分";在降维里,它是最常用的特征压缩手段。
三、数学原理与推导
标准化 (零均值)。协方差矩阵 (或相关阵)。对其特征值分解:
第 个主成分方向即对应特征向量 ,主成分得分 。第 主成分的贡献率:
累计贡献率 通常取 (或 )时保留前 个主成分,实现降维。主成分含义由载荷 中绝对值大的原变量解释。
四、建模 / 求解步骤
- 标准化
- 算协方差 / 相关矩阵
- 求特征值与特征向量
- 按贡献率排序取前 k
- 得主成分得分
五、关键公式速查
贡献率=λ_i/Σλ_j;累计 ≥ 85% 通常取够
六、典型示例
10 个经济指标 → 压成 2~3 个主成分 → 用于评价或回归。
完整算例(数字演示,照着算一遍)
场景:6 样本、4 指标(身高/体重/肺活量/握力)降维。
相关矩阵特征值 λ=(2.6, 0.9, 0.3, 0.2),贡献率=(0.65, 0.225, 0.075, 0.05)。
结论:取前 2 个主成分,累计贡献率 0.875≥0.85,可用 2 维综合得分替代 4 指标;第一主成分主要由身高+体重+肺活量高载荷解释。
七、Python 实现示例
import os, numpy as np
import pandas as pd
HERE = os.path.dirname(os.path.abspath(__file__))
df = pd.read_csv(os.path.join(HERE,"..","datasets","pca_eval.csv"))
X = df.drop(columns=["sample"]).to_numpy(dtype=float)
X = (X-X.mean(0))/X.std(0)
Cov = np.cov(X.T)
lam, vec = np.linalg.eigh(Cov)
order = np.argsort(lam)[::-1]
lam = lam[order]; vec = vec[:, order]
print("特征值:", np.round(lam,3))
print("贡献率:", np.round(lam/lam.sum(),3))
k = int((lam.cumsum()/lam.sum()>=0.85).argmax()+1)
print("取前 %d 个主成分即可保留>=85%% 信息"%k)
Z = X @ vec[:, :k]
print("前2主成分得分(前5样本):\n", np.round(Z[:5],3))
配套文件:
py_pca_eval.py(需 numpy / pandas;与下方数据集配套练习)
八、MATLAB 实现示例
%% 主成分分析示例(MATLAB/Octave)
df = readtable('..\datasets\pca_eval.csv');
X = table2array(df(:,2:end));
X = (X-mean(X,1))./std(X,1);
[Cov,~] = cov(X);
[vec,lam] = eig(Cov); lam = diag(lam);
[lam,order] = sort(lam,'descend'); vec = vec(:,order);
fprintf('贡献率: '); disp(lam/sum(lam));
Z = X*vec(:,1:2);
disp(Z(1:5,:));
配套文件:
m_pca_eval.m(基础 MATLAB / Octave 即可运行)
九、练手数据集(可下载)
10 个样本在 6 个相关变量上的取值。用于 PCA 降维,看前几个主成分能否保留 85% 以上信息。
- 字段:sample, v1, v2, v3, v4, v5, v6
- 行数:10 行
- 下载:
pca_eval.csv
十、常见误区与避坑清单
- 必须标准化(量纲不同)
- 主成分含义需结合载荷解释
- 样本数应远大于指标数
十一、结果怎么解读
得分越高综合表现越好;看载荷解释主成分含义。
十二、常与谁搭配
可做主成分回归(见 pca_reg)。
十三、论文写作技巧(怎么把它写进论文)
把 主成分分析(评价 / 降维) 写进论文,核心不是堆公式,而是讲清「为什么用它、结果怎么呈现、如何对比」三件事。
1. 动机怎么写(为什么用它而不是别的)
开篇点明研究对象存在「多指标、且指标间相互冲突」的取舍(如成本要低但质量要高),因此需要多准则决策方法(MCDM)。随后说明权重来源:可主观(专家两两比较 + 一致性检验)或客观(数据驱动赋权),并交代为什么选 主成分分析(评价 / 降维) 而非简单加权平均——例如它能兼顾理想解距离 / 降低人为主观偏差。这样评审一眼看懂你的评价逻辑。
2. 结果怎么写(图表与指标)
结果页放两张图最稳:① 各方案指标权重条形图(或熵权贡献);② 方案贴近度 / 综合得分排序表。若指标权重敏感,补一张「权重扰动 → 排序是否变」的敏感性分析,能显著提升结论可信度。
3. 可直接套用的写作话术
- 中文模板:针对<问题>,本文采用 主成分分析(评价 / 降维) 进行多指标压缩成少数综合指标(降维 + 评价)。该方法能够自动刻画<优势>,在处理<场景>时相较<对比方法>更具<特点>。
- 英文模板:To address
, we adopt 主成分分析(评价 / 降维) to 多指标压缩成少数综合指标(降维 + 评价). Benefiting from its ability to , it outperforms on .
4. 同类易踩的写作坑
别只给最终排名,要写出每一层的权重与中间矩阵;避免「我觉得」这类主观表述,改用「依据 CR<0.1 的一致性检验」等客观依据。
5. 典型论文段落范例(可直接参考 / 改写)
下面是一段可直接套用的论文表述,已按本算法定制,填空处(…)替换成你的真实数值即可。
针对供应商选择中成本、质量与交期相互冲突的多准则决策问题,本文采用 主成分分析(评价 / 降维) 计算各方案的贴近度并排序。为避免单一赋权带来的主观偏差,权重由熵权法给出,最终综合得分表明方案 S3 最优(C=0.82)。
To rank candidate suppliers under the conflicting criteria of cost, quality, and lead time, we adopt 主成分分析(评价 / 降维) to compute the closeness coefficient. Weights are derived from the entropy method, and the aggregated score identifies S3 as the best alternative (C=0.82).
十四、相关手册(延伸阅读)
- 主成分回归 · 经典模型
十五、本手册导航
本手册由「算法深度手册生成器」自动产出,配套提供 Python / MATLAB 双版本示例与可下载练手数据集。