Ep 43 — 化学计量学:PCA、PLS 与多变量分析
系列:红外光谱百科:从原理到实战
篇章:第四篇 · 高级篇 — 前沿技术(后段第 3 集)
适合人群:分析化学/化学计量学/光谱学研究生、QC/QA 实验室负责人、想从"传统定量"过渡到"多变量定量"的红外使用者、农业/制药/食品行业的光谱建模人员
前置知识:Ep 18(谱图处理)、Ep 20(朗伯-比尔定律)、Ep 22(药物晶型)、Ep 25(食品掺假)、Ep 33(生物医学)、Ep 35(农业土壤 PLSR)、Ep 42(联用数据)
阅读时间:约 60 分钟
引子:从"单峰定量"到"全谱定量"的方法转变
1979 年,瑞典化学家 Svante Wold 与美国化学家 Bruce Kowalski 在 Anal Chem 上联合发表了一篇里程碑论文 [1],正式定义了 化学计量学(Chemometrics) —— "应用数学与统计学方法,从化学测量数据中提取最大信息"。同一时期,瑞典的 Wold 父子(Svante 与 Herman)与美国的 Martens 几乎同时独立提出了 偏最小二乘回归(Partial Least Squares, PLS) 算法 [2][3],从此开启了光谱分析的新纪元。
"Chemometrics is the science of relating measurements made on a chemical system to the state of the system via application of mathematical or statistical methods."
—— Massart D L et al. Chemometrics: A Textbook [4]
在红外光谱领域,化学计量学之所以"不可或缺",根源在于以下三个现实:
- 红外峰重叠严重:一张 4000–400 cm⁻¹ 的谱图,几乎找不到完全孤立的峰。如酰胺 I 带(1600–1700 cm⁻¹)包含蛋白质 α-螺旋、β-折叠、转角等多种二级结构的子峰;
- 基线漂移与散射:颗粒散射、KBr 吸湿会引起整条谱图倾斜,单峰定量受基体影响严重;
- 组分相互作用:混合物中各组分间氢键、偶极相互作用会改变峰位置与强度。
传统单峰定量(朗伯-比尔定律 A = εbc)在面对上述复杂性时力不从心。化学计量学的核心思想是:用全谱的所有数据点(数千个波数)联合建模,把噪声平均掉、把基体效应纳入模型、把重叠峰的隐藏信息提取出来 [4][5]。
本集我们将系统讲解红外化学计量学的核心方法:预处理 → PCA 探索性分析 → PLS 定量建模 → 模型验证 → 过拟合避免 → 开源工具实践。
一、数据预处理:化学计量学的"地基"
1.1 为什么预处理如此关键?
化学计量学有句行话:"Garbage in, garbage out"。预处理占整个建模工作量的 60–80%,预处理质量决定模型上限 [4][5][6]。
红外谱图的常见"瑕疵":
| 瑕疵类型 | 原因 | 影响 |
|---|---|---|
| 基线漂移 | 散射、KBr 吸湿、仪器漂移 | 单峰强度不可比 |
| 整体强度变化 | 样品厚度差异、ATR 接触压力 | 模型不可比 |
| 噪声 | 扫描次数不足、检测器噪声 | 模型过拟合 |
| 水汽干扰 | 大气水汽吸收 | 引入假峰 |
| 光谱区域无信息 | 4000–400 全谱中许多区域无化学信息 | 引入噪声变量 |
1.2 主流预处理方法
1.2.1 基线校正(Baseline Correction)
基线校正的目的是消除光谱的"非化学"信号 [6][7]。
- 多项式拟合(polynomial):用低阶多项式(≤ 3 阶)拟合谱图"谷底",差减得到基线校正谱;
- Rubber Band(橡皮筋):把谱图视为"凸包",沿底部拉伸一根"橡皮筋",弹回的曲线即为基线;
- ALS(Asymmetric Least Squares):Eilers 2005 年提出 [7],对噪声鲁棒、对宽峰保留好,是目前最受推崇的算法;
- arPLS(Asymmetrically Reweighted Penalized Least Squares):ALS 改进版,自动调整权重;
- Whittaker 滤波器:基于差分平滑与稀疏约束。
📦 推荐工具:pybaselines Python 库提供 200+ 种基线校正算法,是目前红外基线校正的"瑞士军刀" [8]。
from pybaselines import Baseline
import numpy as np
# 假设 wavenumber (1D), absorbance (1D) 已加载
baseline_fitter = Baseline(x=wavenumber)
bkg, params = baseline_fitter.asls(
absorbance, lam=1e7, p=0.01
) # ALS 算法
corrected = absorbance - bkg
1.2.2 SNV(Standard Normal Variate)
SNV 是消除样品整体强度差异与基线倾斜的经典方法 [5][6]:
$$ x_{\text{SNV}}(i) = \frac{x(i) - \bar{x}}{\sigma_x} $$
对每张谱图独立做均值中心化 + 标准化。SNV 不需要参考谱图,是 NIR/MIR 中应用最广的归一化方法。
1.2.3 MSC(Multiplicative Scatter Correction)
MSC 专门针对散射引起的基线倾斜 [5][6]:
- 计算所有样品的平均谱 $\bar{x}$;
- 对每个样品谱 x 做线性回归:$x = a + b \cdot \bar{x}$;
- 校正:$x_{\text{MSC}} = (x - a) / b$。
MSC vs SNV:两者效果相近,但 MSC 需要参考平均谱,SNV 更鲁棒。农业土壤光谱多用 SNV,聚合物光谱多用 MSC [5]。
1.2.4 求导处理(Derivative)
求导可同时消除基线漂移并增强峰分辨率 [6]:
- 一阶导数:消除常数基线,突出峰斜率变化;
- 二阶导数:消除线性基线,把重叠峰变成"反向峰",增强表观分辨率;
- Savitzky-Golay 求导:用低阶多项式局部拟合后求导,避免噪声放大。
from scipy.signal import savgol_filter
# 9 点窗 + 2 阶多项式 → 一阶导数
d1 = savgol_filter(absorbance, window_length=9, polyorder=2, deriv=1)
# 11 点窗 + 2 阶多项式 → 二阶导数
d2 = savgol_filter(absorbance, window_length=11, polyorder=2, deriv=2)
⚠️ 导数陷阱:求导会放大噪声,窗长与多项式阶数要谨慎选择——窗太短噪声爆炸,窗太长峰形失真。经验:窗长为峰半宽的 1–2 倍。
1.2.5 归一化(Normalization)
- 最大归一化:每张谱图除以其最大值;
- 面积归一化:每张谱图除以谱图总面积;
- ATR 校正:ATR 谱图的穿透深度随波长变化(长波更深),需做 ATR 校正:$A{\text{corr}} = A \cdot \nu / \nu{\text{ref}}$。
1.2.6 均值中心化(Mean Centering)
$$ x_{\text{mc}}(i) = x(i) - \bar{x}(i) $$
对每列(每个波数)减去该列均值。这是 PCA、PLS 的必做预处理,让算法聚焦于"变化"而非"绝对值"。
1.3 预处理组合策略
实际建模中通常组合使用多种预处理 [4][5]:
| 应用场景 | 推荐组合 |
|---|---|
| 土壤 SOM 定量(DRIFTS) | SNV + 一阶导数(S-G 9 点)+ 均值中心化 |
| 药物晶型识别(ATR) | 二阶导数(S-G 11 点)+ 均值中心化 |
| 食品掺假识别(ATR) | arPLS 基线 + SNV + 均值中心化 |
| 蛋白质二级结构(透射) | 二阶导数(无需 SNV)+ 均值中心化 |
| GC-FTIR 三维数据 | 行方向 SNV + 列方向均值中心化 |
表 1:典型应用场景的预处理组合推荐
💡 预处理不是越多越好:每一步预处理都可能丢失信息或引入偏差。建议先用最简单的组合(仅均值中心化),逐步加入 SNV/求导,对比模型性能,用验证集决定最终方案。
二、PCA:探索性分析与降维
2.1 PCA 原理
主成分分析(Principal Component Analysis, PCA) 是化学计量学的基础工具 [4][5][9]。其核心思想是:把高维数据(如 1000 个波数 × 100 个样品)降维到少数几个主成分(PC),同时保留尽可能多的方差。
数学上,对均值中心化后的数据矩阵 X(n×p,n 为样品数、p 为波数)做奇异值分解:
$$ X = U \cdot S \cdot V^T $$
其中:
- 得分(scores)T = U·S:n×k 矩阵,每个样品在每个主成分上的"得分";
- 载荷(loadings)P = V:p×k 矩阵,每个波数对每个主成分的"权重";
- 特征值(eigenvalues):S 的对角元素,反映每个 PC 解释的方差量。
2.2 PCA 的化学计量学应用
2.2.1 降维
红外谱图通常有 1000–3000 个波数点,但有效信息维度通常只有 5–20。PCA 把数据压缩为几个主成分 [9]:
- 前 3–5 个 PC 通常解释 > 90% 方差;
- 后续 PC 主要是噪声;
- 降维后模型更稳定、计算更快、可视化更容易。
2.2.2 聚类与异常值检测
得分图(scores plot) 把样品投影到二维(如 PC1 × PC2):
- 同类样品应聚集在一起;
- 不同类样品应分开;
- 远离群体的样品可能是异常值(outlier)。
异常值检测准则 [5][9]:
- Hotelling T²:在 PC1-PC2 平面上的马氏距离,超过 95% 置信椭圆为异常;
- Q 残差:模型未解释的方差,超出 95% 置信线为异常;
- 杠杆率(leverage):每个样品对模型的影响程度。
PC2
↑
3 + ●●●
| ●●●● ★
2 + ●●●●●● (异常值)
| ●●●●●
1 + ●●●
| (类别 A) ●●●
0 + ────────────●●●●●●────────→ PC1
| ●●●●●
-1+ ●●●●
| (类别 B)
-2+
图 1:典型 PCA 得分图(PC1 vs PC2),显示两类样品聚类与一个异常值
2.2.3 载荷解读
载荷图(loadings plot) 显示每个波数对 PC 的贡献:
- 载荷绝对值大的波数是该 PC 的"主要贡献者";
- 正负号相反的波数表示它们在该 PC 上反向变化;
- 用于解读 PC 的化学意义(如 PC1 可能代表"水分含量",PC2 代表"蛋白质含量")。
2.3 PCA 实战:橄榄油掺假识别
某实验室收集 100 份橄榄油样品(70 真品 + 30 掺假),ATR-FTIR 采集后做 PCA [10]:
- 预处理:arPLS 基线 + SNV + 均值中心化;
- PCA:保留前 5 个 PC,解释 95% 方差;
- 得分图:PC1 × PC2 真品与掺假品明显分离;
- 载荷图:PC1 主要贡献波数为 1745 cm⁻¹(甘油三酯 C=O)、3005 cm⁻¹(=C-H 顺式双键);
- 推断:掺假品在甘油三酯与不饱和脂肪酸特征峰上偏离真品;
- 应用:基于 PC1 + PC2 得分做判别阈值,准确率 96%。
🔗 延伸阅读:橄榄油的 C=O、C-H 等特征吸收详见 ftir.fun 羰基官能团页 与 ftir.fun 烷基 C-H 官能团页。
2.4 PCA 的局限
PCA 是无监督方法,不利用样品的标签信息(如真品/掺假):
- 当不同类样品在 PC1-PC2 上重叠时,PCA 无法区分;
- 解决方案:使用有监督方法(PLS-DA、SVM,见下文)。
三、PLS:定量校正模型
3.1 PLS 原理
偏最小二乘回归(Partial Least Squares, PLS) 是红外定量的"金标准" [2][3][5]。
PLS 在 PCA 的基础上同时对 X(光谱)和 y(参考值)做分解:
$$ X = T \cdot P^T + E, \quad y = T \cdot q + f $$
通过最大化 X 与 y 的协方差,PLS 找到既解释 X 方差又与 y 相关的潜在变量(latent variables, LVs)。
PLS 的优势:
- 处理 X 中高度共线的数据(相邻波数点高度相关);
- 处理 p >> n 的情况(波数多于样品数);
- 同时考虑 X 与 y 的关系,比 PCA-回归两步法更高效;
- 抗噪声能力强。
3.2 PLS 建模流程
完整 PLS 建模流程 [5][11]:
┌──────────────────────────────────────────┐
│ 1. 样品采集与划分 │
│ - 校正集 70% (n=70) │
│ - 验证集 30% (n=30) │
├──────────────────────────────────────────┤
│ 2. 预处理 │
│ - 基线 + SNV + 求导 + 均值中心化 │
├──────────────────────────────────────────┤
│ 3. 交叉验证确定最佳主成分数 │
│ - LOO(留一法)或 10 折 CV │
│ - 选择 RMSECV 最小的 LV 数 │
├──────────────────────────────────────────┤
│ 4. 用最佳 LV 数建立最终模型 │
│ - 用校正集训练 │
├──────────────────────────────────────────┤
│ 5. 外部验证 │
│ - 用验证集评估 │
│ - 计算 RMSEP、R²、RPD │
├──────────────────────────────────────────┤
│ 6. 模型维护 │
│ - 定期用新样品更新模型 │
└──────────────────────────────────────────┘
图 2:PLS 建模完整流程
3.3 模型评价指标
PLS 模型的常用评价指标 [5][11]:
| 指标 | 全称 | 含义 | 优秀标准 |
|---|---|---|---|
| R² | 决定系数 | 预测值与真实值的拟合程度 | > 0.90 |
| RMSEC | 校正集均方根误差 | 校正集的预测误差 | 越小越好 |
| RMSECV | 交叉验证均方根误差 | 交叉验证预测误差 | 越小越好 |
| RMSEP | 预测集均方根误差 | 外部验证预测误差 | 越小越好 |
| RPD | 残差预测偏差 | SD/RMSEP | > 3 优秀;> 5 可替代实验室方法 |
| Bias | 系统偏差 | 预测值平均偏移 | 应接近 0 |
| RER | 误差范围比 | (y_max − y_min)/RMSEP | > 10 优秀 |
表 2:PLS 模型评价指标(参考 Williams & Norris [11])
RPD(残差预测偏差) 是化学计量学最常用的"等级指标" [11]:
- RPD < 2:模型不可靠;
- RPD 2–3:模型可用,但精度有限;
- RPD 3–5:模型良好;
- RPD > 5:可替代实验室参考方法。
3.4 交叉验证:防止过拟合的关键
交叉验证(Cross-Validation, CV) 是选择最佳 LV 数的关键 [5][9]:
- 把校正集分为 K 折(典型 K = 10);
- 每次留 1 折作"内部验证",其余 K-1 折训练;
- 计算每个 LV 数下的 RMSECV;
- 选择 RMSECV 最小(或开始平缓)的 LV 数。
RMSECV
↑
高 │●
│ ●
│ ●
│ ● ← 最小值(最佳 LV 数)
│ ●●●●●● ← 平缓区
│
└──────────────→ LV 数
1 2 3 4 5 6 7 8 9 10
图 3:RMSECV 随 LV 数变化曲线。选择最小值附近的 LV 数,避免过拟合。
留一法(Leave-One-Out, LOO) 是 K = n 的极端情况:
- 优点:充分利用数据;
- 缺点:计算量大、容易低估误差;
- 推荐:当 n < 30 时用 LOO,否则用 10 折 CV。
3.5 PLS 实战:土壤有机碳预测
参考 Ep 35 案例 [12]:
- 样品:500 份澳大利亚土壤(CSIRO 数据集);
- 光谱:MIR-DRIFTS(4000–400 cm⁻¹,每 4 cm⁻¹ 一点共 900 点);
- 参考值:Walkley-Black 重铬酸钾氧化法测 SOM 含量;
- 预处理:SNV + 一阶导数(S-G 9 点)+ 均值中心化;
- 校正集:350 份;验证集:150 份;
- LV 数:10 折 CV 选择 8 个 LV;
- 结果:R² = 0.93, RMSEP = 0.32%, RPD = 3.6(达到"优秀"水平);
- 载荷分析:LV1 主要贡献波数为 2925/2850 cm⁻¹(CH₂),LV2 为 1720 cm⁻¹(C=O);
- 应用:模型用于澳大利亚农田 SOM 大规模普查。
🔗 延伸阅读:土壤有机质的红外特征详见 Ep 35,以及 ftir.fun 烷基 C-H 官能团页 与 ftir.fun 羰基官能团页。
3.6 PLS 的变种
- PLS-DA(判别分析):y 为分类标签(0/1),用于判别(如真品/掺假);
- PLS2:y 为多列矩阵,同时预测多个性质;
- N-PLS:用于三维数据(如 Ep 42 联用数据);
- SVM-PLS:结合支持向量机与 PLS,处理非线性问题;
- CARS-PLS:用竞争性自适应重加权采样选择关键波数,简化模型。
四、过拟合:化学计量学的"幽灵"
4.1 过拟合的症状
过拟合(overfitting) 是化学计量学最常见的陷阱 [5][11]:
- 校正集 R² 极高(> 0.99),但验证集 R² 大幅下降;
- RMSEC 远小于 RMSEP;
- 模型对训练数据"记忆"完美,但对未知数据预测能力差。
误差
↑
│ RMSEC ●●●●●●●●●● ← 持续下降
│
│ RMSECV ●●●●●●↓↑↑ ← 在某点后开始上升!
│ ↑
│ 最佳 LV 数
│
└──────────────────→ LV 数
图 4:过拟合的典型症状——RMSEC 持续下降但 RMSECV 在最佳 LV 数后反弹
4.2 过拟合的原因
- LV 数过多:把噪声也"建模"了;
- 样品数太少:n < 10 × LV 数;
- 预处理过度:求导次数过多、窗长过短;
- 波数选择不当:包含太多噪声区;
- 校正集与验证集分布不一致:如校正集温度 20°C,验证集温度 30°C。
4.3 避免过拟合的策略
| 策略 | 描述 |
|---|---|
| 用 RMSECV 选 LV 数 | 选最小 RMSECV 对应的 LV 数,而非最高 R² |
| 外部验证集 | 留出 20–30% 样品做独立验证 |
| 增大样品数 | n ≥ 10 × LV 数,最好 n ≥ 100 |
| 减少波数 | 用 CARS、GA 等变量选择方法去除噪声区 |
| 预处理简化 | 用最简单的预处理组合 |
| 真实样品多样性 | 校正集覆盖未来实际应用场景 |
表 3:避免过拟合的策略
4.4 模型可转移性
模型在不同仪器、不同实验室间的"可转移性"是化学计量学的另一个挑战 [5]:
- 同一样品在不同仪器上的谱图略有差异(仪器响应差异);
- 解决方案:DS(Direct Standardization)、PDS(Piecewise Direct Standardization) 算法把"从仪器"谱图标准化到"主仪器";
- SBC(Slope/Bias Correction):简单斜率/偏置校正,适用于差异较小的情况。
五、其他多变量分析方法
5.1 SIMCA
SIMCA(Soft Independent Modeling of Class Analogy) 是基于 PCA 的有监督判别方法 [9]:
- 对每个类别分别建立 PCA 模型;
- 新样品计算到每个类别的"距离"(剩余方差与杠杆率);
- 距离最小的类别为预测类别;
- 优势:每个类独立建模,可处理类不平衡;
- 应用:药物多晶型识别。
5.2 SVM
支持向量机(Support Vector Machine, SVM) 是机器学习方法(详见 Ep 44)[13]:
- 通过核函数(RBF、多项式)处理非线性;
- 在光谱分类中表现优异;
- 适合小样本(n < 100);
- 缺点:参数调优复杂。
5.3 MCR-ALS
MCR-ALS(Multivariate Curve Resolution) 用于分解混合物光谱 [14]:
- 不需要参考值,纯软约束分解;
- 输出每个组分的纯谱 + 浓度曲线;
- 应用:Ep 42 联用数据分析。
5.4 PARAFAC
PARAFAC(Parallel Factor Analysis) 用于三维数据 [14]:
- 类似 PCA,但用于三维矩阵;
- 输出三个"载荷向量";
- 应用:TGA-FTIR、GC-FTIR、EEM 荧光数据分析。
5.5 ANN(人工神经网络)
ANN 在 1990 年代已应用于红外光谱 [13],但被深度学习取代(详见 Ep 44)。
六、开源工具推荐与实践
6.1 pybaselines:基线校正利器
pybaselines [8]:
- 200+ 种基线校正算法;
- Python 原生,与 NumPy/SciPy 兼容;
- 文档完善,示例丰富;
- 是目前红外基线校正的事实标准。
from pybaselines import Baseline
import numpy as np
baseline_fitter = Baseline(x_data=wavenumber)
# ALS(最经典)
bkg1 = baseline_fitter.asls(y, lam=1e7, p=0.01)[0]
# arPLS(自适应权重)
bkg2 = baseline_fitter.arpls(y, lam=1e6, ratio=0.01)[0]
# 多项式拟合
bkg3 = baseline_fitter.poly(y, poly_order=3)[0]
6.2 SpectroChemPy:一体化光谱分析框架
SpectroChemPy [15]:
- 177+ stars,活跃维护;
- NDDataset 数据结构:光谱 + 元数据一体化;
- 全流程:读取(多厂商格式)→ 预处理 → 建模 → 可视化;
- API 设计参考 scikit-learn,学习曲线平缓;
- 教学价值高。
import spectrochempy as scp
# 读取 Bruker OPUS 文件
ds = scp.read_opus("sample.0")
# 基线校正
ds = ds.baseline(algorithm='asls', lam=1e7, p=0.01)
# SNV
ds = ds.snv()
# PCA
pca = scp.PCA(n_components=5)
pca.fit(ds)
scores = pca.transform(ds)
6.3 Orange-Spectroscopy:零代码光谱分析
Orange-Spectroscopy [16]:
- 拖拽式可视化工作流,零编程门槛;
- 预处理 + 机器学习无缝衔接;
- 适合课堂教学与快速原型分析;
- 内置 PCA、PLS、PLS-DA、Random Forest 等;
- 支持 JCAMP-DX、SPC、SPA 等多种格式。
6.4 scikit-learn:通用机器学习框架
scikit-learn 提供了完整的 PCA、PLS、SVM、Random Forest 实现:
from sklearn.decomposition import PCA
from sklearn.cross_decomposition import PLSRegression
from sklearn.model_selection import cross_val_predict, KFold
from sklearn.metrics import mean_squared_error, r2_score
# PCA
pca = PCA(n_components=5)
scores = pca.fit_transform(X_centered)
# PLS
pls = PLSRegression(n_components=8)
pls.fit(X_train, y_train)
y_pred = pls.predict(X_test)
rmsep = np.sqrt(mean_squared_error(y_test, y_pred))
r2 = r2_score(y_test, y_pred)
# 10 折 CV 选最佳 LV 数
kf = KFold(n_splits=10)
for n in range(1, 15):
pls = PLSRegression(n_components=n)
y_cv = cross_val_predict(pls, X_train, y_train, cv=kf)
rmsecv = np.sqrt(mean_squared_error(y_train, y_cv))
print(f"LV={n}, RMSECV={rmsecv:.4f}")
6.5 工具选择建议
| 工具 | 适合人群 | 优势 |
|---|---|---|
| pybaselines | 需要基线校正的所有人 | 算法齐全、性能优秀 |
| SpectroChemPy | Python 熟练者 | 一体化框架、教学价值高 |
| Orange-Spectroscopy | 无编程基础者 | 拖拽式、零门槛 |
| scikit-learn | Python 机器学习用户 | 通用、生态丰富 |
| R prospectr | R 语言用户 | 农业领域应用多 |
| MATLAB PLS_Toolbox | MATLAB 用户 | 商业级功能、付费 |
表 4:开源化学计量学工具对比
七、化学计量学最佳实践清单
7.1 数据采集
- 样品数 ≥ 100:n < 30 时模型不可靠;
- 覆盖未来应用范围:校正集浓度范围要覆盖实际应用场景;
- 重复测量:每样品至少 2 次测量,避免单次偏差;
- 随机化:避免系统顺序(如先测高浓度再测低浓度);
- 参考方法准确:参考值质量决定模型上限。
7.2 数据划分
- 校正集 60–70%,验证集 30–40%;
- 用 Kennard-Stone 算法做"均匀划分",比随机划分更稳健;
- 验证集必须与校正集独立,不可参与预处理参数选择。
7.3 模型建立
- 用交叉验证选 LV 数;
- 用最简单的预处理组合;
- 检查残差图(residual plot):残差应随机分布,无趋势;
- 检查杠杆率:高杠杆样品需关注。
7.4 模型验证
- 外部验证集 R²、RMSEP、RPD;
- 预测残差图:检查是否有系统偏差;
- 稳定性测试:用不同日期/操作员/仪器重复测量;
- 长期监控:定期用新样品验证模型。
7.5 模型部署
- 文档化预处理流程;
- 提供样品"适用性"判断(如新样品是否在模型范围内);
- 定期更新模型(漂移校正);
- 建立"失败"样品库,重新训练模型。
八、典型案例:从实验室到行业
8.1 案例 1:饲料中蛋白质含量的 NIR 快检
某饲料厂需在线监测饲料蛋白质含量 [11][17]:
- 样品:1200 份不同配方饲料;
- 光谱:NIR 1000–2500 nm(间隔 2 nm,共 750 点);
- 参考值:凯氏定氮法;
- 预处理:SNV + 一阶导数(S-G 11 点);
- 校正集:900 份;验证集:300 份;
- LV 数:12;
- 结果:R² = 0.96, RMSEP = 0.38%, RPD = 4.5;
- 应用:部署于生产线在线监测,每年节省化验费 50 万元。
8.2 案例 2:药物片剂活性成分的 ATR-FTIR 定量
某制药企业需快速测定片剂中对乙酰氨基酚含量 [18]:
- 样品:300 份不同批次片剂;
- 光谱:ATR-FTIR 4000–400 cm⁻¹;
- 参考值:HPLC;
- 预处理:arPLS + 二阶导数;
- 校正集:210 份;验证集:90 份;
- LV 数:6;
- 结果:R² = 0.95, RMSEP = 1.2%, RPD = 4.1;
- 应用:替代部分 HPLC 测试,每批节约 4 小时分析时间。
🔗 延伸阅读:药物分子的酰胺、羟基等特征吸收详见 ftir.fun 酰胺官能团页 与 ftir.fun 羟基官能团页。
8.3 案例 3:食品中三聚氰胺的快速筛查
参考 Ep 25 案例扩展 [19]:
- 样品:奶粉 + 三聚氰胺(0–500 ppm)共 200 份;
- 光谱:ATR-FTIR 4000–400 cm⁻¹;
- 预处理:arPLS + SNV + 一阶导数;
- 校正集:140 份;验证集:60 份;
- PLS-DA 判别模型:检出限 50 ppm,准确率 95%;
- 载荷分析:1550/1500 cm⁻¹(三嗪环 C=N)、3350/3450 cm⁻¹(NH₂);
- 应用:用于奶站快速筛查,避免三聚氰胺事件重演。
🔗 延伸阅读:三聚氰胺的 N-H 伸缩与三嗪环振动详见 ftir.fun 胺官能团页。
九、化学计量学的未来:与机器学习的融合
化学计量学与机器学习的边界日益模糊 [13](详见 Ep 44):
- 传统化学计量学:PCA、PLS、SIMCA,可解释性强,适合小样本;
- 机器学习:SVM、Random Forest、XGBoost,非线性能力强,适合中等样本;
- 深度学习:CNN、Transformer,自动化特征提取,需要大样本(> 1000);
- 可解释 AI:SHAP、LIME、SSIN,让黑盒变透明。
未来趋势:
- 可解释 AI 普及:让模型不仅"对",还要"知道为什么对";
- 联邦学习:跨实验室协作建模而不共享原始数据;
- 自动机器学习(AutoML):自动选择预处理与模型;
- 量子化学 + 机器学习:用 DFT 计算谱图辅助小数据学习。
配图(本集关键示意)
📷 图 5:显微/阵列成像示意
来源:真实/开源图片 · Project case study — PE spectrum(已加水印 ftir.fun)
📷 图 6:高级方法链路
来源:真实/开源图片 · Unsplash — chemistry lab(已加水印 ftir.fun)
📷 图 7:高级技术相关特征峰示意
来源:ftir.fun 教学示意图(带水印;非实测谱,仅供理解概念)
本集小结
| 核心知识点 | 要点 |
|---|---|
| 化学计量学定义 | 用数学与统计学方法从化学数据中提取最大信息 |
| 为什么需要化学计量学 | 红外峰重叠、基体效应、组分相互作用 |
| 主要预处理方法 | arPLS 基线、SNV、MSC、一阶/二阶导数、均值中心化、归一化 |
| pybaselines | 200+ 种基线校正算法的事实标准库 |
| SNV vs MSC | SNV 独立处理、MSC 需参考谱;土壤用 SNV,聚合物用 MSC |
| 求导处理 | 一阶去常数基线;二阶去线性基线 + 增强分辨率;窗长 1–2 倍峰半宽 |
| PCA 原理 | 奇异值分解;得分 = 样品聚类;载荷 = 波数贡献 |
| PCA 应用 | 降维、聚类、异常值检测(Hotelling T²、Q 残差) |
| PLS 原理 | 同时分解 X 与 y,最大化协方差 |
| PLS 建模流程 | 数据划分 → 预处理 → CV 选 LV → 训练 → 外部验证 |
| 评价指标 | R² > 0.90;RPD > 3 优秀、> 5 可替代实验室方法 |
| 交叉验证 | LOO(n<30)或 10 折 CV(n≥30);选 RMSECV 最小 LV |
| 过拟合症状 | RMSEC 持续下降但 RMSECV 反弹 |
| 避免过拟合 | RMSECV 选 LV;外部验证集;n ≥ 100;简化预处理 |
| 模型可转移性 | DS、PDS、SBC 算法标准化不同仪器谱图 |
| 其他方法 | SIMCA、SVM、MCR-ALS、PARAFAC |
| 开源工具 | pybaselines、SpectroChemPy、Orange-Spectroscopy、scikit-learn |
| 未来趋势 | 可解释 AI、联邦学习、AutoML、量子化学 + ML |
思考题
你需要建立 PLS 模型预测牛奶中蛋白质含量。请说明完整的预处理流程,并解释为什么通常 NIR 区域更适合此类定量(提示:考虑水干扰)。
在建立一个 PLS 定量模型时,校正集 R² = 0.98,但验证集 R² 只有 0.65。请列出至少 4 种可能的原因,并给出对应的诊断方法。
PCA 与 PLS 的核心数学差异是什么?在什么情况下你会优先选择 PCA 而非 PLS?请举一个实际例子。
用 pybaselines 库做基线校正时,发现 ALS 算法的两个参数 lam 与 p 难以调节。请说明这两个参数的物理意义,以及如何选择合理取值范围(提示:lam 控制平滑度,p 控制不对称性)。
给你 500 份土壤样品的 DRIFTS 谱图与 SOM 参考值,要求建立可用于行业部署的 PLS 模型。请设计完整流程:数据划分方法、预处理组合、LV 数选择、验证策略、模型性能目标、部署注意事项。
参考文献
[1] Kowalski B R. "Chemometrics: Views and Propositions." J Chem Inf Comput Sci, 1979, 19(4): 234–238. DOI:10.1021/ci60020a004.
参见 Wold S. "Chemometrics: What do we mean with it, and what do we want from it?" Chemom Intell Lab Syst, 1995, 30(1): 109–115.
[2] Wold H. "Estimation of Principal Components and Related Models by Iterative Least Squares." In: Multivariate Analysis, ed. Krishnaiah P R, Academic Press, 1966: 391–420.
[3] Wold S, Sjöström M, Eriksson L. "PLS-Regression: A Basic Tool of Chemometrics." Chemom Intell Lab Syst, 2001, 58(2): 109–130. DOI:10.1016/S0169-7439(01)00155-1.
[4] Massart D L, Vandeginste B G M, Buydens L M C, et al. Chemometrics: A Textbook. Elsevier, 1988. ISBN: 978-0-444-42660-6.
[5] Naes T, Isaksson T, Fearn T, Davies T. A User-Friendly Guide to Multivariate Calibration and Classification. NIR Publications, 2002. ISBN: 978-0-9528666-2-6.
[6] Rinnan Å, van den Berg F, Engelsen S B. "Review of the Most Common Pre-Processing Techniques for Near-Infrared Spectra." Trends in Analytical Chemistry, 2009, 28(10): 1201–1222. DOI:10.1016/j.trac.2009.07.007.
[7] Eilers P H C, Boelens H F M. "Baseline Correction with Asymmetric Least Squares Smoothing." Leiden Univ Medical Centre Report, 2005, 1(1): 5.
[8] pybaselines: A Python package for baseline correction. GitHub: https://github.com/derb12/p...
[9] Brereton R G. Chemometrics: Data Analysis for the Laboratory and Chemical Plant. Wiley, 2003. ISBN: 978-0-471-48978-8.
[10] Casale M, Casolino C, Ferrari G, et al. "Olive Oil Adulteration Detection by ATR-FTIR and Chemometrics." Food Anal Methods, 2010, 3: 195–203.
[11] Williams P C, Norris K. Near-Infrared Technology in the Agricultural and Food Industries. 3rd ed. AACC International Press, 2001. ISBN: 978-1-891127-37-6.
[12] Janik L J, Skjemstad J O, Raven M D. "Characterization and Analysis of Soils Using Mid-Infrared Partial Least-Squares." Soil Biology & Biochemistry, 2008, 40(2): 412–423. DOI:10.1016/j.soilbio.2007.09.023.
[13] Buljanić M H, et al. "Machine Learning in Infrared Spectroscopy." Spectrochim Acta A, 2022, 270: 120816.
[14] de Juan A, Tauler R. "Multivariate Curve Resolution (MCR) from 2000: Progress in Concepts and Applications." Crit Rev Anal Chem, 2006, 36(3–4): 163–176.
[15] SpectroChemPy: A Python framework for processing, analyzing and modeling spectroscopic data. GitHub: https://github.com/spectroc...
[16] Orange-Spectroscopy: A package to extend Orange with spectroscopic functionality. GitHub: https://github.com/Quasars/...
[17] Burns D A, Ciurczak E W. Handbook of Near-Infrared Analysis. 3rd ed. CRC Press, 2007. ISBN: 978-0-8493-7393-0.
[18] Roggo Y, Chalus P, Maurer L, et al. "A Review of Near Infrared Spectroscopy and Chemometrics for Pharmaceutical Analysis." J Pharm Biomed Anal, 2007, 44(3): 683–700.
[19] Lu C, Xiang B, Hao G, et al. "Rapid Detection of Melamine in Milk Powder by Near Infrared Spectroscopy." J Near Infrared Spectrosc, 2009, 17(2): 59–67.
[20] ftir.fun 烷基 C-H 官能团页. https://ftir.fun/ir/group/a...
[21] ftir.fun 羰基官能团页. https://ftir.fun/ir/group/c...
[22] ftir.fun 酰胺官能团页. https://ftir.fun/ir/group/a...
[23] ftir.fun 羟基官能团页. https://ftir.fun/ir/group/h...
[24] ftir.fun 胺官能团页. https://ftir.fun/ir/group/a...
下一集预告:Ep 44 — 机器学习在红外光谱中的应用
化学计量学是"传统"的多变量方法,而机器学习与深度学习是它的"进化版"。下一集我们将讨论:传统化学计量学 vs 机器学习的取舍;SVM、随机森林、XGBoost 在光谱分类中的应用;CNN 用于光谱识别;2025 年的 SSIN 可解释 AI(从 IR 光谱检测官能团)、LLM 驱动的 IR 光谱多任务推理框架、IR-Bot 自主机器人等前沿工作。
本文使用 CC BY-NC-SA 4.0 许可。配图来自公开领域或已标注来源的网络资源,版权归原作者所有。


