Fisher 判别
一、直观理解:找一根投影轴,让类间尽量散、类内尽量聚
Fisher 判别分析(FDA / LDA 的 Fisher 表述)不直接在原始空间画复杂边界,而是寻找一个(或若干个)投影方向 ,把高维特征压成一维分数 。在这个分数轴上:
- 不同类的中心离得尽量远;
- 同一类内部尽量抱团。
想象把一堆红蓝弹珠的三维坐标投影到墙上:有的角度红蓝混成一团,有的角度两条色带分得很开。Fisher 找的就是“分得最开”的投影角度。
两类时得到一条投影轴;多类时可得到最多 条判别轴,类似于“为分类定制的 PCA”。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 连续特征、类别数不多;希望降维可视化类分离;需要线性判别边界;样本量允许估计类内散度。 |
| 核心优点 | 目标函数直接服务分类;可解释投影方向;多类可出判别平面图;与 LDA 紧密联系;计算相对轻。 |
| 局限与缺点 | 本质线性(对原始特征);类内协方差奇异时需正则;对非正态、非线性边界能力有限;异常值影响均值与散度。 |
Fisher 准则本身不强制正态假设;但若进一步做 Bayes 决策并假设等协方差正态,就得到经典 LDA。
三、核心原理
1. 两类 Fisher 准则
类均值 ,类内散度矩阵
类间散度(两类)
最大化
解满足广义特征值问题 。两类闭式解方向为
阈值可取两类投影均值的中点(等先验、等方差时)。
2. 多类
对所有类求和。最多有 个非零广义特征值,对应判别坐标。
3. 与 PCA 的区别
| PCA | Fisher | |
|---|---|---|
| 是否用标签 | 否 | 是 |
| 目标 | 方差最大 | 类可分性最大 |
| 用途 | 压缩、可视化 | 判别、分类可视化 |
四、关键决策
| 决策点 | 建议 |
|---|---|
| 正则 | ,或对角加载 |
| 维数 | 多类保留 维或按特征值筛选 |
| 标准化 | 量纲差异大时建议;解释载荷时说明 |
| 分类规则 | 投影后最近中心 / LDA 阈值 / 接 Logistic |
| 样本 | 宜大于特征维;否则先 PCA 再 Fisher |
| 可视化 | 前两判别轴散点图是论文利器 |
五、MATLAB 示例
% 三类,两特征(可换成更多维)
X = [
1.0 1.1; 1.2 0.9; 0.8 1.0; 1.1 1.2; % 类1
3.0 1.0; 3.2 1.2; 2.8 0.9; 3.1 1.1; % 类2
2.0 3.0; 2.2 3.1; 1.8 2.9; 2.1 3.2 % 类3
];
y = [1;1;1;1; 2;2;2;2; 3;3;3;3];
% MATLAB LDA(Fisher 线性判别的常用实现)
Mdl = fitcdiscr(X, y, ...
"DiscrimType", "linear", ...
"Gamma", 0); % 0=普通 LDA;>0 正则
yhat = predict(Mdl, X);
disp("混淆矩阵:");
disp(confusionmat(y, yhat));
% 手写两类 Fisher 方向(取类1 vs 类2 演示)
X12 = X(y<=2, :); y12 = y(y<=2);
mu1 = mean(X12(y12==1,:), 1);
mu2 = mean(X12(y12==2,:), 1);
Sw = cov(X12(y12==1,:)) * (sum(y12==1)-1) + ...
cov(X12(y12==2,:)) * (sum(y12==2)-1);
Sw = Sw / (numel(y12) - 2) + 1e-6*eye(size(X,2));
w = Sw \ (mu1 - mu2)';
w = w / norm(w);
fprintf("Fisher 方向 w = [%.3f, %.3f]\n", w(1), w(2));
% 投影分数
score = X12 * w;
figure;
gscatter(score, zeros(size(score)), y12);
xlabel("Fisher 投影"); title("两类 Fisher 一维投影");
% 多类:用 fitcdiscr 的 Delta 等或自行特征分解 Sb, Sw
% 可视化可用预测分数
[label, scoreAll, cost] = predict(Mdl, X);
% scoreAll 为各类判别分数,可做二维嵌入绘图
六、如何解释结果
- 判别方向载荷: 各分量大小表示特征对“拉开类别”的贡献;
- 投影图:类是否沿判别轴分离、重叠区在哪;
- 特征值/判据 :分离强度;
- 与 PCA 对照:第一主成分未必是最佳判别方向;
- 报告:
DiscrimType、正则、类均值、错分率、投影图。
七、常见误区
1. 把 Fisher 当成无监督降维
它使用类标签,与 PCA 目标不同。
2. 不可逆仍硬求逆
高维小样本必须正则或先降维。
3. 非线性可分问题死用线性 Fisher
可试二次判别、核 Fisher 或 SVM/树模型。
4. 多类只保留 1 维投影就下结论
可能第二判别轴才分开某两类。
5. 忽略类样本量差异
散度矩阵与阈值应反映 或先验。
八、小结
Fisher 判别寻找使类间散度与类内散度之比最大的投影,把分类问题变成低维可分空间中的几何决策。
它是统计学习与模式识别的经典支柱,既可直接分类,也可为论文提供“类别分离可视化”。样本充足、边界近似线性时,它往往是比黑箱模型更干净的选择。