判别分析:原理推导、方法对比与Matlab实战

内容摘要
本文深入解析判别分析的三大核心方法——距离判别、Fisher判别与Bayes判别,结合协方差估计、投影优化及贝叶斯决策理论,系统阐述数学原理与实现细节。通过气象数据春早预测、产品厂家分类及城市竞争力评估三大实战案例,完整演示数据标准化、判别函数构建、分类规则设计及模型验证流程。

关键词:判别分析 马氏距离 Fisher投影 Bayes决策 Matlab分类 协方差估计 关键词:判别分析 马氏距离 Fisher投影 Bayes决策 Matlab分类 协方差估计


1. 判别分析核心概念

判别分析旨在通过统计模型将样本划分到已知类别中,其核心步骤包括:

  1. 特征标准化:消除量纲差异,如Z-score标准化。
  2. 判别函数构建:基于距离、投影或概率构建分类规则。
  3. 分类决策:根据阈值判定样本归属类别。

2. 距离判别法详解

2.1 马氏距离的数学本质

马氏距离通过协方差矩阵修正欧氏距离,反映数据分布结构:
d ( x , A ) = ( x − μ ) T Σ − 1 ( x − μ ) d(x, A) = \sqrt{(x - \mu)^T \Sigma^{-1} (x - \mu)} d(x,A)=(xμ)TΣ1(xμ)
优势:考虑变量相关性,适用于非球形分布数据。

2.2 协方差相同与不同的分类策略

(1) 协方差相同
  • 判别函数
    w ( x ) = ( x − μ ˉ ) T Σ − 1 ( μ 1 − μ 2 ) w(x) = (x - \bar{\mu})^T \Sigma^{-1} (\mu_1 - \mu_2) w(x)=(xμˉ)TΣ1(μ1μ2)
  • 分类规则
    x ∈ { A , w ( x ) ≥ 0 B , w ( x ) < 0 x \in \begin{cases} A, & w(x) \geq 0 \\ B, & w(x) < 0 \end{cases} x{A,B,w(x)0w(x)<0
(2) 协方差不同
  • 判别函数
    w ( x ) = ( x − μ 2 ) T Σ 2 − 1 ( x − μ 2 ) − ( x − μ 1 ) T Σ 1 − 1 ( x − μ 1 ) w(x) = (x - \mu_2)^T \Sigma_2^{-1}(x - \mu_2) - (x - \mu_1)^T \Sigma_1^{-1}(x - \mu_1) w(x)=(xμ2)TΣ21(xμ2)(xμ1)TΣ11(xμ1)
  • 分类规则:直接比较马氏距离,选择较小者。

Matlab代码实现

% 协方差不同时的距离判别
mu1 = mean(class1_data); mu2 = mean(class2_data);
sigma1 = cov(class1_data); sigma2 = cov(class2_data);
d1 = (x_test - mu1) * inv(sigma1) * (x_test - mu1)';
d2 = (x_test - mu2) * inv(sigma2) * (x_test - mu2)';
if d1 < d2
    disp('属于类别A');
else
    disp('属于类别B');
end

3. Fisher判别法深度解析

3.1 投影方向优化

Fisher准则最大化类间散度与类内散度之比:
J ( a ) = a T S B a a T S W a J(a) = \frac{a^T S_B a}{a^T S_W a} J(a)=aTSWaaTSBa
其中:

  • S B = ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T S_B = (\mu_1 - \mu_2)(\mu_1 - \mu_2)^T SB=(μ1μ2)(μ1μ2)T 为类间散度矩阵
  • S W = Σ 1 + Σ 2 S_W = \Sigma_1 + \Sigma_2 SW=Σ1+Σ2 为类内散度矩阵

最优解 a = S W − 1 ( μ 1 − μ 2 ) a = S_W^{-1} (\mu_1 - \mu_2) a=SW1(μ1μ2)

3.2 多类别扩展

K K K类问题,投影矩阵 A A A由前 K − 1 K-1 K1个最大特征值对应的特征向量组成。

Matlab代码实现

% Fisher判别多分类
[coeff, score, latent] = pca(X); % PCA降维
ldaModel = fitcdiscr(X, Y, 'DiscrimType', 'linear');
predicted = predict(ldaModel, X_test);

4. Bayes判别法与风险最小化

4.1 贝叶斯决策理论

  • 先验概率 p 1 , p 2 p_1, p_2 p1,p2 表示各类别出现概率。
  • 误判损失 L ( 1 ∣ 2 ) L(1|2) L(1∣2) 表示将类别2误判为1的损失。
  • 后验概率 P ( Y = k ∣ X = x ) ∝ f k ( x ) p k P(Y=k | X=x) \propto f_k(x) p_k P(Y=kX=x)fk(x)pk

4.2 判别函数与阈值

  • 判别函数
    W ( x ) = ln ⁡ f 1 ( x ) f 2 ( x ) + ln ⁡ p 1 L ( 2 ∣ 1 ) p 2 L ( 1 ∣ 2 ) W(x) = \ln \frac{f_1(x)}{f_2(x)} + \ln \frac{p_1 L(2|1)}{p_2 L(1|2)} W(x)=lnf2(x)f1(x)+lnp2L(1∣2)p1L(2∣1)
  • 分类规则
    x ∈ { Y = 1 , W ( x ) ≥ 0 Y = 2 , W ( x ) < 0 x \in \begin{cases} Y=1, & W(x) \geq 0 \\ Y=2, & W(x) < 0 \end{cases} x{Y=1,Y=2,W(x)0W(x)<0

Matlab代码实现

% Bayes判别(正态分布假设)
mu1 = mean(train1); mu2 = mean(train2);
sigma = cov([train1; train2]); % 假设协方差相同
prior = [0.3, 0.7]; % 先验概率
loss_matrix = [0, 1; 2, 0]; % 误判损失矩阵
bayesModel = fitcnb(train_data, train_label, 'Prior', prior, 'Cost', loss_matrix);
predicted = predict(bayesModel, test_data);

5. 综合案例实战

5.1 气象数据春早预测

数据与问题
  • 指标 x 1 x_1 x1(综合因子1), x 2 x_2 x2(综合因子2)
  • 类别:6个春旱年 vs 8个非春旱年
Matlab实现步骤
  1. 数据标准化
    data = zscore([a; b]); % a为春旱数据,b为非春旱数据
    
  2. 计算均值与协方差
    mu1 = mean(a); mu2 = mean(b);
    sigma = ((n1-1)*cov(a) + (n2-1)*cov(b)) / (n1 + n2 - 2);
    
  3. 构建判别函数
    W ( x ) = 2.0893 x 1 − 3.3165 x 2 − 55.4331 W(x) = 2.0893x_1 - 3.3165x_2 - 55.4331 W(x)=2.0893x13.3165x255.4331
  4. 分类验证
    [predicted, error] = classify(test_data, [a; b], labels, 'linear');
    fprintf('误判率:%.2f%%\n', error*100);
    
结果分析
  • 历史数据拟合率:93%(仅1个样本误判)
  • 新样本预测:输入 ( 23.5 , − 1.9 ) (23.5, -1.9) (23.5,1.9),输出“春旱”。

5.2 产品厂家分类(经济类型判别)

数据与问题
  • 指标:式样、包装、耐久性评分
  • 类别:7家畅销品(1类) vs 5家滞销品(2类)
  • 新样本:3家新厂家的评分数据
Matlab实现步骤
  1. 数据加载与分组
    train = [9 8 7; 7 6 6; ... ]; % 12x3矩阵
    labels = [ones(7,1); 2*ones(5,1)];
    
  2. 多方法分类对比
    % 马氏距离分类
    [result1, err1] = classify(sample, train, labels, 'mahalanobis');
    % Fisher线性分类
    [result2, err2] = classify(sample, train, labels, 'linear');
    % 二次Bayes分类
    [result3, err3] = classify(sample, train, labels, 'quadratic');
    
  3. 结果输出
    厂家1: 类别1(畅销)  
    厂家2: 类别1(畅销)  
    厂家3: 类别2(滞销)  
    

5.3 城市竞争力与基础设施关联分析

数据与问题
  • 竞争力指标:劳动生产率、市场占有率等
  • 基础设施指标:交通、通讯、文化设施等
  • 目标:通过典型相关分析挖掘两组变量关联
关键步骤
  1. 典型相关系数计算
    [A, B, r] = canoncorr(X, Y); % X为竞争力数据,Y为基础设施数据
    
  2. 显著性检验
    [~, pval] = corrcoef([U, V]); % U和V为典型变量
    
  3. 经济解释
    • 第一典型变量:市场占有率与交通设施高度相关( r = 0.92 r=0.92 r=0.92
    • 第二典型变量:居民收入与卫生设施负相关( r = − 0.68 r=-0.68 r=0.68

6. 总结与讨论

  1. 方法对比

    方法假设条件适用场景
    距离判别协方差相同小样本、线性分类
    Fisher判别无分布假设高维数据降维
    Bayes判别已知先验概率与损失矩阵风险敏感决策
  2. 实战建议

    • 数据预处理:标准化、异常值处理(如3σ原则)
    • 模型验证:交叉验证、ROC曲线评估
    • 多方法融合:Bagging或Stacking提升鲁棒性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值