跳到主要内容

Bayes 判别

一、直观理解:把“像不像”和“本来多不多”合在一起​

Bayes 判别的核心是后验概率最大(或风险最小):

y^=arg⁡max⁡c P(y=c∣x)\hat y=\arg\max_c\ P(y=c\mid x)

由贝叶斯公式:

P(y=c∣x)=P(x∣y=c)P(y=c)P(x)P(y=c\mid x)=\frac{P(x\mid y=c)P(y=c)}{P(x)}
  • P(x∣y=c)P(x\mid y=c):像不像这类(类条件密度,如多元正态);
  • P(y=c)P(y=c):这类本来多不多(先验);
  • 分母对所有类相同,比较后验时可不算。

若进一步假设各类为正态且协方差相同,就得到线性判别分析(LDA);协方差不同则得二次判别分析(QDA)。若考虑错判代价,就把最大后验改成最小期望风险决策。

二、适用场景与优缺点​

类型说明
适用场景连续特征近似正态;需要概率输出与先验;类协方差结构可估计;希望统计假设清晰、可写进论文。
核心优点决策论基础完整;可纳入先验与代价;LDA/QDA 边界有解析形式;概率含义清楚。
局限与缺点正态与协方差假设可能不符;高维协方差估计不稳;QDA 参数量随类数增长;非线性流形结构需更复杂密度模型。

使用前:正态性与等协方差的粗检、样本量 vs 维数、ncn_c 是否支撑 ScS_c、先验是否用业务比例。

三、核心原理​

1. 最大后验(MAP)​

y^=arg⁡max⁡c [log⁡fc(x)+log⁡πc]\hat y=\arg\max_c\ \big[\log f_c(x)+\log\pi_c\big]

其中 fcf_c 为类条件密度,πc\pi_c 为先验。

2. 正态 LDA(共享协方差 Σ\Sigma)​

δc(x)=xTΣ−1μc−12μcTΣ−1μc+log⁡πc\delta_c(x)=x^\mathsf{T}\Sigma^{-1}\mu_c-\frac{1}{2}\mu_c^\mathsf{T}\Sigma^{-1}\mu_c+\log\pi_c

决策边界是 xx 的线性函数。

3. 正态 QDA(各类 Σc\Sigma_c)​

δc(x)=−12log⁡∣Σc∣−12(x−μc)TΣc−1(x−μc)+log⁡πc\delta_c(x)=-\frac{1}{2}\log|\Sigma_c|-\frac{1}{2}(x-\mu_c)^\mathsf{T}\Sigma_c^{-1}(x-\mu_c)+\log\pi_c

边界为二次曲面。

4. 最小风险决策​

设代价 L(a,c)L(a,c) 表示真实类 cc 却采取行动 aa 的损失,选择

a(x)=arg⁡min⁡a∑cL(a,c)P(c∣x)a(x)=\arg\min_a\sum_c L(a,c)P(c\mid x)

两类且 LL 不对称时,等价于把阈值从 1/21/2 挪到与代价比、先验比有关的位置。

四、关键决策​

决策点建议
LDA vs QDAnn 小或 Σc\Sigma_c 相近 → LDA;形状差很大且样本足 → QDA
正则 Gamma向对角/单位阵收缩,稳定高维估计
先验empirical 或业务先验;部署分布变了要改先验
代价矩阵漏报/误报成本写入 Cost
正态性差变换特征、用核密度/非参数,或换机器学习模型
维数pp 大时先 PCA 或特征筛选

五、MATLAB 示例​

X = [
1.0 1.1; 1.2 0.9; 0.8 1.0; 1.1 1.2; 0.9 0.8;
3.0 3.0; 3.2 2.8; 2.9 3.1; 3.1 3.2; 2.8 2.9
];
y = [1;1;1;1;1; 2;2;2;2;2];

% LDA:共享协方差
lda = fitcdiscr(X, y, ...
"DiscrimType", "linear", ...
"Prior", "empirical", ...
"Gamma", 0);

% QDA:类协方差
qda = fitcdiscr(X, y, ...
"DiscrimType", "quadratic", ...
"Prior", "empirical");

% 带代价:把 1 判成 2 代价 1,把 2 判成 1 代价 5(更怕漏掉类2)
cost = [0 1; 5 0];
ldaCost = fitcdiscr(X, y, "DiscrimType", "linear", "Cost", cost);

[y1, post1] = predict(lda, X);
[y2, post2] = predict(qda, X);
[y3, post3] = predict(ldaCost, X);

disp("LDA 混淆矩阵:"); disp(confusionmat(y, y1));
disp("QDA 混淆矩阵:"); disp(confusionmat(y, y2));
disp("代价敏感 LDA 混淆矩阵:"); disp(confusionmat(y, y3));

% 后验概率
disp("LDA 后验(前 3 行):"); disp(post1(1:3,:));

% 交叉验证比较
cvL = kfoldLoss(crossval(lda, "KFold", 5));
cvQ = kfoldLoss(crossval(qda, "KFold", 5));
fprintf("LDA CV loss=%.3f, QDA CV loss=%.3f\n", cvL, cvQ);

% 正则化 LDA
ldaReg = fitcdiscr(X, y, "DiscrimType", "linear", "Gamma", 0.3);

六、如何解释结果​

  1. 先验:说明用了频率先验还是业务先验;
  2. 后验概率:对临界样本给出 P(c∣x)P(c\mid x);
  3. LDA/QDA 选择依据:协方差是否明显不同、CV 谁更优;
  4. 代价:解释阈值移动如何降低高代价错误;
  5. 均值与协方差:类中心差异、哪类更“散”;
  6. 完整报告:假设、DiscrimType、Gamma、Cost、指标与残差分歧点。

七、常见误区​

1. 先验与部署分布不一致仍用训练频率​

抽样偏倚会系统性偏向多数类。

2. 小样本强行 QDA​

每类都估满协方差,方差爆炸,不如正则 LDA。

3. 把判别分数当已校准概率​

一般可用 predict 的 posterior,但仍应用可靠性图检查。

4. 忽略错判代价只报准确率​

医疗、风控题中漏报成本往往主导阈值。

5. 非正态数据硬解释“最优 Bayes”​

模型最优是在假设下的最优,假设错了就不再保证。

八、小结​

Bayes 判别融合类条件密度与先验(及可选代价),在统计决策论意义下给出最优分类规则;正态假设下落实为 LDA/QDA。

它是判别分析的理论中枢:距离判别、Fisher 判别都能在这一框架下找到位置。赛题中写清假设、先验与代价,比堆砌黑箱更有说服力。