正在加载中...

展开本页目录
算法教程线性判别和二次判别(LDA和QDA)

线性判别和二次判别(LDA和QDA)

No.033 · 在线教程

线性判别分析(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 论文写作建议

  1. 模型说明:给出 LDA/QDA 的高斯假设与判别函数(式(7)–(13)、式(21)–(23))。
  2. 参数与预处理:说明是否启用标准化、缺失处理、以及 LDA/QDA 的关键超参(如 shrinkage、reg_param)。
  3. 核心指标表:报告 Accuracy/Precision/Recall/F1,并给出 ROC/PR 相关图。
  4. 稳定性说明:补充交叉验证均值与学习曲线分析。

正文给出核心公式与指标,详细折内预测与参数清单可放入附录,以兼顾可读性与可复现性。

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。与一般教材中的“只给一个判别函数和准确率”不同,程序实际上围绕分类复核做了较完整的导出。

需要在文档中补充说明:

  1. 结果 Excel 以 概要 页为中心组织
    程序会先输出 概要,再写入 训练集测试集预测CV汇总混淆矩阵图表清单参数学习曲线 等表,并在 概要 页嵌入部分关键图表。

  2. ROC/PR 不局限于二分类
    代码支持二分类和多分类 OvR 形式的 ROC/PR,因此论文中若是多分类任务,可以明确写“采用一对多方式评估各类区分能力”。

  3. 阈值曲线是程序原生输出
    程序会额外生成阈值-F1 与阈值-TPR/FPR 图,因此结果章节不仅能写最终 Accuracy/F1,还能补充阈值敏感性讨论。

  4. LDA/QDA 是纯分类工具,不扩展为回归
    当前程序的设计完全围绕分类任务展开,因此论文中应直接写成判别分析分类模型,不要套用回归类表述。

  5. 学习曲线与图表嵌入偏向论文展示
    概要页会嵌入混淆矩阵、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.pngroc.pngpr.pngthreshold_f1.pngthreshold_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.pngcharts/roc.pngcharts/pr.pngcharts/threshold_f1.pngcharts/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.pngcharts/roc.pngcharts/pr.pngcharts/threshold_f1.pngcharts/threshold_tpr_fpr.pngcharts/learning_curve.png
  • 当前这篇仍然是纯分类任务,LDA/QDA 的高斯判别理论可以保留,但正文解释要对齐分类评估图和 概要/训练集/测试集/预测/CV汇总/混淆矩阵/图表清单/参数 这组实际工作表。
  • 当前代表性最新目录没有同批 repro 脚本;可执行复现要回溯到较早目录 repro_template_20260225_115620.py,其输入口径是 uploads/sample_classification.csv
  • 后续写图题或表题时,要记住这个模块的路径登记和实体图都和 charts/ 子目录一致,不要把图位置写成结果目录根层。