线性判别分析LDA计算例题详解

线性判别分析(Linear Discriminant Analysis, LDA)的核心思想是:将给定训练集投影到特征空间的一个超平面上,并设法使同类样本投影点尽可能接近,异类样本投影点尽可能远离

image-20230505162753499

由于做题时针对的是解题过程,因此原理相关方面省略,具体可参考👉从协方差的角度详解线性判别分析原理

计算步骤【二分类问题】:

  1. 计算类间散度矩阵 S b S_b Sb
    S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^T Sb=(μ0μ1)(μ0μ1)T
    其中 μ 0 \mu_0 μ0 为标签为 0 0 0 的特征平均值,其值个数等于特征个数, μ 1 \mu_1 μ1 同理

  2. 计算类内散度矩阵 S ω S_\omega Sω
    S ω = Σ 0 + Σ 1 S_\omega = \Sigma_0 + \Sigma_1\\ Sω=Σ0+Σ1
    其中 Σ 0 \Sigma_0 Σ0 是标签为 0 0 0 的样本协方差矩阵,若有 n n n 个特征,则其大小为 n × n n\times n n×n
    Σ 0 = [ C o v ( f 1 , f 1 ) C o v ( f 1 , f 2 ) ⋯ C o v ( f 1 , f n ) C o v ( f 2 , f 1 ) C o v ( f 2 , f 2 ) ⋯ C o v ( f 2 , f n ) ⋮ ⋮ ⋱ ⋮ C o v ( f n , f 1 ) C o v ( f n , f 2 ) ⋯ C o v ( f n , f n ) ] \Sigma_0 = \begin{bmatrix} Cov(f_1,f_1)& Cov(f_1,f_2)& \cdots &Cov(f_1,f_n)\\ Cov(f_2,f_1)& Cov(f_2,f_2)&\cdots &Cov(f_2,f_n)\\ \vdots & \vdots & \ddots & \vdots \\ Cov(f_n,f_1)& Cov(f_n,f_2)& \cdots &Cov(f_n,f_n) \end{bmatrix} \\ Σ0= Cov(f1,f1)Cov(f2,f1)Cov(fn,f1)Cov(f1,f2)Cov(f2,f2)Cov(fn,f2)Cov(f1,fn)Cov(f2,fn)Cov(fn,fn)
    其中 C o v ( x 1 , x 2 ) = 1 n − 1 ∑ i = 1 n ( x 1 i − x 1 ‾ ) ( x 2 i − x 2 ‾ ) Cov(x_1,x_2)=\dfrac{1}{n-1}\sum_{i=1}^{n}(x_1^{i}-\overline{x_1})(x_2^{i}-\overline{x_2}) Cov(x1,x2)=n11i=1n(x1ix1)(x2ix2) n n n 为样本个数

  3. 计算矩阵 S ω − 1 S b S_\omega^{-1}S_b Sω1Sb

    逆矩阵可以使用初等变换辅助求解,变换规则如下:

    • 对调矩阵两行(列)
    • 矩阵某行(列)乘以非零常数 k k k
    • 矩阵某行(列)倍数加到另一行
  4. S ω − 1 S b S_\omega^{-1}S_b Sω1Sb 矩阵求特征值和特征向量,选择特征值最大的特征向量作为 ω \omega ω【需要归一化】

    • 特征值可通过 ∣ λ E − A ∣ = 0 |\lambda E-A|=0 λEA=0 求得

    • 将特征值带入方程 ( λ 0 E − A ) X = 0 (\lambda_0E-A)X=0 (λ0EA)X=0 ,非零解即为特征值 λ 0 \lambda_0 λ0 对应得特征向量

      具体可参考考研数学线性代数部分,不再赘述

  5. 计算得到投影后的数据点 Y = X ω Y=X\omega Y=Xω

    将样本值 X X X 代入,得到的结果即投影后对应的位置

题目

假设有如下 10 10 10 个样本,样本有 2 2 2 个特征,前 5 5 5 项为负类,后 5 5 5 项为正类
D = { X 1 , X 2 , X 3 , X 4 , X 5 , X 6 , X 7 , X 8 , X 9 , X 10 } = { ( 4 , 2 ) T , ( 2 , 4 ) T , ( 2 , 3 ) T , ( 3 , 6 ) T , ( 4 , 4 ) T , ( 9 , 10 ) T , ( 6 , 8 ) T , ( 9 , 5 ) T , ( 8 , 7 ) T , ( 10 , 8 ) T } \begin{align} \nonumber D & =\left\{ X_1,X_2,X_3,X_4,X_5,X_6,X_7,X_8,X_9,X_{10} \right\}\\\nonumber & =\left\{ (4,2)^T,(2,4)^T,(2,3)^T,(3,6)^T,(4,4)^T,(9,10)^T,(6,8)^T,(9,5)^T,(8,7)^T,(10,8)^T \right\}\\ \nonumber \end{align} D={X1,X2,X3,X4,X5,X6,X7,X8,X9,X10}={(4,2)T,(2,4)T,(2,3)T,(3,6)T,(4,4)T,(9,10)T,(6,8)T,(9,5)T,(8,7)T,(10,8)T}
计算当前样本的类间散度矩阵 S b S_b Sb 和类内散度矩阵 S ω S_\omega Sω

题目所给样本可组成如下矩阵👇

样本特征值1特征值2分类
X 1 X_1 X1420
X 2 X_2 X2240
X 3 X_3 X3230
X 4 X_4 X4360
X 5 X_5 X5440
X 6 X_6 X69101
X 7 X_7 X7681
X 8 X_8 X8951
X 9 X_9 X9871
X 10 X_{10} X101081

μ 0 = [ ( 4 + 2 + 2 + 3 + 4 5 ) , ( 2 + 4 + 3 + 6 + 4 5 ) ] T = [   3 , 3.8   ] T ∴ μ 1 = [   8.4 , 7.6   ] T ∴ S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T = [ − 5.4 − 4.2 ] [ − 5.4 − 4.2 ] = [ 29.16 22.68 22.68 17.64 ] S ω = Σ 0 + Σ 1 Σ 0 = [ C o v ( f 1 , f 1 ) C o v ( f 1 , f 2 ) C o v ( f 2 , f 1 ) C o v ( f 2 , f 2 ) ] \mu_0=[(\dfrac{4+2+2+3+4}{5}),(\dfrac{2+4+3+6+4}{5})]^T=[\ 3,3.8\ ]^T\\ \therefore \mu_1=[\ 8.4,7.6\ ]^T\\ \begin{align}\nonumber \therefore S_b & = (\mu_0-\mu_1)(\mu_0-\mu_1)^T \\\nonumber & = \begin{bmatrix} -5.4\\-4.2 \end{bmatrix} \begin{bmatrix} -5.4 & -4.2 \end{bmatrix}\\ & =\nonumber \begin{bmatrix} 29.16 & 22.68\\ 22.68 & 17.64 \end{bmatrix} \end{align}\\ S_\omega = \Sigma_0 + \Sigma_1\\ \Sigma_0= \begin{bmatrix} Cov(f_1,f_1) & Cov(f_1,f_2)\\ Cov(f_2,f_1) & Cov(f_2,f_2)\\ \end{bmatrix} μ0=[(54+2+2+3+4),(52+4+3+6+4)]T=[ 3,3.8 ]Tμ1=[ 8.4,7.6 ]TSb=(μ0μ1)(μ0μ1)T=[5.44.2][5.44.2]=[29.1622.6822.6817.64]Sω=Σ0+Σ1Σ0=[Cov(f1,f1)Cov(f2,f1)Cov(f1,f2)Cov(f2,f2)]

以求 C o v ( f 1 , f 2 ) Cov(f_1,f_2) Cov(f1,f2) 为例,如下👇,由于是对标签为 0 0 0 的样本计算协方差, ∴ f 1 ‾ = 3 , f 2 ‾ = 3.8 \therefore\overline{f_1}=3,\overline{f_2}=3.8 f1=3f2=3.8
C o v ( f 1 , f 2 ) = 1 5 − 1 ∑ i = 1 5 ( f 1 i − f 1 ‾ ) ( f 2 i − f 2 ‾ ) = 1 4 [ ( 4 − 3 ) ( 2 − 3.8 ) + ( 2 − 3 ) ( 4 − 3.8 ) + ( 2 − 3 ) ( 3 − 3.8 ) + ( 3 − 3 ) ( 6 − 3.8 )       + ( 4 − 3 ) ( 4 − 3.8 ) ] = 1 4 × ( − 1.8 − 1.8 + 0.8 + 1.8 ) = − 0.25 \begin{align}\nonumber Cov(f_1,f_2) &=\dfrac{1}{5-1}\sum_{i=1}^{5}(f_1^{i}-\overline{f_1})(f_2^{i}-\overline{f_2})\\\nonumber & = \dfrac14[(4-3)(2-3.8)+(2-3)(4-3.8)+(2-3)(3-3.8)+(3-3)(6-3.8)\\&\ \ \ \ \ \nonumber +(4-3)(4-3.8)]\\\nonumber & = \dfrac14\times(-1.8-1.8+0.8+1.8)\\\nonumber & = -0.25 \end{align}\\ Cov(f1,f2)=511i=15(f1if1)(f2if2)=41[(43)(23.8)+(23)(43.8)+(23)(33.8)+(33)(63.8)     +(43)(43.8)]=41×(1.81.8+0.8+1.8)=0.25
其他数值都可根据类似方法得到
∴ Σ 0 = [ 1 − 0.25 − 0.25 2.2 ] Σ 1 = [ 2.3 − 0.05 − 0.05 3.3 ] ∴ S ω = Σ 0 + Σ 1 = [ 3.3 − 0.3 − 0.3 5.5 ] \therefore \Sigma_0= \begin{bmatrix} 1 & -0.25\\ -0.25 & 2.2\\ \end{bmatrix}\\ \Sigma_1= \begin{bmatrix} 2.3 & -0.05\\ -0.05 & 3.3\\ \end{bmatrix}\\ \therefore S_\omega=\Sigma_0+\Sigma_1= \begin{bmatrix} 3.3 & -0.3\\ -0.3 & 5.5 \end{bmatrix} Σ0=[10.250.252.2]Σ1=[2.30.050.053.3]Sω=Σ0+Σ1=[3.30.30.35.5]

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值