距离判别
一、直观理解:离哪个类的“典型位置”更近
距离判别是最朴素的统计判别思想:先为每一类估计一个中心(通常是均值向量),新样本算到各类中心的距离,最近者胜。
好比几支球队各自有一套“平均体能画像”。来了一名新运动员,看他的指标向量更接近哪支队的平均画像,就初步划入哪一类。若再考虑各类内部的散开形状(协方差),距离就从普通欧氏距离升级为马氏距离——在“扁长”的类里,沿长轴方向多走一点不一定算远。
距离判别不显式建模后验概率,但在正态且协方差相同等条件下,它与 Bayes 判别的决策边界可以一致。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 类别用中心可代表;特征连续;需要可解释的几何判别;作为 LDA/QDA 的入门与对照;样本量允许稳定估计均值(及协方差)。 |
| 核心优点 | 原理极清晰;计算简单;马氏距离能吸收特征尺度与相关;多类直接推广。 |
| 局限与缺点 | 对非凸、多峰类束手无策;均值被异常值拉偏;高维协方差难估;类别重叠严重时准确率有限。 |
使用前:检查各类样本量、是否近似椭圆分布、是否需先标准化或降维、异常值是否处理。
三、核心原理
设第 类训练样本均值为 ,协方差为 ,总体或合并协方差为 。
1. 欧氏距离判别
判 属于使 最小的类。等价于各类协方差为 的假设。
2. 马氏距离判别
- 若各类共用 (合并协方差),决策边界为线性;
- 若每类用各自 ,边界为二次。
3. 与线性判别的联系
在等协方差正态假设下,最小化马氏距离等价于最大化
(忽略与 无关的项),即 LDA 判别函数的核心部分。
四、关键决策
| 决策点 | 建议 |
|---|---|
| 欧氏 vs 马氏 | 特征相关或量纲不同 → 马氏或先标准化再欧氏 |
| 合并 vs 分类协方差 | 样本少用合并;各类形状明显不同且 充足可用 |
| 奇异协方差 | 高维时加对角加载,或先 PCA |
| 先验 | 纯距离判别默认等先验;类比例悬殊应并入 Bayes 框架 |
| 稳健性 | 均值可改用中位数/稳健位置估计 |
五、MATLAB 示例
% 两类二维数据
X = [
1.0 1.2; 1.1 0.9; 0.9 1.1; 1.2 1.0; % 类1
3.0 3.1; 2.9 2.8; 3.2 3.0; 2.8 3.2 % 类2
];
y = [1;1;1;1; 2;2;2;2];
classes = unique(y);
p = size(X, 2);
mu = zeros(numel(classes), p);
for i = 1:numel(classes)
mu(i, :) = mean(X(y == classes(i), :), 1);
end
% 合并协方差(无偏)
Sw = zeros(p, p);
for i = 1:numel(classes)
Xi = X(y == classes(i), :);
Sw = Sw + cov(Xi) * (size(Xi,1) - 1);
end
Sw = Sw / (size(X,1) - numel(classes));
Sw = Sw + 1e-6 * eye(p); % 加载保证可逆
% 马氏距离判别
xnew = [1.5, 1.4];
d2 = zeros(numel(classes), 1);
for i = 1:numel(classes)
d = xnew - mu(i, :);
d2(i) = d / Sw * d'; % 行向量形式
end
[~, idx] = min(d2);
fprintf("新样本马氏距离:"); disp(d2');
fprintf("判别类别 = %d\n", classes(idx));
% 欧氏距离对照
dE = sum((mu - xnew).^2, 2);
[~, idxE] = min(dE);
fprintf("欧氏判别类别 = %d\n", classes(idxE));
% 批量预测并混淆矩阵
yhat = zeros(size(y));
for n = 1:size(X,1)
d2 = zeros(numel(classes),1);
for i = 1:numel(classes)
d = X(n,:) - mu(i,:);
d2(i) = d / Sw * d';
end
[~, idx] = min(d2);
yhat(n) = classes(idx);
end
disp("训练集约混淆矩阵:");
disp(confusionmat(y, yhat));
也可用 fitcdiscr 设 DiscrimType="linear"/"quadratic" 得到与马氏距离等价的判别器。
六、如何解释结果
- 类中心:报告各类均值向量,赋予业务含义;
- 距离表:新样本到各类的 ,说明“近多少”;
- 协方差形态:相关强时说明为何必须用马氏距离;
- 边界形状:等协方差 → 直线(平面)边界;异协方差 → 二次边界;
- 报告:距离定义、协方差估计、是否加载/降维、错分样本距中心情况。
七、常见误区
1. 量纲混乱仍用欧氏距离
“身高 cm + 收入元”会让距离失去意义。
2. 高维直接求
样本不足时协方差奇异或病态,必须正则化或降维。
3. 多峰类别仍用单一中心
一个均值无法代表“双团”类,应考虑混合模型或非线性分类器。
4. 忽略先验与代价
距离最近不等于风险最小;不对称代价应进入 Bayes 决策。
5. 把训练重代入准确率当泛化
小样本必须交叉验证。
八、小结
距离判别用“到类中心的远近”分类;马氏距离把尺度与相关性纳入几何,是通往 LDA/QDA 的直观桥梁。
它适合作为统计判别的第一刀:先看类中心是否可分,再决定是否升级到 Fisher、Bayes 或机器学习模型。