PLSRegression-偏最小二乘(PLS)
偏最小二乘回归(Partial Least Squares Regression, PLS)是一种同时处理多重共线性与高维特征问题的监督学习方法。其核心思想是在自变量矩阵 X 与因变量矩阵 Y 之间提取一组潜变量(成分),使这些潜变量既能充分解释 X 方差,又与 Y 具有较强相…
PLSRegression-偏最小二乘(PLS)
1. 方法概述
偏最小二乘回归(Partial Least Squares Regression, PLS)是一种同时处理多重共线性与高维特征问题的监督学习方法。
其核心思想是在自变量矩阵 \(X\) 与因变量矩阵 \(Y\) 之间提取一组潜变量(成分),使这些潜变量既能充分解释 \(X\) 方差,又与 \(Y\) 具有较强相关性。
设样本数为 \(n\),自变量维度为 \(p\),因变量维度为 \(q\),则 $$ X\in\mathbb{R}^{n\times p},\quad Y\in\mathbb{R}^{n\times q} \tag{1} $$
标准 PLS 分解写作 $$ X=TP^\top+E,\qquad Y=UQ^\top+F \tag{2} $$ 其中:
- \(T\in\mathbb{R}^{n\times a}\):\(X\) 得分矩阵(scores)
- \(U\in\mathbb{R}^{n\times a}\):\(Y\) 得分矩阵
- \(P\in\mathbb{R}^{p\times a}\):\(X\) 载荷矩阵(loadings)
- \(Q\in\mathbb{R}^{q\times a}\):\(Y\) 载荷矩阵
- \(E,F\):残差矩阵
- \(a\):提取成分数(\(a\le\min(p,n-1)\))
2. 数据预处理
在 PLS 建模前,通常对 \(X,Y\) 做中心化与标准化。若采用 Z-score 标准化: $$ \tilde x_{ij}=\frac{x_{ij}-\mu_{x_j}}{\sigma_{x_j}},\qquad \tilde y_{ik}=\frac{y_{ik}-\mu_{y_k}}{\sigma_{y_k}} \tag{3} $$
若存在缺失值,应先做删行或插补,确保参与建模的 \(X,Y\) 为完整矩阵。
3. NIPALS 成分提取
PLS 常用 NIPALS 迭代提取每个成分。对第 \(h\) 个成分(\(h=1,\dots,a\)):
3.1 权重与得分更新
$$ w_h=\frac{X_h^\top u_h}{u_h^\top u_h},\qquad w_h\leftarrow\frac{w_h}{\|w_h\|_2} \tag{4} $$ $$ t_h=X_h w_h \tag{5} $$ $$ c_h=\frac{Y_h^\top t_h}{t_h^\top t_h},\qquad c_h\leftarrow\frac{c_h}{\|c_h\|_2} \tag{6} $$ $$ u_h=\frac{Y_h c_h}{c_h^\top c_h} \tag{7} $$
3.2 收敛判据
$$ \|u_h^{(k)}-u_h^{(k-1)}\|_2<\varepsilon \tag{8} $$ 其中 \(k\) 为迭代轮次,\(\varepsilon\) 为容差。
3.3 载荷与去残差(deflation)
$$ p_h=\frac{X_h^\top t_h}{t_h^\top t_h},\qquad q_h=\frac{Y_h^\top t_h}{t_h^\top t_h} \tag{9} $$ $$ X_{h+1}=X_h-t_h p_h^\top,\qquad Y_{h+1}=Y_h-t_h q_h^\top \tag{10} $$
4. 回归系数与预测
令 $$ W=[w_1,\dots,w_a],\quad P=[p_1,\dots,p_a],\quad Q=[q_1,\dots,q_a] \tag{11} $$
PLS 旋转矩阵可写为 $$ R=W(P^\top W)^{-1} \tag{12} $$
回归系数矩阵 $$ B=RQ^\top \tag{13} $$
若已做标准化,则原尺度下预测为 $$ \hat Y=XB+b \tag{14} $$ 其中 \(b\) 为截距向量。
5. 变量重要性(VIP)
VIP 用于衡量各自变量对模型解释 \(Y\) 的贡献。设第 \(h\) 个成分对 \(Y\) 的贡献为 \(SSY_h\),则第 \(j\) 个变量的 VIP 为 $$ \mathrm{VIP}_j=\sqrt{ \frac{p\sum_{h=1}^{a}SSY_h\,w_{jh}^2} {\sum_{h=1}^{a}SSY_h} } \tag{15} $$ 通常认为 \(\mathrm{VIP}_j>1\) 的变量较重要。
6. 解释方差与累计解释率
对第 \(h\) 个成分,基于 deflation 前后平方和下降比例计算解释方差更稳健: $$ \mathrm{VarX}_h=\frac{\|X_h\|_F^2-\|X_{h+1}\|_F^2}{\|X_1\|_F^2} \tag{16} $$ $$ \mathrm{VarY}_h=\frac{\|Y_h\|_F^2-\|Y_{h+1}\|_F^2}{\|Y_1\|_F^2} \tag{17} $$
累计解释率: $$ \mathrm{CumVarX}_k=\sum_{h=1}^{k}\mathrm{VarX}_h,\qquad \mathrm{CumVarY}_k=\sum_{h=1}^{k}\mathrm{VarY}_h \tag{18} $$ 理论上 \(\mathrm{CumVarX}_k,\mathrm{CumVarY}_k\in[0,1]\)。
7. 模型评价指标
设真实值为 \(y_i\),预测值为 \(\hat y_i\)(单目标情形):
$$ R^2=1-\frac{\sum_{i=1}^{n}(y_i-\hat y_i)^2}{\sum_{i=1}^{n}(y_i-\bar y)^2} \tag{19} $$ $$ \mathrm{RMSE}=\sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat y_i)^2} \tag{20} $$ $$ \mathrm{MAE}=\frac{1}{n}\sum_{i=1}^{n}|y_i-\hat y_i| \tag{21} $$ $$ R^2_{\mathrm{adj}}=1-(1-R^2)\frac{n-1}{n-a-1} \tag{22} $$
其中 \(a\) 为成分数。
8. 符号说明表
| 符号 | 含义 |
|---|---|
| \(n\) | 样本数 |
| \(p\) | 自变量个数 |
| \(q\) | 因变量个数 |
| \(a\) | PLS 成分数 |
| \(X,Y\) | 自变量矩阵、因变量矩阵 |
| \(T,U\) | \(X\) 得分、\(Y\) 得分 |
| \(P,Q\) | \(X\) 载荷、\(Y\) 载荷 |
| \(W\) | \(X\) 权重矩阵 |
| \(B\) | 回归系数矩阵 |
| \(\hat Y\) | 预测值矩阵 |
| \(\mathrm{VIP}_j\) | 第 \(j\) 个变量的 VIP 值 |
9. 论文写作模板
9.1 方法描述模板
“本文采用偏最小二乘回归(PLS)建立自变量与因变量之间的映射关系。首先对样本进行预处理与标准化(式(3)),随后基于 NIPALS 算法迭代提取潜变量(式(4)–式(10)),并由旋转矩阵与载荷矩阵构建回归系数(式(12)–式(14))。模型性能采用 \(R^2\)、调整 \(R^2\)、RMSE 与 MAE 评价(式(19)–式(22)),并结合 VIP 指标识别关键解释变量(式(15))。”
9.2 结果解释模板
结果部分可写为:结果显示,模型在测试集上 \(R^2=\cdots\)、RMSE=\(\cdots\)、MAE=\(\cdots\)。前 \(a\) 个成分对 \(Y\) 的累计解释率为 \(\mathrm{CumVarY}_a=\cdots\)(式(18))。VIP 排名前列变量为 \(\cdots\),说明其对响应变量变化具有主要贡献。
9.3 图表说明模板
- 图 1:PLS score plot(样本在潜变量空间的投影)
- 图 2:PLS loading plot(变量在潜变量空间的载荷)
- 图 3:预测值与真实值对比图
- 图 4:残差诊断图(残差分布、残差-拟合、Q-Q)
- 表 1:模型参数与评价指标
- 表 2:解释方差与累计解释率
- 表 3:VIP 与回归系数排序
10. 使用与报告注意事项
- 成分数不宜过大,建议结合交叉验证与累计解释率共同确定。
- 报告解释方差时应明确采用的定义(本实现采用 deflation 平方和比例,累计值在 \([0,1]\))。
- VIP 与回归系数需结合业务含义解释,避免仅依据阈值机械筛选。
- 论文中建议正文放核心公式与主结果表,详细中间矩阵可附录展示。
11. 与代码实现的对应关系
本算法在程序中由 具体的算法2/PLSRegression-偏最小二乘(PLS)/core/calculator.py 实现,并配套绘图模块输出得分图、载荷图、预测图和残差诊断图。程序产物已经天然适合论文按“建模设定—成分解释—变量重要性—预测表现”展开。
11.1 程序实际导出的工作表
Parameters:模型参数与成分数;Raw_Preview:原始数据预览;Processed_Preview:预处理后数据预览;Preprocess_Info:样本清洗与特征处理信息;X_Scores:样本在潜变量空间的得分;X_Loadings:变量在潜变量空间的载荷;Coefficients:回归系数;VIP:变量重要性排序;Evaluation:\(R^2\)、调整 \(R^2\)、RMSE、MAE 等指标;Explained_Variance:解释方差与累计解释率;Predictions:真实值、预测值、残差;Charts_Index:图表索引。
11.2 程序实现中值得写入论文的点
- PLS 的得分、载荷、VIP 和预测结果都已单独落表,无需论文阶段再手工拆分;
- 若是多目标回归,
Coefficients会按目标维度展开; Charts_Index对应图通常覆盖 score/loadings、预测对比、残差诊断,适合主文和附录分层使用;Preprocess_Info建议直接作为方法部分的数据处理依据。
12. 导出 Sheet 与公式一一对应(可直接写入论文)
下表对应程序导出的 Excel 工作表(PLS分析结果_*.xlsx),可直接用于“表-公式-解释”联动写作。
| Sheet 名称 | 对应公式 | 论文中可写内容 |
|---|---|---|
Parameters |
式(1)、式(3) | 样本规模、变量集合、成分数、是否标准化等建模设定。 |
Raw_Preview |
式(1) | 原始样本的观测结构与变量定义。 |
Processed_Preview |
式(3) | 预处理后数据形态(缺失处理、标准化后可建模样本)。 |
Preprocess_Info |
式(3) | 清洗删除行数、最终样本量、特征数。 |
X_Scores |
式(2)、式(5) | 样本在潜变量空间的得分 \(T\),用于聚类/分布解释。 |
X_Loadings |
式(2)、式(9) | 变量在潜变量上的载荷 \(P\),用于解释成分含义。 |
Coefficients |
式(12)–式(14) | 回归系数 \(B\) 与方向/强度解释。 |
VIP |
式(15) | 变量重要性排序,\(\mathrm{VIP}>1\) 常视为关键变量。 |
Evaluation |
式(19)–式(22) | 拟合优度与误差指标(\(R^2\)、调整\(R^2\)、RMSE、MAE)。 |
Explained_Variance |
式(16)–式(18) | 各成分解释方差与累计解释率,说明成分保留合理性。 |
Predictions |
式(14)、式(20)、式(21) | 真实值/预测值/残差明细,用于误差分析与图表复核。 |
Charts_Index |
式(5)、式(9)、式(14)、式(21) | 图表文件索引;可对应 score/loading/预测对比/残差诊断图。 |
12.1 推荐论文表述顺序(与导出结果一致)
Parameters+Preprocess_Info:说明数据来源、变量、样本与预处理。Evaluation+Explained_Variance:先报告性能,再说明成分解释能力。VIP+Coefficients:解释关键影响变量及影响方向。Predictions+Charts_Index对应图:做拟合效果与残差稳健性说明。
13. 单篇终审补充
13.1 图题与表题对齐建议
- 本文档应优先对应真实算法目录
具体的算法2/PLSRegression-偏最小二乘(PLS)。 - 代表性结果目录建议绑定
具体的算法2/PLSRegression-偏最小二乘(PLS)/results/pytest_ui_pls_test_window2_regression_robust12_20260329_165410,因为该目录同时具备xlsx + 图 + repro。 - 表题应直接对应该目录下
PLS分析结果_20260329_165413.xlsx的真实工作表:Parameters、Raw_Preview、Processed_Preview、Preprocess_Info、X_Scores、X_Loadings、Coefficients、VIP、Evaluation、Explained_Variance、Predictions、Charts_Index。 - 图题应优先绑定同目录的真实图:
01_score_plot.png、02_loading_plot.png、03_biplot.png、04_pred_vs_actual.png、05_variable_importance.png、06_true_vs_pred_line.png、07_residual_diagnostics.png。
13.2 终审说明
- 当前 PLS 文档可以使用单个 UI 结果目录形成完整证据链,较适合作为论文示例目录。
- 复现脚本可直接对应
repro_pls_20260329_165410.py,其SRC_FILE写法为repro_inputs/sample_data.csv,属于“结果目录下repro_inputs相对路径复现”口径。 - 目录中同时存在
PLS分析结果_20260329_165413.xlsx与pytest_ui_pls_test_window2_regression_robust12_20260329_165410.xlsx两个表,正文若引用文件名,建议以前者作为正式分析结果表,后者视为测试链路产物。
13.3 全量强化补充
- 当前 PLS 文档应绑定真实算法目录
具体的算法2/PLSRegression-偏最小二乘(PLS),代表性结果目录为具体的算法2/PLSRegression-偏最小二乘(PLS)/results/pytest_ui_pls_test_window2_regression_robust12_20260329_165410。 - 该目录内真实存在两份 xlsx:
PLS分析结果_20260329_165413.xlsx与pytest_ui_pls_test_window2_regression_robust12_20260329_165410.xlsx。两者当前工作表一致,均为Parameters、Raw_Preview、Processed_Preview、Preprocess_Info、X_Scores、X_Loadings、Coefficients、VIP、Evaluation、Explained_Variance、Predictions、Charts_Index。 - 当前目录中的主图为
01_score_plot.png、02_loading_plot.png、03_biplot.png、04_pred_vs_actual.png、05_variable_importance.png、06_true_vs_pred_line.png、07_residual_diagnostics.png,全部与工作簿同层放置。 - 该目录同时包含
repro_pls_20260329_165410.py与repro_inputs/sample_data.csv,脚本关键输入写法为SRC_FILE = 'repro_inputs/sample_data.csv'。因此 PLS 属于“单目录内主结果 + 脚本 +repro_inputs”的标准复现结构。 - 对论文或用户文档而言,应优先把
PLS分析结果_20260329_165413.xlsx作为正式分析结果表,把pytest_ui_pls_test_window2_regression_robust12_20260329_165410.xlsx视为测试链路副本或 UI 链路结果记录。两者不应在正文里被当作两次不同模型输出。 - 结合真实目录结构,
Charts_Index适合作为图号与文件名索引;Evaluation和Explained_Variance适合作为正文主表;X_Scores、X_Loadings、VIP、Coefficients适合作为解释潜变量和变量重要性的补充表。
14. 软件实现核查补充(2026-07)
- 当前实现的主结果目录应写作
具体的算法2/PLSRegression-偏最小二乘(PLS)/results/pytest_ui_pls_test_window2_regression_robust12_20260329_165410,主工作簿以PLS分析结果_20260329_165413.xlsx为准。 - 正文应围绕
Parameters、Raw_Preview、Processed_Preview、Preprocess_Info、X_Scores、X_Loadings、Coefficients、VIP、Evaluation、Explained_Variance、Predictions、Charts_Index来写,不要把 UI 测试副本当成另一套算法输出。 - 图证应对应同层
01_score_plot.png、02_loading_plot.png、03_biplot.png、04_pred_vs_actual.png、05_variable_importance.png、06_true_vs_pred_line.png、07_residual_diagnostics.png。 repro_pls_20260329_165410.py + repro_inputs/sample_data.csv属于标准目录内复现口径,文中可直接按这个路径写,不要写成别的模块目录路径。