LDA算法(Fisher线性判别)

LDA算法目的

最小化类内方差,最大化不同类中心间的距离。

LDA算法推导过程

假设:

样本共 K K 类,每一类的样本个数为 N 1 , N 2 , , N k N_{1},N_{2},……,N_{k}
x 1 1 , x 1 2 , , x 1 N 1 x_{1}^{1},x_{1}^{2},……,x_{1}^{N_{1}} 对应第一类
……

x K 1 , x K 2 , , x 1 N K x_{K}^{1},x_{K}^{2},……,x_{1}^{N_{K}} 对应第 K K
以上所有 x i j x_{i}^{j} 皆为 n n 维向量。
x ~ i j \tilde{x}_{i}^{j} x i j x_{i}^{j} 变化后的样本,即:
x ~ i j = < x , u > u = ( x T u ) u \tilde{x}_{i}^{j}=<x,u>u=(x^{T}u)u

类内方差

k k 类之间的样本方差为:
S k = 1 N k x ~ D k ( x ~ m ~ ) T ( x ~ m ~ ) S_{k}=\frac{1}{N_{k}}\sum_{\tilde{x}\in D_{k}}(\tilde{x}-\tilde{m})^{T}(\tilde{x}-\tilde{m})
其中, D k D_{k} 为由第 k k 类样本所构成的空间。 m ~ \tilde{m} 为变化后的第 k k 类样本的均值,即:
m ~ = x ~ D k x ~ N k \tilde{m}=\frac{\mathop{\sum}\limits_{\tilde{x}\in{D_{k}}}\tilde{x}}{N_{k}}
m ~ \tilde{m} 也是 n n 维向量。
x ~ i j = ( x T u ) u \tilde{x}_{i}^{j}=(x^{T}u)u 代入 S k S_{k} 得:
S k = 1 N k x D k [ ( x T u ) u T ( m T u ) u T ] [ ( x T u ) u ( m T u ) u ] S_{k}=\frac{1}{N_{k}}\sum_{x\in D_{k}}[(x^{T}u)u^{T}-(m^{T}u)u^{T}][(x^{T}u)u-(m^{T}u)u]
= 1 N k x D k [ ( x T u ) 2 u T u 2 ( x T u ) ( m T u ) u T u + ( m T u ) 2 u T u ] =\frac{1}{N_{k}}\sum_{x\in D_{k}}[(x^{T}u)^{2}u^{T}u-2(x^{T}u)(m^{T}u)u^{T}u+(m^{T}u)^{2}u^{T}u]
假设 u T u = a ( a ) u^{T}u=a\quad(a为一常数)
则:
S k = a N k x D k [ ( x T u ) 2 2 ( x T u ) ( m T u ) + ( m T u ) 2 ] S_{k}=\frac{a}{N_{k}}\sum_{x \in D_{k}}[(x^{T}u)^{2}-2(x^{T}u)(m^{T}u)+(m^{T}u)^{2}]
= a x D k ( x T u ) 2 N k 2 a x D k x T ( u m T u ) N k + a x D k ( m T u ) 2 N k =\frac{a\mathop{\sum}\limits_{x\in D_{k}}(x^{T}u)^{2}}{N_{k}}-2\frac{a\mathop{\sum}\limits_{x\in D_{k}}x^{T}(um^{T}u)}{N_{k}}+\frac{a\mathop{\sum}\limits_{x\in D_{k}}(m^{T}u)^{2}}{N_{k}}
= a x D k u T x x T u N k 2 a x D k x T N k u m T u + a ( m T u ) 2 =\frac{a\mathop{\sum}\limits_{x\in D_{k}}u^{T}xx^{T}u}{N_{k}}-2\frac{a\mathop{\sum}\limits_{x\in D_{k}}x^{T}}{N_{k}}um^{T}u+a(m^{T}u)^{2}
= u T a x D k x x T N k u a ( m T u ) 2 =u^{T}\frac{a\mathop{\sum}\limits_{x\in D_{k}}xx^{T}}{N_{k}}u-a(m^{T}u)^{2}
= u T a x D k x x T N k u a u T m m T u =u^{T}\frac{a\mathop{\sum}\limits_{x\in D_{k}}xx^{T}}{N_{k}}u-au^{T}mm^{T}u
= a u T ( x D k x x T N k m m T ) u =au^{T}(\frac{\mathop{\sum}\limits_{x\in D_{k}}xx^{T}}{N_{k}}-mm^{T})u
所以 K K 类样本的总方差为:
k = 1 K S k = k = 1 K a u T ( x D k x x T N k m m T ) u \sum_{k=1}^{K}S_{k}=\sum_{k=1}^{K}au^{T}(\frac{\mathop{\sum}\limits_{x\in D_{k}}xx^{T}}{N_{k}}-mm^{T})u
S w = k = 1 K ( x D k x x T N k m m T ) S_{w}=\mathop{\sum}\limits_{k=1}^{K}(\frac{\mathop{\sum}\limits_{x\in D_{k}}xx^{T}}{N_{k}}-mm^{T})
则:
k = 1 K S k = a u T S w u \sum_{k=1}^{K}S_{k}=au^{T}S_{w}u
此为总类内方差。

不同类中心间的距离

S i , j S_{i,j} 为第 i i 类和第 j j 类中心间的距离,则:
S i , j = ( m ~ i m ~ j ) T ( m ~ i m ~ j ) S_{i,j}=(\tilde{m}_{i}-\tilde{m}_{j})^{T}(\tilde{m}_{i}-\tilde{m}_{j})
m ~ = ( m T u ) u \tilde{m}=(m^{T}u)u 代入得:
S i , j = [ ( m i T u ) u T ( m j T u ) u T ] [ ( m i T u ) u ( m j T u ) u ] S_{i,j}=[(m_{i}^{T}u)u^{T}-(m_{j}^{T}u)u^{T}][(m_{i}^{T}u)u-(m_{j}^{T}u)u]
= u T [ ( m i T u ) ( m j T u ) ] [ ( m i T u ) ( m j T u ) ] u =u^{T}[(m_{i}^{T}u)-(m_{j}^{T}u)][(m_{i}^{T}u)-(m_{j}^{T}u)]u
= u T [ ( m i T u ) ( m j T u ) ] [ ( u T m i ) ( u T m j ) ] u =u^{T}[(m_{i}^{T}u)-(m_{j}^{T}u)][(u^{T}m_{i})-(u^{T}m_{j})]u
= u T ( m i T m j T ) u u T ( m i m j ) u =u^{T}(m_{i}^{T}-m_{j}^{T})uu^{T}(m_{i}-m_{j})u
= u T ( m i m j ) T a ( m i m j ) u =u^{T}(m_{i}-m_{j})^{T}a(m_{i}-m_{j})u
= a u T ( m i m j ) T ( m i m j ) u =au^{T}(m_{i}-m_{j})^{T}(m_{i}-m_{j})u
所以对于全部 K K 类样本来说,
i , j i j S i , j = a u T i , j i j ( m i m j ) T ( m i m j ) u \sum_{\mathop{i,j}\limits_{i\ne j}} S_{i,j}=au^{T}\sum_{\mathop{i,j}\limits_{i\ne j}}(m_{i}-m_{j})^{T}(m_{i}-m_{j})u
S b = i , j i j ( m i m j ) T ( m i m j ) S_{b}=\mathop{\sum}\limits_{\mathop{i,j}\limits_{i\ne j}}(m_{i}-m_{j})^{T}(m_{i}-m_{j}) ,则:
i , j i j S i , j = a u T S b u \sum_{\mathop{i,j}\limits_{i\ne j}} S_{i,j}=au^{T}S_{b}u
LDA算法的目的即将 k = 1 K S k \mathop{\sum}\limits_{k=1}^{K}S_{k} 最小化,将 i , j i j S i , j \mathop{\sum}\limits_{\mathop{i,j}\limits_{i\ne j}} S_{i,j} 最大化。
设需要优化的函数为:
J ( u ) = u T S b u u T S w u J_{(u)}=\frac{u^{T}S_{b}u}{u^{T}S_{w}u}
因为 u u 只对方向有要求而对大小没有限制,故可以假设 u T S w u = 1 u^{T}S_{w}u=1 ,然后保证 u T S b u u^{T}S_{b}u 最大化。
即此问题可以被转化为最优化问题:
m a x    u T S b u s . t .    u T S w u = 1 max\; u^{T}S_{b}u\quad s.t.\; u^{T}S_{w}u=1
引入拉格朗日函数,
L ( u , λ ) = u T S b u + λ ( 1 u T S w u ) L_{(u,\lambda)}=u^{T}S_{b}u+\lambda(1-u^{T}S_{w}u)
L u = 0 \frac{\partial L}{\partial u}=0 ,得 S b u = λ S w u S_{b}u=\lambda S_{w}u
因为 S w = k = 1 K ( x D k x x T N k m m T ) S_{w}=\mathop{\sum}\limits_{k=1}^{K}(\frac{\mathop{\sum}\limits_{x\in D_{k}}xx^{T}}{N_{k}}-mm^{T}) ,而 x D k x x T N k m m T \frac{\mathop{\sum}\limits_{x\in D_{k}}xx^{T}}{N_{k}}-mm^{T} 实质上为 k k 类样本的协方差矩阵,通常为正定的,求和后更加正定。故 S w S_{w} 一般是可逆的。
故可得:
S w 1 S b u = λ u S_{w}^{-1}S_{b}u=\lambda u
T = S w 1 S b T=S_{w}^{-1}S_{b} ,则上式转化为:
T u = λ u Tu=\lambda u
求出 T T 的特征值和特征向量,从而得到 u u 的最好方向。

PCA和LDA的区别

P C A PCA 最小重构误差,使得投影后的值和原来的值尽量接近,属于非监督学习,用来解决降维问题。
L D A LDA 最大化类间距离,最小化类内距离,使得投影后的不同类别的样本分的更开,属于监督学习,用来解决分类问题。
假设只有两类,则 S b = ( m 1 m 2 ) ( m 1 m 2 ) T S_{b}=(m_{1}-m_{2})(m_{1}-m_{2})^{T} ,由于 m 1 m 2 m_{1}-m_{2} 为一 n n 维向量,则 R ( S b ) 1 R(S_{b})\leq1 ,故 R ( T ) 1 R(T)\leq1 。所以矩阵 T T 最多只有一个非零特征根,即有意义的特征向量最多只有一个,即最多只能得到一个投影方向 u u
实际上,若有 N N 类样本,则通过 L D A LDA 算法最多只能得到 N 1 N-1 个投影方向。
而对于 P C A PCA 算法,若样本维数为 n n 维,则无论如何都可以找到 n n 个投影方向。
例如,对于两类 10 10 维向量, L D A LDA 算法可以得到一个投影方向,而 P C A PCA 算法可以得到十个投影方向。

发布了36 篇原创文章 · 获赞 1 · 访问量 561

猜你喜欢

转载自blog.csdn.net/qq_36758914/article/details/103386671