Bayes 判别
一、直观理解:把“像不像”和“本来多不多”合在一起
Bayes 判别的核心是后验概率最大(或风险最小):
由贝叶斯公式:
- :像不像这类(类条件密度,如多元正态);
- :这类本来多不多(先验);
- 分母对所有类相同,比较后验时可不算。
若进一步假设各类为正态且协方差相同,就得到线性判别分析(LDA);协方差不同则得二次判别分析(QDA)。若考虑错判代价,就把最大后验改成最小期望风险决策。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 连续特征近似正态;需要概率输出与先验;类协方差结构可估计;希望统计假设清晰、可写进论文。 |
| 核心优点 | 决策论基础完整;可纳入先验与代价;LDA/QDA 边界有解析形式;概率含义清楚。 |
| 局限与缺点 | 正态与协方差假设可能不符;高维协方差估计不稳;QDA 参数量随类数增长;非线性流形结构需更复杂密度模型。 |
使用前:正态性与等协方差的粗检、样本量 vs 维数、 是否支撑 、先验是否用业务比例。
三、核心原理
1. 最大后验(MAP)
其中 为类条件密度, 为先验。
2. 正态 LDA(共享协方差 )
决策边界是 的线性函数。
3. 正态 QDA(各类 )
边界为二次曲面。
4. 最小风险决策
设代价 表示真实类 却采取行动 的损失,选择
两类且 不对称时,等价于把阈值从 挪到与代价比、先验比有关的位置。
四、关键决策
| 决策点 | 建议 |
|---|---|
| LDA vs QDA | 小或 相近 → LDA;形状差很大且样本足 → QDA |
正则 Gamma | 向对角/单位阵收缩,稳定高维估计 |
| 先验 | empirical 或业务先验;部署分布变了要改先验 |
| 代价矩阵 | 漏报/误报成本写入 Cost |
| 正态性差 | 变换特征、用核密度/非参数,或换机器学习模型 |
| 维数 | 大时先 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);
六、如何解释结果
- 先验:说明用了频率先验还是业务先验;
- 后验概率:对临界样本给出 ;
- LDA/QDA 选择依据:协方差是否明显不同、CV 谁更优;
- 代价:解释阈值移动如何降低高代价错误;
- 均值与协方差:类中心差异、哪类更“散”;
- 完整报告:假设、
DiscrimType、Gamma、Cost、指标与残差分歧点。
七、常见误区
1. 先验与部署分布不一致仍用训练频率
抽样偏倚会系统性偏向多数类。
2. 小样本强行 QDA
每类都估满协方差,方差爆炸,不如正则 LDA。
3. 把判别分数当已校准概率
一般可用 predict 的 posterior,但仍应用可靠性图检查。
4. 忽略错判代价只报准确率
医疗、风控题中漏报成本往往主导阈值。
5. 非正态数据硬解释“最优 Bayes”
模型最优是在假设下的最优,假设错了就不再保证。
八、小结
Bayes 判别融合类条件密度与先验(及可选代价),在统计决策论意义下给出最优分类规则;正态假设下落实为 LDA/QDA。
它是判别分析的理论中枢:距离判别、Fisher 判别都能在这一框架下找到位置。赛题中写清假设、先验与代价,比堆砌黑箱更有说服力。