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]

在红外光谱领域,化学计量学之所以"不可或缺",根源在于以下三个现实:

  1. 红外峰重叠严重:一张 4000–400 cm⁻¹ 的谱图,几乎找不到完全孤立的峰。如酰胺 I 带(1600–1700 cm⁻¹)包含蛋白质 α-螺旋、β-折叠、转角等多种二级结构的子峰;
  2. 基线漂移与散射:颗粒散射、KBr 吸湿会引起整条谱图倾斜,单峰定量受基体影响严重;
  3. 组分相互作用:混合物中各组分间氢键、偶极相互作用会改变峰位置与强度。

传统单峰定量(朗伯-比尔定律 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]:

  1. 计算所有样品的平均谱 $\bar{x}$;
  2. 对每个样品谱 x 做线性回归:$x = a + b \cdot \bar{x}$;
  3. 校正:$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]:

  1. 预处理:arPLS 基线 + SNV + 均值中心化;
  2. PCA:保留前 5 个 PC,解释 95% 方差;
  3. 得分图:PC1 × PC2 真品与掺假品明显分离;
  4. 载荷图:PC1 主要贡献波数为 1745 cm⁻¹(甘油三酯 C=O)、3005 cm⁻¹(=C-H 顺式双键);
  5. 推断:掺假品在甘油三酯与不饱和脂肪酸特征峰上偏离真品;
  6. 应用:基于 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]:

指标 全称 含义 优秀标准
决定系数 预测值与真实值的拟合程度 > 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]:

  1. 把校正集分为 K 折(典型 K = 10);
  2. 每次留 1 折作"内部验证",其余 K-1 折训练;
  3. 计算每个 LV 数下的 RMSECV;
  4. 选择 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 过拟合的原因

  1. LV 数过多:把噪声也"建模"了;
  2. 样品数太少:n < 10 × LV 数;
  3. 预处理过度:求导次数过多、窗长过短;
  4. 波数选择不当:包含太多噪声区;
  5. 校正集与验证集分布不一致:如校正集温度 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 数据采集

  1. 样品数 ≥ 100:n < 30 时模型不可靠;
  2. 覆盖未来应用范围:校正集浓度范围要覆盖实际应用场景;
  3. 重复测量:每样品至少 2 次测量,避免单次偏差;
  4. 随机化:避免系统顺序(如先测高浓度再测低浓度);
  5. 参考方法准确:参考值质量决定模型上限。

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,让黑盒变透明

未来趋势:

  1. 可解释 AI 普及:让模型不仅"对",还要"知道为什么对";
  2. 联邦学习:跨实验室协作建模而不共享原始数据;
  3. 自动机器学习(AutoML):自动选择预处理与模型;
  4. 量子化学 + 机器学习:用 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

思考题

  1. 你需要建立 PLS 模型预测牛奶中蛋白质含量。请说明完整的预处理流程,并解释为什么通常 NIR 区域更适合此类定量(提示:考虑水干扰)。

  2. 在建立一个 PLS 定量模型时,校正集 R² = 0.98,但验证集 R² 只有 0.65。请列出至少 4 种可能的原因,并给出对应的诊断方法。

  3. PCA 与 PLS 的核心数学差异是什么?在什么情况下你会优先选择 PCA 而非 PLS?请举一个实际例子。

  4. 用 pybaselines 库做基线校正时,发现 ALS 算法的两个参数 lam 与 p 难以调节。请说明这两个参数的物理意义,以及如何选择合理取值范围(提示:lam 控制平滑度,p 控制不对称性)。

  5. 给你 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/pyb…

[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/spectroche…

[16] Orange-Spectroscopy: A package to extend Orange with spectroscopic functionality. GitHub: https://github.com/Quasars/or…

[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/alk…

[21] ftir.fun 羰基官能团页. https://ftir.fun/ir/group/car…

[22] ftir.fun 酰胺官能团页. https://ftir.fun/ir/group/ami…

[23] ftir.fun 羟基官能团页. https://ftir.fun/ir/group/hyd…

[24] ftir.fun 胺官能团页. https://ftir.fun/ir/group/ami…


下一集预告:Ep 44 — 机器学习在红外光谱中的应用
化学计量学是"传统"的多变量方法,而机器学习与深度学习是它的"进化版"。下一集我们将讨论:传统化学计量学 vs 机器学习的取舍;SVM、随机森林、XGBoost 在光谱分类中的应用;CNN 用于光谱识别;2025 年的 SSIN 可解释 AI(从 IR 光谱检测官能团)、LLM 驱动的 IR 光谱多任务推理框架IR-Bot 自主机器人等前沿工作。


本文使用 CC BY-NC-SA 4.0 许可。配图来自公开领域或已标注来源的网络资源,版权归原作者所有。

Anfrage einreichen Formular