MCM520 ← 资料站首页 主成分分析(评价 / 降维) · 深度手册 打开交互阅读器 →

主成分分析(评价 / 降维) · 深度手册

分类:评价类 | 难度:★★☆ 进阶 | 编号:pca_eval

一、这是什么(一句话用途)

多指标压缩成少数综合指标(降维 + 评价)

二、核心思想

主成分分析(PCA)的本质是坐标变换:把原来相关的多个指标,旋转投影到一组新的、彼此正交(不相关)的坐标轴上,并且让第一个新轴指向数据方差最大的方向(携带信息最多),第二个轴在与第一个垂直的方向上方差次大……如此下去。前 kk 个新轴(主成分)就能以远少于原指标的个数保留绝大部分信息。在评价里,它既解决了多重共线性,又自动给出"综合得分";在降维里,它是最常用的特征压缩手段。

三、数学原理与推导

标准化 XX(零均值)。协方差矩阵 Σ=1m−1XTX\Sigma=\frac{1}{m-1}X^T X(或相关阵)。对其特征值分解:

Σ=QΛQT,Λ=diag(λ1,…,λn), λ1≥⋯≥λn≥0 \Sigma=Q\Lambda Q^T,\qquad \Lambda=\mathrm{diag}(\lambda_1,\dots,\lambda_n),\ \lambda_1\ge\cdots\ge\lambda_n\ge0

第 kk 个主成分方向即对应特征向量 qk\mathbf{q}_k,主成分得分 Zk=XqkZ_k=X\mathbf{q}_k。第 kk 主成分的贡献率:

ηk=λk∑j=1nλj \eta_k=\frac{\lambda_k}{\sum_{j=1}^n\lambda_j}

累计贡献率 ∑t=1kηt\sum_{t=1}^k\eta_t 通常取 ≥0.85\ge 0.85(或 0.900.90)时保留前 kk 个主成分,实现降维。主成分含义由载荷 qk\mathbf{q}_k 中绝对值大的原变量解释。

四、建模 / 求解步骤

  1. 标准化
  2. 算协方差 / 相关矩阵
  3. 求特征值与特征向量
  4. 按贡献率排序取前 k
  5. 得主成分得分

五、关键公式速查

贡献率=λ_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 双版本示例与可下载练手数据集。