线性判别和二次判别(LDA和QDA)
线性判别分析(Linear Discriminant Analysis, LDA)与二次判别分析(Quadratic Discriminant Analysis, QDA)是经典的监督分类方法。两者均假设类别条件分布为高斯分布;差异在于:
线性判别与二次判别(LDA / QDA)
1. 方法概述
线性判别分析(Linear Discriminant Analysis, LDA)与二次判别分析(Quadratic Discriminant Analysis, QDA)是经典的监督分类方法。两者均假设类别条件分布为高斯分布;差异在于:
- LDA 假设各类共享协方差矩阵(得到线性判别边界);
- QDA 允许各类拥有不同协方差矩阵(得到二次判别边界)。
设共有 \(n\) 个样本、\(d\) 个特征,数据集表示为
$$ \mathcal{D}=\{(x_i,y_i)\}_{i=1}^{n},\quad x_i\in\mathbb{R}^d,\ y_i\in\{1,\ldots,C\} \tag{1} $$
其中 \(C\) 为类别数。
2. 公共部分(预处理与符号)
系统在模型训练前支持缺失处理、编码、缩放与特征工程(多项式、KBest、PCA/KPCA 等),均在训练集拟合后作用于测试集或折内验证,避免数据泄漏。
2.1 标准化与归一化
Z-score 标准化: $$ z_{ij}=\frac{x_{ij}-\mu_j}{\sigma_j} \tag{2} $$
Min-Max 归一化: $$ z_{ij}=\frac{x_{ij}-\min x_j}{\max x_j-\min x_j+\varepsilon} \tag{3} $$
2.2 One-Hot 编码
$$ x^{(k)}_{ij}= \begin{cases} 1,& x_{ij}=\text{cat}_k\ 0,& \text{otherwise} \end{cases} \tag{4} $$
2.3 PCA(可选)
协方差矩阵: $$ \Sigma=\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})(x_i-\bar{x})^\top \tag{5} $$
投影: $$ X' = X W,\quad W=[u_1,\ldots,u_p] \tag{6} $$
2.4 符号说明
| 符号 | 含义 |
|---|---|
| \(n\) | 样本数量 |
| \(d\) | 特征维度 |
| \(C\) | 类别数 |
| \(x_i\) | 第 \(i\) 个样本特征向量 |
| \(y_i\) | 第 \(i\) 个样本类别标签 |
| \(\mu_k\) | 第 \(k\) 类均值向量 |
| \(\Sigma\) | 共享协方差矩阵(LDA) |
| \(\Sigma_k\) | 第 \(k\) 类协方差矩阵(QDA) |
| \(\pi_k\) | 第 \(k\) 类先验概率 |
| \(S_w,S_b\) | 类内/类间散度矩阵 |
| \(TP,FP,TN,FN\) | 混淆矩阵四要素 |
3. 分类版(LDA)
3.1 模型假设(共享协方差)
$$ p(x\mid y=k)=\mathcal{N}(x;\mu_k,\Sigma) \tag{7} $$
3.2 类内/类间散度矩阵
$$ S_w=\sum_{k=1}^{C}\sum_{x_i\in\mathcal{C}_k}(x_i-\mu_k)(x_i-\mu_k)^\top \tag{8} $$
$$ S_b=\sum_{k=1}^{C}n_k(\mu_k-\mu)(\mu_k-\mu)^\top \tag{9} $$
3.3 Fisher 判别准则
一维投影的判别准则: $$ J(w)=\frac{w^\top S_b w}{w^\top S_w w} \tag{10} $$
多维情形可转化为广义特征值问题: $$ S_b w=\lambda S_w w \tag{11} $$
3.4 判别函数与决策规则
LDA 判别函数: $$ \delta_k(x)=x^\top\Sigma^{-1}\mu_k-\frac{1}{2}\mu_k^\top\Sigma^{-1}\mu_k+\ln\pi_k \tag{12} $$
分类规则: $$ \hat{y}=\arg\max_k\delta_k(x) \tag{13} $$
3.5 分类评价指标
准确率 $$ \text{Accuracy}=\frac{TP+TN}{TP+TN+FP+FN} \tag{14} $$
精确率 / 召回率 $$ \text{Precision}=\frac{TP}{TP+FP} \tag{15} $$
$$ \text{Recall}=\frac{TP}{TP+FN} \tag{16} $$
F1 值 $$ F1=\frac{2\cdot \text{Precision}\cdot \text{Recall}}{\text{Precision}+\text{Recall}} \tag{17} $$
宏/加权平均 $$ \text{Macro} = \frac{1}{C}\sum_{c=1}^{C}M_c,\quad \text{Weighted} = \sum_{c=1}^{C}\omega_c M_c \tag{18} $$
ROC / AUC(二分类) $$ \text{TPR}=\frac{TP}{TP+FN},\quad \text{FPR}=\frac{FP}{FP+TN} \tag{19} $$
$$ \text{AUC}=\int_0^1 \text{TPR}(\text{FPR})\,d(\text{FPR}) \tag{20} $$
4. 分类版(QDA)
4.1 模型假设(类内协方差不同)
$$ p(x\mid y=k)=\mathcal{N}(x;\mu_k,\Sigma_k) \tag{21} $$
4.2 判别函数与决策规则
QDA 判别函数: $$ \delta_k(x)=-\frac{1}{2}\ln|\Sigma_k|- \frac{1}{2}(x-\mu_k)^\top\Sigma_k^{-1}(x-\mu_k)+\ln\pi_k \tag{22} $$
分类规则: $$ \hat{y}=\arg\max_k\delta_k(x) \tag{23} $$
4.3 协方差正则化(数值稳定)
为避免协方差矩阵奇异,可采用正则化: $$ \Sigma_k^*=(1-\lambda)\Sigma_k+\lambda I,\quad \lambda\in[0,1] \tag{24} $$
4.4 评价指标
QDA 评价指标与 LDA 相同,沿用式(14)–(20)。
5. 先验设定与协方差估计细节(扩展)
5.1 类别先验概率
若无先验知识,可用样本频率估计: $$ \pi_k = \frac{n_k}{n} \tag{25} $$
若已知业务先验,可直接指定 \(\pi_k\) 并用于判别函数(式(12)、式(22))。
5.2 均值与协方差估计
各类均值向量: $$ \hat{\mu}_k = \frac{1}{n_k}\sum_{x_i\in\mathcal{C}_k} x_i \tag{26} $$
LDA 共享协方差(合并估计): $$ \hat{\Sigma} = \frac{1}{n-C}\sum_{k=1}^{C}\sum_{x_i\in\mathcal{C}_k}(x_i-\hat{\mu}_k)(x_i-\hat{\mu}_k)^\top \tag{27} $$
QDA 类内协方差: $$ \hat{\Sigma}_k = \frac{1}{n_k-1}\sum_{x_i\in\mathcal{C}_k}(x_i-\hat{\mu}_k)(x_i-\hat{\mu}_k)^\top \tag{28} $$
协方差正则化(稳定估计): $$ \hat{\Sigma}_k^* = (1-\lambda)\hat{\Sigma}_k + \lambda I,\quad \lambda\in[0,1] \tag{29} $$
6. LDA 降维可视化(扩展)
LDA 既是分类器,也可作为监督降维方法。对多类问题,可将特征投影到 \(C-1\) 维子空间:
$$
W = [w_1,\ldots,w_{C-1}],\quad x' = W^\top x
\tag{30}
$$
得到的 \(x'\) 可用于二维/三维可视化,观察类别可分性。常见做法:
- 取前两维 \((x'_1, x'_2)\) 绘制散点图;
- 颜色区分类别,辅助解释分类边界与混淆来源。
7. 回归版(不适用 / 扩展说明)
LDA/QDA 本质为分类方法,系统目前仅支持分类任务。
如需回归,可采用:
- 线性/岭回归、SVR、Kernel Ridge、GBDT 等回归模型;
- 或将 LDA 作为降维步骤(见式(30)),再接回归模型。
8. 训练与验证(公共)
8.1 训练/测试划分
若设置测试集比例为 \(t\in(0,1)\),则 $$ n_{\text{test}}=\lceil n\cdot t\rceil,\quad n_{\text{train}}=n-n_{\text{test}} \tag{31} $$
8.2 \(K\)-折交叉验证
对 \(K\) 折指标取均值: $$ \bar{M}=\frac{1}{K}\sum_{k=1}^{K}M_k \tag{32} $$
8.3 学习曲线(训练规模 vs. 性能)
设训练规模序列为 \(\{m_j\}\),则学习曲线可记录 $$ \bar{S}_{\text{train}}(m_j)=\frac{1}{K}\sum_{k=1}^{K}S_{\text{train}}^{(k)}(m_j),\quad \bar{S}_{\text{valid}}(m_j)=\frac{1}{K}\sum_{k=1}^{K}S_{\text{valid}}^{(k)}(m_j) \tag{33} $$
9. 结果输出说明
9.1 Excel 与图表输出
系统输出的 Excel 通常包含:概要、训练集、测试集、预测、CV汇总、混淆矩阵、图表清单、参数、学习曲线。
图表输出(不强制嵌入 Excel):
- 分类(LDA/QDA):混淆矩阵、ROC 曲线、PR 曲线、阈值–F1、阈值–TPR/FPR、学习曲线。
9.2 论文写作建议
- 模型说明:给出 LDA/QDA 的高斯假设与判别函数(式(7)–(13)、式(21)–(23))。
- 参数与预处理:说明是否启用标准化、缺失处理、以及 LDA/QDA 的关键超参(如 shrinkage、reg_param)。
- 核心指标表:报告 Accuracy/Precision/Recall/F1,并给出 ROC/PR 相关图。
- 稳定性说明:补充交叉验证均值与学习曲线分析。
正文给出核心公式与指标,详细折内预测与参数清单可放入附录,以兼顾可读性与可复现性。
10. 论文写作模板
10.1 论文写作模板(LDA)
模板段落 A(模型与先验)
本文采用 LDA 进行多类分类建模,假设各类样本服从高斯分布且共享协方差矩阵(式(7)、式(27))。类别先验 \(\pi_k\) 使用样本频率估计(式(25)),判别函数见式(12)。若需增强稳定性,可使用协方差正则化(式(29))。
模板段落 B(指标与结果)
模型性能以 Accuracy、Precision、Recall 与 F1 衡量(式(14)–(17)),并报告宏/加权平均(式(18))。结合 ROC/PR 曲线与阈值分析图,评估模型在不同阈值下的稳定性与区分能力。学习曲线用于分析样本规模变化对性能的影响。
10.2 论文写作模板(QDA)
模板段落 A(模型与协方差)
本文采用 QDA 进行分类建模,允许不同类别拥有独立协方差矩阵(式(21)、式(28))。判别函数形式见式(22),并在必要时引入正则化以缓解协方差奇异问题(式(29))。
模板段落 B(指标与图表)
QDA 结果同样以 Accuracy/Precision/Recall/F1 作为主要指标,并给出混淆矩阵与 ROC/PR 曲线。阈值–F1 与阈值–TPR/FPR 曲线用于评估阈值敏感性与实际部署可行性。
10.3 示例图注(可直接使用)
- 图 1 LDA:混淆矩阵与分类报告。
- 图 2 LDA:ROC 曲线与 PR 曲线。
- 图 3 LDA:阈值–F1 与阈值–TPR/FPR 曲线。
- 图 4 LDA:学习曲线(训练规模 vs. 性能)。
- 图 5 QDA:混淆矩阵与 ROC/PR 曲线。
- 图 6 LDA 降维可视化:前两判别轴投影散点图。
11. 与代码实现的对应关系
LDA/QDA 程序的真实实现位于 具体的算法/线性判别和二次判别(LDA和QDA)/core/critic_calculator.py。与一般教材中的“只给一个判别函数和准确率”不同,程序实际上围绕分类复核做了较完整的导出。
需要在文档中补充说明:
-
结果 Excel 以
概要页为中心组织
程序会先输出概要,再写入训练集、测试集、预测、CV汇总、混淆矩阵、图表清单、参数、学习曲线等表,并在概要页嵌入部分关键图表。 -
ROC/PR 不局限于二分类
代码支持二分类和多分类 OvR 形式的 ROC/PR,因此论文中若是多分类任务,可以明确写“采用一对多方式评估各类区分能力”。 -
阈值曲线是程序原生输出
程序会额外生成阈值-F1 与阈值-TPR/FPR 图,因此结果章节不仅能写最终 Accuracy/F1,还能补充阈值敏感性讨论。 -
LDA/QDA 是纯分类工具,不扩展为回归
当前程序的设计完全围绕分类任务展开,因此论文中应直接写成判别分析分类模型,不要套用回归类表述。 -
学习曲线与图表嵌入偏向论文展示
概要页会嵌入混淆矩阵、ROC、PR、阈值曲线和学习曲线,说明该程序在结果导出时已经考虑了论文插图场景。
12. 论文写作模板补充
方法描述模板:
“本文采用判别分析方法建立分类模型。对于共享协方差矩阵的情形使用 LDA,对于允许类别协方差不同的情形使用 QDA。建模前对原始数据进行缺失处理、缩放及必要的特征工程,然后在训练集上完成判别函数估计,并在测试集上输出类别预测结果。”
结果描述模板:
“程序结果文件包含概要、逐样本预测、混淆矩阵、CV 汇总、参数配置和图表清单,并在概要页嵌入主要图表。因而论文中除了报告 Accuracy、Precision、Recall 与 F1 外,还可以进一步展示 ROC/PR 曲线、阈值分析和学习曲线,以增强分类结果的完整性与可解释性。”
13. 单篇终审补充
13.1 图题与表题对齐建议
- 本文档应优先对应真实算法目录
具体的算法/线性判别和二次判别(LDA和QDA)。 - 代表性结果目录建议绑定
具体的算法/线性判别和二次判别(LDA和QDA)/results/线性判别和二次判别(LDA和QDA)分析结果_20260329_163826。 - 表题应直接对应该目录下
线性判别和二次判别(LDA和QDA)分析结果_20260329_163826.xlsx的真实工作表:概要、训练集、测试集、预测、CV汇总、混淆矩阵、图表清单、参数。 - 图题应优先绑定该目录下实体图:
confusion_matrix.png、roc.png、pr.png、threshold_f1.png、threshold_tpr_fpr.png。
13.2 终审说明
- 当前 LDA/QDA 的结果目录内已经存在完整 xlsx 和图文件,但最新代表目录中没有同批 repro 脚本。
- 可执行 repro 可回溯到较早时间戳目录
results/线性判别和二次判别(LDA和QDA)分析结果_20260225_115620/repro_template_20260225_115620.py,其SRC_FILE实际写为uploads/sample_classification.csv,属于“模块根目录下 uploads 样本复现”口径。 - 另一个需要在终稿里如实说明的点是:当前代表目录中的
图表清单sheet 记录的是charts/...路径,而实体图也确实位于charts/子目录中,正文和附录应按这一一致结构落地。
13.3 全量强化补充
- 当前 LDA/QDA 文档应绑定真实算法目录
具体的算法/线性判别和二次判别(LDA和QDA),代表性结果目录为具体的算法/线性判别和二次判别(LDA和QDA)/results/线性判别和二次判别(LDA和QDA)分析结果_20260329_163826。 - 该目录首层主工作簿为
线性判别和二次判别(LDA和QDA)分析结果_20260329_163826.xlsx,真实工作表为概要、训练集、测试集、预测、CV汇总、混淆矩阵、图表清单、参数。 - 当前实体图并不在结果目录根层,而是位于
charts/子目录,真实文件为charts/confusion_matrix.png、charts/roc.png、charts/pr.png、charts/threshold_f1.png、charts/threshold_tpr_fpr.png。旧文“实体图直接位于根层”的表述应修正。 - 当前代表目录本身未看到 repro 脚本;可执行 repro 仍需回溯到较早目录
results/线性判别和二次判别(LDA和QDA)分析结果_20260225_115620/repro_template_20260225_115620.py,其输入口径为uploads/sample_classification.csv。 - 因此 LDA/QDA 当前应分两层说明:
20260329_163826用于主结果与主图引用,20260225_115620用于复现实验脚本说明。不要把最新目录误写成自带 repro 链。 图表清单工作表记录的是charts/...路径,与当前物理图片所在子目录是一致的,因此这一点也应从旧文中的“路径登记与实体摆放不完全一致”修正为“当前代表目录中两者一致”。
13.4 软件实现核查补充(2026-07)
- 当前最新结果目录
results/线性判别和二次判别(LDA和QDA)分析结果_20260411_203104_163670的图文件位于charts/子目录,真实图包括charts/confusion_matrix.png、charts/roc.png、charts/pr.png、charts/threshold_f1.png、charts/threshold_tpr_fpr.png、charts/learning_curve.png。 - 当前这篇仍然是纯分类任务,LDA/QDA 的高斯判别理论可以保留,但正文解释要对齐分类评估图和
概要/训练集/测试集/预测/CV汇总/混淆矩阵/图表清单/参数这组实际工作表。 - 当前代表性最新目录没有同批 repro 脚本;可执行复现要回溯到较早目录
repro_template_20260225_115620.py,其输入口径是uploads/sample_classification.csv。 - 后续写图题或表题时,要记住这个模块的路径登记和实体图都和
charts/子目录一致,不要把图位置写成结果目录根层。