不同于PCA方差最大化理论,LDA算法的思想是将数据投影到低维空间之后,使得同一类数据尽可能的紧凑,不同类的数据尽可能分散。
它的数据集的每个样本是有类别输出的,投影后类间方差最大,类内方差最小
LDA需要数据满足如下两个假设:
- 原始数据根据样本均值进行分类
- 不同类的数据拥有相同的协方差矩阵
一般来说第2条很难满足,所以在实际使用中如果原始数据主要是根据均值来划分的,此时LDA降维效果很好,但是PCA效果就很差,如下图:
PCA是寻找数据集中方差最大的方向作为主成分分量的轴,而LDA是最优化分类的特征子空间。因此PCA和LDA各有适用情况,需要根据数据对症下药。
先对整个问题做个定义:
-
已有如下的数据集 D = ( x 1 ( 1 ) , x 2 ( 1 ) , ⋯ , x n ( 1 ) ) , ( x 1 ( 2 ) , x 2 ( 2 ) , ⋯ , x n ( 2 ) ) , ⋯ , ( x 1 ( k ) , x 2 ( k ) , ⋯ , x n ( k ) ) D=(x_1^{(1)},x_2^{(1)},\cdots,x_n^{(1)}),(x_1^{(2)},x_2^{(2)},\cdots,x_n^{(2)}),\cdots,(x_1^{(k)},x_2^{(k)},\cdots,x_n^{(k)}) D=(x1(1),x2(1),⋯,xn(1)),(x1(2),x2(2),⋯,xn(2)),⋯,(x1(k),x2(k),⋯,xn(k)),共k个样本
按我个人的习惯写为矩阵 X = [ x 1 , x 2 , ⋯ , x k ] = [ x 11 x 21 ⋯ x k 1 x 12 x 22 ⋯ x k 2 ⋮ ⋮ ⋯ ⋮ x 1 n x 2 n ⋯ x k n ] \mathcal{X}=[x_1,x_2,\cdots,x_k]=\begin{bmatrix}x_{11}&x_{21}&\cdots&x_{k1}\\x_{12}&x_{22}&\cdots&x_{k2}\\\vdots&\vdots&\cdots&\vdots\\x_{1n}&x_{2n}&\cdots&x_{kn}\end{bmatrix} X=[x1,x2,⋯,xk]= x11x12⋮x1nx21x22⋮x2n⋯⋯⋯⋯xk1xk2⋮xkn
-
任一样本 x ( i ) x^{(i)} x(i)为n维向量,属于类别 y ( i ) ∈ { C 1 , C 2 , ⋯ , C m } y^{(i)}\in\{C_1,C_2,\cdots,C_m\} y(i)∈{C1,C2,⋯,Cm},共m类
对应写为矩阵 Y = [ y 1 y 2 ⋮ y k ] \mathcal{Y}=\begin{bmatrix}y_1\\y_2\\\vdots\\y_k\end{bmatrix} Y= y1y2⋮yk
-
X j X_j Xj是属于第 j j j类样本的集合,集合内样本的数量为 N j N_j Nj, μ j \mu_j μj是第 j j j类样本的均值, S j S_j Sj是第 j j j类样本的散度矩阵, j ∈ 1 , 2 , ⋯ , m j\in1,2,\cdots,m j∈1,2,⋯,m
μ j = 1 N j ∑ x ∈ X j x = [ x ˉ ⋅ 1 x ˉ ⋅ 2 ⋮ x ˉ ⋅ n ] \mu_j=\frac{1}{N_j}\sum_{x\in X_j}x=\begin{bmatrix}\bar x_{\cdot1}\\\bar x_{\cdot2}\\\vdots\\\bar x_{\cdot n}\end{bmatrix} μj=Nj1∑x∈Xjx= xˉ⋅1xˉ⋅2⋮xˉ⋅n , S j = ∑ x ∈ X j ( x − μ j ) ( x − μ j ) T S_j=\sum_{x\in X_j}(x-\mu_j)(x-\mu_j)^T Sj=∑x∈Xj(x−μj)(x−μj)T,显然 S j S_j Sj的维度是 N j × N j N_j\times N_j Nj×Nj
二分类LDA
先考虑最为简单的情况, j ∈ { 0 , 1 } j\in \{0,1\} j∈{0,1},即二分类LDA
由于是两类数据,因此我们只需要将数据投影到一条直线上即可。
这里我思考了很久为什么n维的数据点要投影到一条直线(降维到1维)?降维后的维数到底与什么有关?样本标签y到底对降维起了什么作用?
参考:LDA线性判别分析原理篇
首先回答第一个问题:我们的任务是为了分类服务的,那么我们需要投影后的样本尽可能的分开,最简单的度量类别之间分开程度的方式就是类别均值投影之后的距离,注意距离是个标量,是一个数,那么它的维数自然就是1维。
(前面是针对只有两个类的情况,假设类别变成多个了,那么要怎么改变,才能保证投影后类别能够分离呢?我们之前讨论的是如何将n维降到一维,现在类别多了,一维可能已经不能满足要求,所以才有了多类别的LDA)
第二个问题(具体的推导在多分类LDA中):LDA降维最多只能降到“类别数-1”,因为类间散度矩阵 S b S_b Sb的秩最大为“类别数-1”,所以计算时最多会有“类别数-1”个特征值不为零的特征向量。
这也是LDA相较于PCA的一大缺点,PCA降维后的维数是任意的,而LDA却有限制
(所以当数据维度很高,但是类别数少的时候,算法并不适用)
第三个问题:我个人理解,LDA是监督学习,要利用先验知识(已有的数据点和所属类别)学习到一个降维的工具 w w w,学习完以后才可以对新来的数据进行降维,方便分类。(而PCA则是无监督学习,无法处理不同类别的数据,只能针对同一类别的数据)
我们需要投影后的样本尽可能的分开,最简单的度量类别之间分开程度的方式就是类别均值投影之后的距离,保证让投影之后的中心距离尽可能的大,也就是:
∣ μ 1 ′ − μ 2 ′ ∣ 2 = ∣ w T μ 1 − w T μ 2 ∣ 2 = ∣ w T ( μ 1 − μ 2 ) ∣ 2 |\mu_1'-\mu_2'|^2=|w^T\mu_1-w^T\mu_2|^2=|w^T(\mu_1-\mu_2)|^2 ∣μ1′−μ2′∣2=∣wTμ1−wTμ2∣2=∣wT(μ1−μ2)∣2,即将均值向量进行线性变换,使变换后两类的均值向量之间的距离尽可能的远
对上式进行化简:
∣ μ 1 ′ − μ 2 ′ ∣ 2 = [ w T ( μ 1 − μ 2 ) ] [ w T ( μ 1 − μ 2 ) ] T = w T ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T w |\mu_1'-\mu_2'|^2=[w^T(\mu_1-\mu_2)][w^T(\mu_1-\mu_2)]^T=w^T(\mu_1-\mu_2)(\mu_1-\mu_2)^Tw ∣μ1′−μ2′∣2=[wT(μ1−μ2)][wT(μ1−μ2)]T=wT(μ1−μ2)(μ1−μ2)Tw
上式有个潜在的问题:通过增大w,这个表达式的值可以任意增大,因此我们限定这个w只能是单位长度
再考虑另一个要求,类内方差尽可能小,同PCA一样,我们考虑散度而非方差:
S 1 ′ + S 2 ′ = ∑ x ∈ X 1 ( w T x − w T μ 1 ) ( w T x − w T μ 1 ) T + ∑ x ∈ X 2 ( w T x − w T μ 2 ) ( w T x − w T μ 2 ) T S_1'+S_2'=\sum_{x\in X_1}(w^Tx-w^T\mu_1)(w^Tx-w^T\mu_1)^T+\sum_{x\in X_2}(w^Tx-w^T\mu_2)(w^Tx-w^T\mu_2)^T S1′+S2′=∑x∈X1(wTx−wTμ1)(wTx−wTμ1)T+∑x∈X2(wTx−wTμ2)(wTx−wTμ2)T
对上式进行化简:
S 1 ′ + S 2 ′ = w T [ ∑ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T ] w + w T [ ∑ x ∈ X 2 ( x − μ 2 ) ( x − μ 2 ) T ] w = w T S 1 w + w T S 2 w = w T ( S 1 + S 2 ) w S_1'+S_2'=w^T\bigl[\sum_{x\in X_1}(x-\mu_1)(x-\mu_1)^T\bigr]w+w^T\bigl[\sum_{x\in X_2}(x-\mu_2)(x-\mu_2)^T\bigr]w=w^TS_1w+w^TS_2w=w^T(S_1+S_2)w S1′+S2′=wT[∑x∈X1(x−μ1)(x−μ1)T]w+wT[∑x∈X2(x−μ2)(x−μ2)T]w=wTS1w+wTS2w=wT(S1+S2)w
现在考虑LDA的核心,类间方差越大越好,类内方差越小越好,那么就让其一个做分母一个做分子:
J ( w ) = ∣ μ 1 ′ − μ 2 ′ ∣ 2 S 1 ′ + S 2 ′ = w T ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T w w T ( S 1 + S 2 ) w J(w)=\frac{|\mu_1'-\mu_2'|^2}{S_1'+S_2'}=\frac{w^T(\mu_1-\mu_2)(\mu_1-\mu_2)^Tw}{w^T(S_1+S_2)w} J(w)=S1′+S2′∣μ1′−μ2′∣2=wT(S1+S2)wwT(μ1−μ2)(μ1−μ2)Tw,可以看出这个函数其实是有规律的
我们令:
- S b = ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T S_b=(\mu_1-\mu_2)(\mu_1-\mu_2)^T Sb=(μ1−μ2)(μ1−μ2)T代表类间散度矩阵,between-class scatter的b
- S w = S 1 + S 2 S_w=S_1+S_2 Sw=S1+S2代表类内散度矩阵,within-class scatter的w
则有 J ( w ) = w T S b w w T S w w J(w)=\frac{w^TS_bw}{w^TS_ww} J(w)=wTSwwwTSbw,可以看出上下均是关于w的二次项,在最终的结果矩阵里作为系数可以约去,因此J的大小与w的长度无关,只与w的方向有关,故我们简单的令 ∣ ∣ w T S w w ∣ ∣ = 1 ||w^TS_ww||=1 ∣∣wTSww∣∣=1,则问题转化成:
min w − w T S b w s.t. ∣ ∣ w T S w w ∣ ∣ = 1 \begin{array}{cl} \min _{\boldsymbol{w}} & -\boldsymbol{w}^{\mathrm{T}} \mathbf{S}_{\mathrm{b}} \boldsymbol{w} \\ \text { s.t. } & ||\boldsymbol{w}^{\mathrm{T}} \mathbf{S}_{\mathrm{w}} \boldsymbol{w}||=1 \end{array} minw s.t. −wTSbw∣∣wTSww∣∣=1,即带条件的最值问题,使用拉格朗日乘数法:
L ( w ) = w T S b w − λ ( w T S w w − 1 ) L(w)=w^TS_bw-\lambda(w^TS_ww-1) L(w)=wTSbw−λ(wTSww−1)
对 w w w求导(矩阵求导没学过…得看矩阵论)使之为0,得到 J ( w ) J(w) J(w)取最大值的条件:
( w T S b w ) S w w = ( w T S w w ) S b w (w^TS_bw)S_ww=(w^TS_ww)S_bw (wTSbw)Sww=(wTSww)Sbw
为什么二分类问题中 w T S b w w^TS_bw wTSbw和 w T S w w w^TS_ww wTSww都是标量?
这就要考虑 w w w的形状,因为这是个二分类,我们要将所有数据点投影到一条直线上,即降维到一维,因此 w w w的形状应该是 n × 1 n\times 1 n×1,才能使 w T x w^Tx wTx为标量
S b = ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T S_b=(\mu_1-\mu_2)(\mu_1-\mu_2)^T Sb=(μ1−μ2)(μ1−μ2)T的形状是 n × n n\times n n×n
S w = S 1 + S 2 S_w=S_1+S_2 Sw=S1+S2的形状是 n × n n\times n n×n
则 w T S b w w^TS_bw wTSbw为 ( 1 × n ) ( n × n ) ( n × 1 ) = 1 × 1 (1\times n)(n\times n)(n\times1)=1\times 1 (1×n)(n×n)(n×1)=1×1, w T S w w w^TS_ww wTSww同理
如果降维到非一维则显然不是个标量
因为二分类问题中 ( w T S b w ) (w^TS_bw) (wTSbw)和 ( w T S w w ) (w^TS_ww) (wTSww)都是标量,所以可以把上式直接看作:
S b w = λ S w w S_bw=\lambda S_ww Sbw=λSww,同乘 S w − 1 S_w^{-1} Sw−1,得到 S w − 1 S b w = λ w S_w^{-1}S_bw=\lambda w Sw−1Sbw=λw,再令 S = S w − 1 S b S=S_w^{-1}S_b S=Sw−1Sb,得到 S w = λ w Sw=\lambda w Sw=λw,
从最后这个式子就可以看出,是一个求w的特征值和特征向量的问题了,
即 w w w是矩阵 S w − 1 S b S_w^{-1}S_b Sw−1Sb的特征向量,这个公式称为Fisher linear discrimination。
由于此时是二分类,降维至一维,因此观察到 S w − 1 S b w = λ w S_w^{-1}S_bw=\lambda w Sw−1Sbw=λw中,
S b w S_bw Sbw展开为 ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T w (\mu_1-\mu_2)(\mu_1-\mu_2)^Tw (μ1−μ2)(μ1−μ2)Tw,
而 μ 1 − μ 2 \mu_1-\mu_2 μ1−μ2的形状为 n × 1 n\times1 n×1,所以 ( μ 1 − μ 2 ) T w (\mu_1-\mu_2)^Tw (μ1−μ2)Tw的形状是 ( 1 × n ) ( n × 1 ) = 1 × 1 (1\times n)(n\times1)=1\times1 (1×n)(n×1)=1×1即标量常数,
所以我们令 λ ′ = ( μ 1 − μ 2 ) T w \lambda'=(\mu_1-\mu_2)^Tw λ′=(μ1−μ2)Tw,则将 S w − 1 S b w = λ w S_w^{-1}S_bw=\lambda w Sw−1Sbw=λw化简为:
S w − 1 ( μ 1 − μ 2 ) λ ′ = λ w S_w^{-1}(\mu_1-\mu_2)\lambda'=\lambda w Sw−1(μ1−μ2)λ′=λw,由于我们只要 w w w的方向,因此将 λ \lambda λ和 λ ′ \lambda' λ′都省略,得到 w w w的方向为 w = S w − 1 ( μ 1 − μ 2 ) w=S_w^{-1}(\mu_1-\mu_2) w=Sw−1(μ1−μ2)
至此,我们只需要求出原始样本的均值和方差就可以求出最佳的方向
多分类LDA
重新观察二分类的类间散度矩阵 S b = ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T S_b=(\mu_1-\mu_2)(\mu_1-\mu_2)^T Sb=(μ1−μ2)(μ1−μ2)T,
为了直观呈现结果,我们假设 μ 1 − μ 2 = [ a 1 a 2 ⋮ a n ] \mu_1-\mu_2=\begin{bmatrix}a_1\\a_2\\\vdots\\a_n\end{bmatrix} μ1−μ2= a1a2⋮an ,则 S b = [ a 1 2 a 1 a 2 ⋯ a 1 a n a 2 a 1 a 2 2 ⋯ a 2 a n ⋮ ⋮ ⋮ ⋮ a n a 1 a n a 2 ⋯ a n 2 ] S_b=\begin{bmatrix}a_1^2&a_1a_2&\cdots&a_1a_n\\a_2a_1&a_2^2&\cdots&a_2a_n\\\vdots&\vdots&\vdots&\vdots\\a_na_1&a_na_2&\cdots&a_n^2\end{bmatrix} Sb= a12a2a1⋮ana1a1a2a22⋮ana2⋯⋯⋮⋯a1ana2an⋮an2 ,可见 S b S_b Sb的秩为1(第一行同除以 a 1 a_1 a1,第二行同除以 a 2 a_2 a2,…),
那么 S w − 1 S b S_w^{-1}S_b Sw−1Sb的秩 r a n k ( S w − 1 S b ) ≤ min { r a n k ( S w − 1 ) , r a n k ( S b ) } = 1 rank(S_w^{-1}S_b)\leq\min\{rank(S_w^{-1}),rank(S_b)\}=1 rank(Sw−1Sb)≤min{rank(Sw−1),rank(Sb)}=1,又因为 w w w是矩阵 S w − 1 S b S_w^{-1}S_b Sw−1Sb的特征向量,秩为1的矩阵最多有一个特征值不为0的特征向量,因此 w w w的形状只能是 n × 1 n\times1 n×1,这也就是为什么二分类只能降维为1维
==为什么必须是特征值不为0的特征向量?==因为我们的特征值 λ \lambda λ来自拉格朗日乘数法(见上文),如果 λ = 0 \lambda=0 λ=0,相当于无约束最值问题,显然是不可以的。
有了上面这个理解,我们再来看多分类LDA,之前的二分类LDA是问题的简化版,是将两个类的数据降维到一条直线上,降维后维度为1,但是当遇到类别为多类的时候,维度为1已经不能满足要求了,类别变成多个了,那么要怎么改变,才能保证投影后类别能够分离呢?现在我们把问题拓展为:我们有m个类别,需要将特征降维到d维。
有了前面的推导基础,接下来的处理照猫画虎,仍然从类间散度和类内散度入手:
-
我们发现对于多类的情况,类内散度矩阵依然存在。并且定义和之前一样基本保持不变,仍然类似于类内部样本点的协方差矩阵:
类间散度矩阵 S w = ∑ i = 1 m S i S_w=\sum_{i=1}^mS_{i} Sw=∑i=1mSi,其中 S i = ∑ x ∈ X i ( x − μ i ) ( x − μ i ) T S_i=\sum_{x\in X_i}(x-\mu_i)(x-\mu_i)^T Si=∑x∈Xi(x−μi)(x−μi)T
-
由于扩展了多类别,类间散度矩阵已经无法按照之前的定义来求了,原来度量的是两个均值点之间的距离,现在有多个类,那么就需要求每个类样本均值点到所有样本均值点之间的距离:
S b = ∑ i = 1 m ( μ i − μ ) ( μ i − μ ) T S_b=\sum_{i=1}^m(\mu_i-\mu)(\mu_i-\mu)^T Sb=∑i=1m(μi−μ)(μi−μ)T,其中 μ i = 1 N i ∑ x ∈ X i x , μ = 1 N ∑ ∀ x x \mu_i=\frac{1}{N_i}\sum_{x\in X_i}x,\mu=\frac{1}{N}\sum_{\forall x}x μi=Ni1∑x∈Xix,μ=N1∑∀xx
这里我一开始的最朴素的想法其实是计算各类别两两之间均值点的距离之和,但是LDA的定义却是与我的想法不同,核心的问题是如果是各类别两两之间均值点的距离之和,那么在优化的过程中并不一定将每一对距离都优化到最大,举一个极端的例子,有可能某一对均值点之间的距离为0,另一对均值点之间的距离为最大10,那么二者的和可能仍然是最大值,但是对第一对的类别来说已经看作同一类了(丧失了这一对类别的可分性)
同二分类LDA,最后所求的线性变换矩阵 w w w是矩阵 S w − 1 S b S_w^{-1}S_b Sw−1Sb的特征向量,只是此时的矩阵 S w − 1 S b S_w^{-1}S_b Sw−1Sb的秩不再是1,那么其对应的特征不为0的特征向量有多少个呢?
观察类间散度矩阵 S b = ∑ i = 1 m ( μ i − μ ) ( μ i − μ ) T S_b=\sum_{i=1}^m(\mu_i-\mu)(\mu_i-\mu)^T Sb=∑i=1m(μi−μ)(μi−μ)T,考虑其中的任一矩阵 ( μ i − μ ) ( μ i − μ ) T (\mu_i-\mu)(\mu_i-\mu)^T (μi−μ)(μi−μ)T,
显然对于固定的训练数据来说,总体的样本均值 μ \mu μ是个不变的向量,于是
设 μ = [ c 1 c 2 ⋮ c n ] \mu=\begin{bmatrix}c_1\\c_2\\\vdots\\c_n\end{bmatrix} μ= c1c2⋮cn ,那么对某个类的均值点 μ i = [ a i 1 a i 2 ⋮ a i n ] \mu_i=\begin{bmatrix}a_{i1}\\a_{i2}\\\vdots\\a_{in}\end{bmatrix} μi= ai1ai2⋮ain ,有:
( μ i − μ ) ( μ i − μ ) T = [ ( a i 1 − c 1 ) 2 ( a i 1 − c 1 ) ( a i 2 − c 2 ) ⋯ ( a i 1 − c 1 ) ( a i n − c n ) ( a i 2 − c 2 ) ( a i 1 − c 1 ) ( a i 2 − c 2 ) 2 ⋯ ( a i 2 − c 2 ) ( a i n − c n ) ⋮ ⋮ ⋮ ⋮ ( a i n − c n ) ( a i 1 − c 1 ) ( a i n − c n ) ( a i 2 − c 2 ) ⋯ ( a i n − c n ) 2 ] (\mu_i-\mu)(\mu_i-\mu)^T=\begin{bmatrix}(a_{i1}-c_1)^2&(a_{i1}-c_1)(a_{i2}-c_2)&\cdots&(a_{i1}-c_1)(a_{in}-c_n)\\(a_{i2}-c_2)(a_{i1}-c_1)&(a_{i2}-c_2)^2&\cdots&(a_{i2}-c_2)(a_{in}-c_n)\\\vdots&\vdots&\vdots&\vdots\\(a_{in}-c_n)(a_{i1}-c_1)&(a_{in}-c_n)(a_{i2}-c_2)&\cdots&(a_{in}-c_n)^2\end{bmatrix} (μi−μ)(μi−μ)T= (ai1−c1)2(ai2−c2)(ai1−c1)⋮(ain−cn)(ai1−c1)(ai1−c1)(ai2−c2)(ai2−c2)2⋮(ain−cn)(ai2−c2)⋯⋯⋮⋯(ai1−c1)(ain−cn)(ai2−c2)(ain−cn)⋮(ain−cn)2 ,其秩仍为1,
那么对于 S b = ∑ i = 1 m ( μ i − μ ) ( μ i − μ ) T S_b=\sum_{i=1}^m(\mu_i-\mu)(\mu_i-\mu)^T Sb=∑i=1m(μi−μ)(μi−μ)T,其秩 r a n k ( S b ) ≤ ∑ i = 1 m 1 = m rank(S_b)\leq \sum_{i=1}^m1=m rank(Sb)≤∑i=1m1=m(矩阵的秩小于等于各个相加矩阵的秩的和),又因为 μ = ∑ i = 1 m p i μ i \mu=\sum_{i=1}^mp_i\mu_i μ=∑i=1mpiμi,其中 p i p_i pi是每个类占总数的频率,也就是说知道了 μ 1 \mu_1 μ1到 μ m − 1 \mu_{m-1} μm−1,就可以直接求出 μ m \mu_m μm,换句话讲, [ μ 1 , μ 2 , ⋯ , μ m , μ ] [\mu_1,\mu_2,\cdots,\mu_m,\mu] [μ1,μ2,⋯,μm,μ]这个向量组是线性相关的
至于为什么要乘以频率,这要知道<均值的和>与<和的均值>之间的关系
综上, r a n k ( S b ) ≤ m − 1 rank(S_b)\leq m-1 rank(Sb)≤m−1,则 S w − 1 S b S_w^{-1}S_b Sw−1Sb的秩最多是m-1,那么它也就最多有m-1个特征值不为0的特征向量,因此 w w w的形状最多为 n × ( m − 1 ) n\times(m-1) n×(m−1),那么降维后的数据维数也就最多是m-1维。
一开始我没想通为什么 r a n k ( S b ) ≤ ∑ i = 1 m 1 = m rank(S_b)\leq \sum_{i=1}^m1=m rank(Sb)≤∑i=1m1=m,因为我认为 ( μ i − μ ) ( μ i − μ ) T (\mu_i-\mu)(\mu_i-\mu)^T (μi−μ)(μi−μ)T这个秩为1的矩阵可以等价于只有第一行有元素的矩阵:
[ a i 1 − c 1 a i 2 − c 2 ⋯ a i n − c n 0 0 ⋯ 0 ⋮ ⋮ ⋮ ⋮ 0 0 ⋯ 0 ] \begin{bmatrix}a_{i1}-c_1&a_{i2}-c_2&\cdots&a_{in}-c_n\\0&0&\cdots&0\\\vdots&\vdots&\vdots&\vdots\\0&0&\cdots&0\end{bmatrix} ai1−c10⋮0ai2−c20⋮0⋯⋯⋮⋯ain−cn0⋮0 ,
那么相加后难道不是 [ a i 1 − c 1 a i 2 − c 2 ⋯ a i n − c n 0 0 ⋯ 0 ⋮ ⋮ ⋮ ⋮ 0 0 ⋯ 0 ] \begin{bmatrix}a_{i1}-c_1&a_{i2}-c_2&\cdots&a_{in}-c_n\\0&0&\cdots&0\\\vdots&\vdots&\vdots&\vdots\\0&0&\cdots&0\end{bmatrix} ai1−c10⋮0ai2−c20⋮0⋯⋯⋮⋯ain−cn0⋮0 吗?为什么会是秩为m-1的呢?
后来意识到, ( μ i − μ ) ( μ i − μ ) T (\mu_i-\mu)(\mu_i-\mu)^T (μi−μ)(μi−μ)T这个秩为1的矩阵不仅可以等价于只有第一行有元素的矩阵,还可以等价于只有第二行有元素的矩阵 [ 0 0 ⋯ 0 a i 1 − c 1 a i 2 − c 2 ⋯ a i n − c n ⋮ ⋮ ⋮ ⋮ 0 0 ⋯ 0 ] \begin{bmatrix}0&0&\cdots&0\\a_{i1}-c_1&a_{i2}-c_2&\cdots&a_{in}-c_n\\\vdots&\vdots&\vdots&\vdots\\0&0&\cdots&0\end{bmatrix} 0ai1−c1⋮00ai2−c2⋮0⋯⋯⋮⋯0ain−cn⋮0 ,同理也就等价于只有第n行有元素的矩阵
那么在这个考虑之下,相加的结果就不一样了:
∑ i = 1 m ( μ i − μ ) ( μ i − μ ) T = [ a 11 − c 1 a 12 − c 2 ⋯ a 1 n − c n 0 0 ⋯ 0 ⋮ ⋮ ⋮ ⋮ 0 0 ⋯ 0 ] + [ 0 0 ⋯ 0 a 21 − c 1 a 22 − c 2 ⋯ a 2 n − c n ⋮ ⋮ ⋮ ⋮ 0 0 ⋯ 0 ] + ⋯ + [ 0 0 ⋯ 0 ⋮ ⋮ ⋮ ⋮ 0 0 ⋯ 0 a m 1 − c 1 a m 2 − c 2 ⋯ a m n − c n ] \sum_{i=1}^m(\mu_i-\mu)(\mu_i-\mu)^T=\begin{bmatrix}a_{11}-c_1&a_{12}-c_2&\cdots&a_{1n}-c_n\\0&0&\cdots&0\\\vdots&\vdots&\vdots&\vdots\\0&0&\cdots&0\end{bmatrix}\\+\begin{bmatrix}0&0&\cdots&0\\a_{21}-c_1&a_{22}-c_2&\cdots&a_{2n}-c_n\\\vdots&\vdots&\vdots&\vdots\\0&0&\cdots&0\end{bmatrix}\\+\cdots\\+\begin{bmatrix}0&0&\cdots&0\\\vdots&\vdots&\vdots&\vdots\\0&0&\cdots&0\\a_{m1}-c_1&a_{m2}-c_2&\cdots&a_{mn}-c_n\\\end{bmatrix} i=1∑m(μi−μ)(μi−μ)T= a11−c10⋮0a12−c20⋮0⋯⋯⋮⋯a1n−cn0⋮0 + 0a21−c1⋮00a22−c2⋮0⋯⋯⋮⋯0a2n−cn⋮0 +⋯+ 0⋮0am1−c10⋮0am2−c2⋯⋮⋯⋯0⋮0amn−cn
即: ∑ i = 1 m ( μ i − μ ) ( μ i − μ ) T = [ a 11 − c 1 a 12 − c 2 ⋯ a 1 n − c n a 21 − c 1 a 22 − c 2 ⋯ a 2 n − c n ⋮ ⋮ ⋮ ⋮ a m 1 − c 1 a m 2 − c 2 ⋯ a m n − c n ] \sum_{i=1}^m(\mu_i-\mu)(\mu_i-\mu)^T=\begin{bmatrix}a_{11}-c_1&a_{12}-c_2&\cdots&a_{1n}-c_n\\a_{21}-c_1&a_{22}-c_2&\cdots&a_{2n}-c_n\\\vdots&\vdots&\vdots&\vdots\\a_{m1}-c_1&a_{m2}-c_2&\cdots&a_{mn}-c_n\end{bmatrix} ∑i=1m(μi−μ)(μi−μ)T= a11−c1a21−c1⋮am1−c1a12−c2a22−c2⋮am2−c2⋯⋯⋮⋯a1n−cna2n−cn⋮amn−cn ,
又因为 c i = ∑ i = 1 m p i a i ⋅ c_i=\sum_{i=1}^mp_ia_{i\cdot} ci=∑i=1mpiai⋅,则上面这个矩阵的任一行可由其余行线性表出,因此:
S b = ∑ i = 1 m ( μ i − μ ) ( μ i − μ ) T S_b=\sum_{i=1}^m(\mu_i-\mu)(\mu_i-\mu)^T Sb=∑i=1m(μi−μ)(μi−μ)T的秩最多为 m − 1 m-1 m−1
同PCA一样,以上关于特征值和特征向量的讨论也仅限于 m = n m=n m=n的情况,若 m ≠ n m\neq n m=n则需要借助SVD分解。
除此以外,从上述的推导过程可以看出, S w − 1 S b S_w^{-1}S_b Sw−1Sb不一定是对称阵,因此其特征向量不一定正交,这也是LDA与PCA不同的一点。
参考:线性判别分析