线性判别分析(Linear Discriminant Analysis, LDA) 是一种监督学习的降维方法,也就是说数据集的每个样本是有类别输出。和之前介绍的机器学习降维之主成分分析(PCA)方法不同,PCA是不考虑样本类别输出的无监督学习方法。LDA的原理简单来说就是将带上标签的数据(点),通过投影的方法,投影到维度更低的空间中,使得投影后的点会形成按类别区分。而我们的目标就是使得投影后的数据,类间方差最大,类内方差最小。
以下图为例,假设有两类数据,分别为红色和蓝色。现在我们希望,将这些数据投影到一维的直线上,让每一种类别数据的投影点尽可能的接近,而红色和蓝色数据中心之间的距离尽可能的大。
从上图的两种投影方式能够看出,右图能够更好的满足我们的目标,即类间方差最大,类内方差最小。下面我们来看看LDA内部原理,如何达到我们所希望的目标。
介绍LDA原理之前,我们先了解一些数学知识,即瑞利商(Rayleigh quotient)与广义瑞利商(genralized Rayleigh quotient)。首先来看看瑞利商的函数R(A,x)
R ( A , x ) = x H A x x H x R(A,x) = \frac{x^HAx}{x^Hx} R(A,x)=xHxxHAx
其中x为非零向量,而A为n*n的Hermitan矩阵。Hermitan矩阵是指满足共轭转置矩阵和自己相等的矩阵,即 A H = A A^H=A AH=A。如果矩阵A是实矩阵的话,如果满足 A T = A A^T=A AT=A,那么就是Hermitan矩阵。
瑞利商R(A,x)有一个非常重要的性质,即它的最大值等于矩阵A的最大特征值,而最小值等于矩阵A的最小特征值,即满足
λ m i n ≤ x H A x x H x ≤ λ m a x \lambda_{min}\le \frac{x^HAx}{x^Hx}\le \lambda_{max} λmin≤xHxxHAx≤λmax
以上就是瑞利商的内容,现在看看广义瑞利商内容,广义瑞利商函数R(A,B,x)
R ( A , B , x ) = x H A x x H B x R(A,B,x)= \frac{x^HAx}{x^HBx} R(A,B,x)=xHBxxHAx
其中x为非零向量,而A,B为n*n的Hermitan矩阵,B是正定矩阵。那么R(A,B,x)的最大值和最小值是什么呢?
首先我们先将广义瑞利商转化为瑞利商的情况,令 x = B − 1 / 2 x ′ x=B^{-1/2}x' x=B−1/2x′。则其分母变为
x H B x = x ′ H ( B − 1 / 2 ) H B B − 1 / 2 x ′ = x ′ H B − 1 / 2 B B − 1 / 2 x ′ = x ′ H x ′ x^HBx = x^{'H}(B^{-1/2})^HBB^{-1/2}x' \\ = x^{'H}B^{-1/2}BB^{-1/2}x' \\ =x^{'H}x' xHBx=x′H(B−1/2)HBB−1/2x′=x′HB−1/2BB−1/2x′=x′Hx′
分子转化为
x H A x = x ′ H B − 1 / 2 A B − 1 / 2 x ′ x^HAx= x^{'H}B^{-1/2}AB^{-1/2}x' xHAx=x′HB−1/2AB−1/2x′
此时R(A,B,x)转变为R(A,B,x′)
R ( A , B , x ′ ) = x ′ H B − 1 / 2 A B − 1 / 2 x ′ x ′ H x ′ R(A,B,x')=\frac{x^{'H}B^{-1/2}AB^{-1/2}x'}{x^{'H}x'} R(A,B,x′)=x′Hx′x′HB−1/2AB−1/2x′
利用前面的瑞利商性质,我们可以知道,R(A,B,x)的最大值为矩阵 B − 1 / 2 A B − 1 / 2 B^{-1/2}AB^{-1/2} B−1/2AB−1/2的最大特征值,或者说矩阵 B − 1 A B^{-1}A B−1A的最大特征值,最小值为 B − 1 A B^{- 1}A B−1A的最小特征值。
假如我们数据集为 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m) \} D={(x1,y1),(x2,y2),...,(xm,ym)},其中任意样本 x i x_i xi为n维向量, y i ∈ { 0 , 1 } y_i \in \{0,1 \} yi∈{0,1}。我们定义 N j ( j = 0 , 1 ) N_j(j=0, 1) Nj(j=0,1)为第j类样本的个数, X j ( j = 0 , 1 ) X_j(j=0,1) Xj(j=0,1)为第j类样本的结合, μ j ( j = 0 , 1 ) \mu_j(j=0,1) μj(j=0,1)为第j类样本的均值向量, ∑ j ( j = 0 , 1 ) \sum_j(j=0, 1) ∑j(j=0,1)为第j类样本的协方差矩阵(严格来说是缺少分母部分的协方差矩阵)。其中
μ j = 1 N j ∑ x ∈ X j x ( j = 0 , 1 ) \mu_j = \frac{1}{N_j}\sum_{x\in X_j}\ x(j=0,1) μj=Nj1x∈Xj∑ x(j=0,1)
∑ j = ∑ x ∈ X j ( x − μ j ) ( x − μ j ) T ( j = 0 , 1 ) \sum_j = \sum_{x\in X_j}(x-\mu_j)(x-\mu_j)^T\ (j=0,1) j∑=x∈Xj∑(x−μj)(x−μj)T (j=0,1)
由于是两类数据,因此我们只需要将数据投影到一条直线上即可。假设我们的投影直线向量为 w w w,则对于任意一个样本 x i x_i xi,它在直线w的投影为 w T x i w^Tx_i wTxi。对于我们两个类别的中心点 μ 0 , μ 1 \mu_0,\mu_1 μ0,μ1来说,在直线 w w w的投影为 w T μ 0 , w T μ 1 w^T\mu_0,w^T\mu_1 wTμ0,wTμ1。
由于LDA需要让不同类别数据的中心之间距离尽可能的大,也就是要最大化 ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ ||w^T\mu_0-w^T\mu_1|| ∣∣wTμ0−wTμ1∣∣。同时需要让同一类别数据的投影点尽可能的接近,也就是要最小化 w T ∑ 0 w + w T ∑ 1 w w^T\sum_0w+w^T\sum_1w wT∑0w+wT∑1w。因此,我们的优化目标变为
a r g max ⎵ w J ( w ) = ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 w T ∑ 0 w + w T ∑ 1 w = w T ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w w T ( ∑ 0 + ∑ 1 ) w \underbrace{arg \max}_w J(w) = \frac{||w^T\mu_0-w^T\mu_1||_2^2}{w^T\sum_0w+w^T\sum_1w}=\frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw}{w^T(\sum_0+\sum_1)w} w argmaxJ(w)=wT∑0w+wT∑1w∣∣wTμ0−wTμ1∣∣22=wT(∑0+∑1)wwT(μ0−μ1)(μ0−μ1)Tw
同时,定义类内散度矩阵 S w S_w Sw为
S w = ∑ 0 + ∑ 1 = ∑ x ∈ X 0 ( x − μ 0 ) ( x − μ 0 ) T + ∑ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T S_w=\sum_0+\sum_1=\sum_{x\in X_0}(x-\mu_0)(x-\mu_0)^T + \sum_{x\in X_1}(x-\mu_1)(x-\mu_1)^T Sw=0∑+1∑=x∈X0∑(x−μ0)(x−μ0)T+x∈X1∑(x−μ1)(x−μ1)T
定义类间散度矩阵 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
这样我们的优化目标变为
a r g max ⎵ w J ( w ) = w T S b w w T S w w \underbrace{arg \max}_w J(w) = \frac{w^TS_bw}{w^TS_ww} w argmaxJ(w)=wTSwwwTSbw
上述形式便是我们第二节介绍到的广义瑞利商,利用第二节介绍的广义瑞利商的性质,能够得到 J ( w ) J(w) J(w)的最大值为 S w − 1 / 2 S b S w − 1 / 2 S_w^{-1/2}S_bS_w^{-1/2} Sw−1/2SbSw−1/2的最大特征值,而对应的 w w w为 S w − 1 / 2 S b S w − 1 / 2 S_w^{-1/2}S_bS_w^{-1/2} Sw−1/2SbSw−1/2的最大特征值所对应的特征向量。
S w − 1 S b S_w^{-1}S_b Sw−1Sb的特征值和 S w − 1 / 2 S b S w − 1 / 2 S_w^{-1/2}S_bS_w ^{-1/2} Sw−1/2SbSw−1/2的特征值相同, S w − 1 S b S_w^{-1}S_b Sw−1Sb的特征向量 w ′ w' w′和 S w − 1 / 2 S b S w − 1 / 2 S_w ^{-1/2}S_bS_w ^{-1/2} Sw−1/2SbSw−1/2的特征向量满足 w ′ = S w − 1 / 2 w w'=S_w^{-1/2}w w′=Sw−1/2w的关系。注意到对于二类的时候
S b w ′ = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w ′ = ( μ 0 − μ 1 ) ( w ′ T ( μ 0 − μ 1 ) ) T S_bw' = (\mu_0-\mu_1)(\mu_0-\mu_1)^Tw'=(\mu_0-\mu_1)(w'^T(\mu_0-\mu_1))^T Sbw′=(μ0−μ1)(μ0−μ1)Tw′=(μ0−μ1)(w′T(μ0−μ1))T
即 S b w ′ S_bw' Sbw′的方向恒为 μ 0 − μ 1 \mu_0-\mu_1 μ0−μ1,因此令 S b w ′ = λ ( μ 0 − μ 1 ) S_bw'=\lambda(\mu_0-\mu_1) Sbw′=λ(μ0−μ1),将其带入 ( S w − 1 S b ) w ′ = λ w ′ (S_w^{-1}S_b)w' = \lambda w' (Sw−1Sb)w′=λw′
( S w − 1 S b ) w ′ = S w − 1 λ ( μ 0 − μ 1 ) = λ w ′ (S_w^{-1}S_b)w' = S_w^{-1}\lambda (\mu_0-\mu_1)= \lambda w' (Sw−1Sb)w′=Sw−1λ(μ0−μ1)=λw′
w ′ = S w − 1 ( μ 0 − μ 1 ) w'=S_w^{-1}(\mu_0-\mu_1) w′=Sw−1(μ0−μ1)
也就是说,我们只要求出原始二类样本的均值和方差就可以确定最佳的投影方向w了。
假如我们数据集为 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m) \} D={(x1,y1),(x2,y2),...,(xm,ym)},其中任意样本 x i x_i xi为n维向量, y i ∈ { C 1 , C 2 , . . . , C k } y_i \in \{C_1,C_2,...,C_k \} yi∈{C1,C2,...,Ck}。我们定义 N j ( j = 1 , 2 , . . . , k ) N_j(j=1,2,...,k) Nj(j=1,2,...,k)为第j类样本的个数, X j ( j = 1 , 2 , . . . , k ) X_j(j=1,2,...,k) Xj(j=1,2,...,k)为第j类样本的结合, μ j ( j = 1 , 2 , . . . , k ) \mu_j(j=1,2,...,k) μj(j=1,2,...,k)为第j类样本的均值向量, ∑ j ( j = 1 , 2 , . . . , k ) \sum_j(j=1,2,...,k) ∑j(j=1,2,...,k)为第j类样本的协方差矩阵。
由于是多维向低维投影,此时得到的低位空间就不是一条直线,而是一个超平面。假设投影后得到的低维空间维度为d,对应的基向量为 ( w 1 , w 2 , . . . , w d ) (w_1,w_2,...,w_d) (w1,w2,...,wd),基向量组成的矩阵为W,是一个n*d的矩阵。
此时我们的优化目标变为
W T S b W W T S w W \frac{W^TS_bW}{W^TS_wW} WTSwWWTSbW
其中 S b = ∑ j = 1 k N j ( μ j − μ ) ( μ j − μ ) T S_b=\sum_{j=1}^kN_j(\mu_j-\mu)(\mu_j-\mu)^T Sb=∑j=1kNj(μj−μ)(μj−μ)T, μ \mu μ为所有样本的均值向量。 S w = ∑ j = 1 k S w j = ∑ j = 1 k ∑ x ∈ X j ( x − μ j ) ( x − μ j ) T S_w=\sum_{j=1}^kS_{wj}=\sum_{j=1}^k\sum_{x\in X_j}(x-\mu_j)(x-\mu_j)^T Sw=∑j=1kSwj=∑j=1k∑x∈Xj(x−μj)(x−μj)T。但是有一个问题, W T S b W W^TS_bW WTSbW和 W T S w W W^TS_wW WTSwW都是矩阵,不是标量,无法作为一个标量函数来进行优化,怎么办呢。
常见的一个LDA多类优化目标函数定义如下所示,其中 ∏ d i a g A \prod_{diag}A ∏diagA为A的主对角线元素的乘积,W为n*d的矩阵。
a r g max ⎵ w J ( w ) = ∏ d i a g W T S b W ∏ d i a g W T S w W \underbrace{arg \max}_w J(w) = \frac{\prod_{diag}W^TS_bW}{\prod_{diag}W^TS_wW} w argmaxJ(w)=∏diagWTSwW∏diagWTSbW
J(W)的优化过程可以转化为
J ( W ) = ∏ i = 1 d w i T S b w i ∏ i = 1 d w i T S w w i = ∏ i = 1 d w i T S b w i w i T S w w i J(W)=\frac{\prod_{i=1}^dw_i^TS_bw_i}{\prod_{i=1}^dw_i^TS_ww_i}= \prod_{i=1}^d\frac{w_i^TS_bw_i}{w_i^TS_ww_i} J(W)=∏i=1dwiTSwwi∏i=1dwiTSbwi=i=1∏dwiTSwwiwiTSbwi
上述便是我们前面所介绍的广义瑞利商,最大值便是矩阵 S w − 1 S b S_w^{-1}S_b Sw−1Sb的最大特征值,最大的d个值的乘积就是矩阵 S w − 1 S b S_w^{-1}S_b Sw−1Sb的最大的d个特征值的乘积,此时对应的矩阵W为这最大的d个特征值对应的特征向量张成的矩阵。
由于W是利用了样本的类别得到的投影矩阵,因此它的降维到的维度d最大值为k-1。为什么最大维数不是类别数k呢?因为 S b S_b Sb中每个 μ j − μ \mu_j-\mu μj−μ的秩为1,因此协方差矩阵相加后最大的秩为k(矩阵的秩小于等于各个相加矩阵的秩的和),但是由于如果我们知道前k-1个 μ j \mu_j μj后,最后一个 μ k \mu_k μk可以由前k-1个 μ j \mu_j μj线性表示,因此 S b S_b Sb的秩最大为k-1,即特征向量最多有k-1个。
输入:数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m) \} D={(x1,y1),(x2,y2),...,(xm,ym)},其中任意样本 x i x_i xi为n维向量, y i ∈ { C 1 , C 2 , . . . , C k } y_i\in \{C_1,C_2,...,C_k \} yi∈{C1,C2,...,Ck},降维到的维度d。
输出:降维后的样本集 D ′ D' D′
算法过程:
LDA和PCA有很多相同点和不同点,我们来对比看看两者的区别。
相同点
不同点
不同数据情况下,LDA和PCA降维方法各有优劣。例如某些数据情况下LDA比PCA方法更好
LDA优点
LDA缺点
LDA可能过度拟合数据。
LDA不适合对非高斯分布样本进行降维,PCA也有这个问题。
LDA降维最多降到类别数k-1的维数,如果我们降维的维数大于k-1,则不能使用LDA。