线性判别分析LDA
1. LDA的思想
线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的线性学习方法,在二分类问题上最早由[Fisher, 1936]提出,亦称“Fisher判别分析”。LDA和PCA(主成分分析)有一定类似之处。
LDA的思想比较简单:给定训练集,设法将数据集投影到一条直线上,使得同类数据的投影点尽可能接近,异类数据的投影点尽可能远离,用一句话概括 投影后类内方差最小,类间方差最大。所以从这里可以看出,LDA是一种监督学习的方法。
我们以下图为例,假设我们有两类数据,分别为红色和蓝色,这些数据特征是二维的,我们希望将这些数据投影到一维的一条直线,让每一种类别数据的投影点尽可能的接近,而红色和蓝色数据中心之间的距离尽可能的大。从直观上来看,我们会认为右图的投影方式更加合理,因为在当前方式下,每类数据彼此分离不重合,并且每一类的数据比较集中;相反在左图的投影方式下,效果可能不如人意。
在更高维的特征空间中,我们投影后的不一定是直线,很可能是维数较低的超平面。
2. 瑞利商(Rayleigh quotient)与广义瑞利商
我们先来看一下瑞利商函数的定义:
R
(
A
,
x
)
=
x
H
A
x
x
H
x
R(A, x)=\frac{x^HAx}{x^Hx}
R(A,x)=xHxxHAx
其中
x
x
x 是非零向量,而A为n阶厄米特矩阵。所谓厄米特矩阵,就是A矩阵的共轭转置等于它本身,即
A
H
=
A
A^H = A
AH=A。而这个瑞利商函数
R
(
A
,
x
)
R(A,x)
R(A,x) 有一个非常重要的性质,就是它的最大值等于A的最大特征值,最小值等于A的最小特征值,即:
λ
m
i
n
≤
R
(
A
,
x
)
≤
λ
m
a
x
\lambda_{min} \le R(A, x)\le \lambda_{max}
λmin≤R(A,x)≤λmax
这个性质的证明如下:
由于矩阵A是厄米特矩阵,所以一定存在一个酉矩阵
Q
Q
Q,使得:
Q
H
A
Q
=
d
i
a
g
(
λ
1
,
λ
2
,
.
.
.
,
λ
n
)
=
Λ
Q^HAQ=diag(\lambda_1,\lambda_2,...,\lambda_n)=\Lambda
QHAQ=diag(λ1,λ2,...,λn)=Λ
也就是说A可正交相似对角化。那么我们令
x
=
Q
y
x=Qy
x=Qy,上述式子变为:
R
(
A
,
x
)
=
y
H
Q
H
A
Q
y
y
H
Q
H
Q
y
=
y
H
Λ
y
y
H
y
=
λ
1
y
1
2
+
λ
2
y
2
2
+
.
.
.
+
λ
n
y
n
2
y
1
2
+
y
2
2
+
.
.
.
+
y
n
2
\begin{aligned} R(A,x)&=\frac{y^HQ^HAQy}{y^HQ^HQy} \\ &= \frac{y^H\Lambda y}{y^Hy}\\ &= \frac{\lambda_1 y_1^2+ \lambda_2y_2^2+...+\lambda_n y_n^2}{y_1^2+y_2^2+...+y_n^2} \end{aligned}
R(A,x)=yHQHQyyHQHAQy=yHyyHΛy=y12+y22+...+yn2λ1y12+λ2y22+...+λnyn2
对此我们可以进行一个放缩:
λ
m
i
n
≤
λ
1
y
1
2
+
λ
2
y
2
2
+
.
.
.
+
λ
n
y
n
2
y
1
2
+
y
2
2
+
.
.
.
+
y
n
2
≤
λ
m
a
x
\begin{aligned} \lambda_{min} \le \frac{\lambda_1 y_1^2+ \lambda_2y_2^2+...+\lambda_n y_n^2}{y_1^2+y_2^2+...+y_n^2} \le \lambda_{max} \end{aligned}
λmin≤y12+y22+...+yn2λ1y12+λ2y22+...+λnyn2≤λmax
不妨假设
λ
n
\lambda_n
λn为最大的特征值,
λ
1
\lambda_1
λ1为最小的特征值;那么当
y
=
(
0
,
0
,
.
.
.
,
1
)
y=(0,0,...,1)
y=(0,0,...,1)时,
R
(
A
,
x
)
R(A,x)
R(A,x)可以取到最大值;当
y
=
(
1
,
0
,
.
.
.
,
0
)
y=(1,0,...,0)
y=(1,0,...,0) 时,
R
(
A
,
x
)
R(A,x)
R(A,x) 取最小值。
证毕。
这里我们还应该思考一下,就是当 R ( A , x ) R(A,x) R(A,x) 取最大值时, x x x 向量的取值是什么?
我们已经知道当 y = ( 0 , 0 , . . . , 1 ) y=(0,0,...,1) y=(0,0,...,1)时, R ( A , x ) R(A,x) R(A,x)取最大值,根据 x = Q y x=Qy x=Qy可以得到, x x x为 Q的最后一列;同理可以得到,当 R ( A , x ) R(A,x) R(A,x) 等于某个特征值 λ i \lambda_i λi时, y = ( 0 , 0 , . . . 1 , . . , 0 , 0 ) y=(0,0,...1,..,0,0) y=(0,0,...1,..,0,0),而 x x x 为 Q的第 i 列;Q是什么?Q是 A A A 的特征向量组成的矩阵。
知道这一点是很重要的,对于后面的LDA原理分析奠定基础。
当 x x x 是标准正交基的时候,满足 x H x = 1 x^Hx=1 xHx=1,这时 R ( A , x ) = x H A x R(A,x)=x^HAx R(A,x)=xHAx 。
下面我们来介绍一下广义瑞利商函数:
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
x
x 是非零向量,而A、B为n阶厄米特矩阵。B为正定矩阵。那么它的最大值和最小值是什么呢?
令
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
′
\begin{aligned} x^HBx &= x'^H(B^{-1/2})^HBB^{-1/2}x'\\ &= x'^HB^{-1/2}BB^{-1/2}x'\\ &= x'^Hx' \end{aligned}
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
′
\begin{aligned} x^HAx=x'^HB^{-1/2}AB^{-1/2}x' \end{aligned}
xHAx=x′HB−1/2AB−1/2x′
此时广义瑞利商函数
R
(
A
,
B
,
x
)
R(A,B,x)
R(A,B,x)变为
R
(
A
,
B
,
x
′
)
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'^HB^{-1/2}AB^{-1/2}x'}{x'^Hx'}
R(A,B,x)=x′Hx′x′HB−1/2AB−1/2x′
利用前面得到瑞利商的性质,我们可以知道 R ( A , B , x ) R(A,B,x) R(A,B,x)的最大值为矩阵 B − 1 / 2 A B − 1 / 2 B^{-1/2}AB^{-1/2} B−1/2AB−1/2的最大特征值,最小值为矩阵 B − 1 / 2 A B − 1 / 2 B^{-1/2}AB^{-1/2} B−1/2AB−1/2的最小特征值,而矩阵 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的最大特征值,最小值为 B − 1 A B^{-1}A B−1A的最小特征值。
同样的,我们更加关注广义瑞利商取到最大值时
x
x
x 的取值。根据前面瑞利商的性质,
R
(
A
,
B
,
x
)
R(A,B,x)
R(A,B,x) 取到最大值时,
x
′
x'
x′ 为矩阵
B
−
1
/
2
A
B
1
/
2
B^{-1/2}AB^{1/2}
B−1/2AB1/2 的特征向量,根据特征值特征向量的定义:
B
−
1
/
2
A
B
−
1
/
2
∗
x
′
=
λ
∗
x
′
B^{-1/2}AB^{-1/2} * x' = \lambda * x'
B−1/2AB−1/2∗x′=λ∗x′
将
x
=
B
−
1
/
2
x
′
x=B^{-1/2}x'
x=B−1/2x′ 代入得:
B
−
1
/
2
A
B
−
1
/
2
∗
B
1
/
2
∗
x
=
λ
∗
B
1
/
2
x
B
−
1
A
∗
x
=
λ
∗
x
\begin{aligned} B^{-1/2}AB^{-1/2} * B^{1/2} *x &= \lambda * B^{1/2}x \\ B^{-1}A *x&= \lambda * x \end{aligned}
B−1/2AB−1/2∗B1/2∗xB−1A∗x=λ∗B1/2x=λ∗x
综上可以看出,广义瑞利商的最大值为矩阵
B
−
1
A
B^{-1}A
B−1A的最大特征值,而
x
x
x的取值为其特征值对应的特征向量。
这里矩阵 B 肯定是半正定的,但不一定是正定的,即不一定可逆,常用的处理手段是:
B + ρ I B+\rho I B+ρI,给矩阵 B 加上一个微小的扰动,这样矩阵从半正定变为正定 (因为 0特征值变为正数了),之后就可以进行求逆的操作,而对原问题的影响比较小。
还有人可能会矩阵 B B B 取 1/2次幂有些好奇,这里解释一下
由于矩阵 B B B 是正定矩阵,故 B B B 一定相似于主对角元素都为正数的对角阵,也就是说存在可逆阵 P P P,使得 P − 1 B P = Λ = d i a g ( λ 1 , λ 2 , . . . , λ n ) P^{-1}BP=\Lambda=diag(\lambda_1,\lambda_2,...,\lambda_n) P−1BP=Λ=diag(λ1,λ2,...,λn) 是对角阵。令 C = P − 1 d i a g ( λ 1 , λ 2 , . . . , λ n ) P C=P^{-1}diag(\sqrt\lambda_1,\sqrt\lambda_2,...,\sqrt\lambda_n)P C=P−1diag(λ1,λ2,...,λn)P,可以看到 C ∗ C = B C*C=B C∗C=B,故 C = B 1 / 2 C=B^{1/2} C=B1/2
3. 二类LDA原理
回归正题,我们先讲二类LDA。假设有数据集 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
)
∑
j
=
∑
x
∈
X
j
(
x
−
μ
j
)
(
x
−
μ
j
)
T
(
j
=
0
,
1
)
\mu_j=\frac{1}{N_j}\sum_{x\in X_j}x \quad (j=0,1) \\ \sum_j=\sum_{x\in X_j}(x-\mu_j)(x-\mu_j)^T \quad (j=0,1)
μj=Nj1x∈Xj∑x(j=0,1)j∑=x∈Xj∑(x−μj)(x−μj)T(j=0,1)
因为我们要将两类数据投影到一条直线上,设直线向量为
w
w
w,故对于任意一个样本
x
i
x_i
xi,其在直线上的投影为
w
T
x
i
w^Tx_i
wTxi,同理对于两类数据的中心点
μ
0
,
μ
1
\mu_0,\mu_1
μ0,μ1,它们在直线上的投影为
w
T
μ
0
w^T\mu_0
wTμ0和
w
T
μ
1
w^T\mu_1
wTμ1。而投影之后,类内数据点的方差变为:
∑
w
j
=
∑
j
(
w
T
x
−
w
T
μ
j
)
2
=
∑
j
(
w
T
(
x
−
μ
j
)
)
2
=
∑
j
w
T
(
x
−
μ
j
)
(
x
−
μ
j
)
T
w
=
w
T
∑
j
(
x
−
μ
j
)
(
x
−
μ
j
)
T
w
=
w
T
∑
j
w
\begin{aligned} \sum_{wj} &=\sum_j(w^Tx-w^T\mu_j)^2 \\ &=\sum_j(w^T(x-\mu_j))^2 \\ &=\sum_jw^T(x-\mu_j)(x-\mu_j)^Tw \\ &= w^T\sum_j(x-\mu_j)(x-\mu_j)^Tw\\ &= w^T\sum_jw \end{aligned}
wj∑=j∑(wTx−wTμj)2=j∑(wT(x−μj))2=j∑wT(x−μj)(x−μj)Tw=wTj∑(x−μj)(x−μj)Tw=wTj∑w
LDA的目的是为了投影后类内方差最小,类间方差最大,所以我们要使
∣
∣
w
T
μ
0
−
w
T
μ
1
∣
∣
2
2
||w^T\mu_0-w^T\mu_1||_2^2
∣∣wTμ0−wTμ1∣∣22最大,而最小化
w
T
∑
0
w
+
w
T
∑
1
w
w^T\sum_0w+w^T\sum_1w
wT∑0w+wT∑1w。综上,我们需要优化:
J
(
w
)
=
∣
∣
w
T
μ
0
−
w
T
μ
1
∣
∣
2
2
w
T
∑
0
w
+
w
T
∑
1
w
J(w)=\frac{||w^T\mu_0-w^T\mu_1||_2^2}{w^T\sum_0w + w^T\sum_1w}
J(w)=wT∑0w+wT∑1w∣∣wTμ0−wTμ1∣∣22
使上述函数最大,也就达到了我们的目的。
我们定义类内散度矩阵
S
w
S_w
Sw:
S
w
=
∑
0
+
∑
1
=
∑
x
∈
X
0
(
x
−
μ
0
)
(
x
−
μ
0
)
+
∑
x
∈
X
1
(
x
−
μ
1
)
(
x
−
μ
1
)
S_w=\sum_0+\sum_1=\sum_{x\in X_0}(x-\mu_0)(x-\mu_0)+\sum_{x\in X_1}(x-\mu_1)(x-\mu_1)
Sw=0∑+1∑=x∈X0∑(x−μ0)(x−μ0)+x∈X1∑(x−μ1)(x−μ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
这样上述优化目标
J
(
w
)
J(w)
J(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
而这不就是第二节我们讲过的广义瑞利商吗?利用前面瑞利商的性质,我们可以得到
J
(
w
)
J(w)
J(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的最小值。但是我们关注的不仅仅是最值,而是这里的
w
w
w的取值;根据前面广义瑞利商的性质,
w
w
w 为矩阵
S
w
−
1
S
b
S_w^{-1}S_b
Sw−1Sb 特征值对应的特征向量。
其他解法:
可能有些人在西瓜书等地方看到过这样的解法:
我们可以看到 J ( w ) J(w) J(w) 的取值和 w w w 的长度无关,只和其方向有关,因为可以通过约分手段约去长度,所以我们可以令 w T S w w = 1 w^TS_ww=1 wTSww=1。
(可能有些人对这里会有些怀疑,可以回到普通瑞利商,可以令 x H x = 1 x^Hx = 1 xHx=1,这一点是毫无疑问的;至于广义瑞利商,同样可以将其化为普通瑞利商,所以令 w T S w w = 1 w^TS_ww=1 wTSww=1 并无大碍。)
之后这个上述的优化目标可以重新表述为:
m
i
n
w
−
w
T
S
b
w
s
.
t
.
w
T
S
w
w
=
1
min_w \ -w^TS_bw\\ s.t. \quad w^TS_ww=1
minw −wTSbws.t.wTSww=1
根据拉格朗日乘子法,上式等价于:(拉格朗日乘子没有正负限制,所以
λ
\lambda
λ 前面可以是加号或者减号)
m
i
n
L
(
w
,
λ
)
=
−
w
T
S
b
w
+
λ
(
w
T
S
w
w
−
1
)
min \ L(w,\lambda) = -w^TS_bw + \lambda \ (w^TS_ww-1)
min L(w,λ)=−wTSbw+λ (wTSww−1)
求导得:
S
b
w
=
λ
S
w
w
S
w
−
1
S
b
w
=
λ
w
\begin{aligned} S_bw &= \lambda\ S_ww \\ S_w^{-1}S_bw &= \lambda w \end{aligned}
SbwSw−1Sbw=λ Sww=λw
到这里已经可以看到,这里
w
w
w 就是矩阵
S
w
−
1
S
b
S_w^{-1}S_b
Sw−1Sb的特征向量,代入原式得,最大值为最大特征值。
多说些,观察一下 S b w = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w S_bw=(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw Sbw=(μ0−μ1)(μ0−μ1)Tw,会发现其方向为 μ 0 − μ 1 \mu_0-\mu_1 μ0−μ1,设 S b w = k ( μ 0 − μ 1 ) S_bw=k(\mu_0-\mu_1) Sbw=k(μ0−μ1),再将其带入上式得: w = k λ S w − 1 ( μ 0 − μ 1 ) w=\frac{k}{\lambda}S_w^{-1}(\mu_0-\mu_1) w=λkSw−1(μ0−μ1),而由于 w w w 只和方向有关,和长度无关,所以这里可以将其长度约去,最终得: w = S w − 1 ( μ 0 − μ 1 ) w=S_w^{-1}(\mu_0-\mu_1) w=Sw−1(μ0−μ1);同样这也是西瓜书上 “令 S b w = λ ( μ 0 − μ 1 ) S_bw=\lambda(\mu_0-\mu_1) Sbw=λ(μ0−μ1)” 的原因。
4. 多类LDA原理
有了二分类的基础,研究多类LDA也是比较容易的。
还是先定义:假设有数据集 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 ∈ { 1 , 2 , . . . , k } y_i\in\{1,2,...,k\} yi∈{1,2,...,k},代表数据点的类别。接着定义 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 类样本坐标的协方差矩阵。之后我们就可以将二类LDA推广到多类LDA。
在多类中,我们投影到的低维空间很可能不是一条直线,而是一个超平面。我们假设超平面的维度为
d
d
d,对应的基向量为
w
1
,
w
2
,
.
.
.
,
w
d
w_1,w_2,...,w_d
w1,w2,...,wd,构成矩阵
W
W
W。值得注意的是,
W
W
W是一个
n
∗
d
n*d
n∗d 的矩阵,这也是显而易见的,因为 $ W ^Tx_i$,即和原空间数据点做内积,将其映射到
d
d
d 维空间。这样我们可以写出优化目标:
J
(
W
)
=
W
T
S
b
W
W
T
S
w
W
J(W) = \frac{W^TS_bW}{W^TS_wW}
J(W)=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,
S
w
=
∑
j
=
1
k
∑
x
∈
X
j
(
x
−
μ
j
)
(
x
−
μ
j
)
T
S_w=\sum_{j=1}^k\sum_{x\in X_j}(x-\mu_j)(x-\mu_j)^T
Sw=∑j=1k∑x∈Xj(x−μj)(x−μj)T代表类内散度矩阵。(这里的类间散度矩阵和二类LDA是有一些不同的,这里采用各类中心和所有数据点中心的距离来衡量的)
和二类LDA不同的是,此时的
J
J
J 不是一个标量,(在二类LDA中
J
J
J 是函数),而是矩阵,这样的形式一般不好作为优化目标,所以我们可以采用矩阵对角线元素的乘积来进行代替,即:
J
(
W
)
=
∏
d
i
a
g
W
T
S
b
W
∏
d
i
a
g
W
T
S
w
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
\begin{aligned} J(W) =\frac{\prod\limits_{diag}W^TS_bW}{\prod\limits_{diag}W_TS_wW} = \frac{\prod\limits_{i=1}^d w_i^TS_bw_i}{\prod\limits_{i=1}^d w_i^TS_ww_i} = \prod\limits_{i=1}^d \frac{w_i^TS_bw_i}{w_i^TS_ww_i} \end{aligned}
J(W)=diag∏WTSwWdiag∏WTSbW=i=1∏dwiTSwwii=1∏dwiTSbwi=i=1∏dwiTSwwiwiTSbwi
然后仔细观察上面最右边的式子,会发现这不就是前面提到的广义瑞利商吗?(多个瑞利商的乘积)而广义瑞利商的最大值为矩阵
S
w
−
1
S
b
S_w^{-1}S_b
Sw−1Sb的最大特征值,故此时
J
(
W
)
J(W)
J(W)的最大值就是矩阵
S
w
−
1
S
b
S_w^{-1}S_b
Sw−1Sb的前d个最大特征值的乘积,同时W就是特征值对应的特征向量组成的矩阵。
虽说矩阵 W W W的维度是 n ∗ d n*d n∗d 的,代表将 n n n 维空间数据点投影到d维空间;但是观察矩阵 S b S_b Sb,其是由 k k k个秩为1的矩阵相加得来的,并且 k k k个矩阵线性相关,即第 k k k 个矩阵可以由前 k − 1 k-1 k−1 个矩阵线性表出,所以 S b S_b Sb 的秩小于等于 k − 1 k-1 k−1 ,这是因为 r a n k ( A + B ) ≤ r a n k ( A ) + r a n k ( B ) rank(A+B) \le rank(A) + rank(B) rank(A+B)≤rank(A)+rank(B);而矩阵 S w − 1 S b S_w^{-1}S_b Sw−1Sb 的秩小于等于 k − 1 k-1 k−1,这是因为 r a n k ( A B ) ≤ m i n { r a n k ( A ) , r a n k ( B ) } rank(AB)\le min\{rank(A), rank(B)\} rank(AB)≤min{rank(A),rank(B)};所以 S w − 1 S b S_w^{-1}S_b Sw−1Sb最多含有 k − 1 k-1 k−1 个非零特征值,故 d ≤ k − 1 d \le k-1 d≤k−1。
5. LDA算法流程
经过前面对LDA原理的介绍,我们可以给出LDA的算法流程:
输入: 1. 数据集 D D D;2.待降维的空间维数 d d d
输出: 1.降维后的数据集 D ′ D' D′
- 计算类内散度矩阵 S w = ∑ j = 1 k ∑ x ∈ X j ( x − μ j ) ( x − μ j ) T S_w=\sum_{j=1}^k\sum_{x\in X_j}(x-\mu_j)(x-\mu_j)^T Sw=∑j=1k∑x∈Xj(x−μj)(x−μj)T;
- 计算类间散度矩阵 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;
- 计算矩阵 S b − 1 S w S_b^{-1}S_w Sb−1Sw;
- 计算 S b − 1 S w S_b^{-1}S_w Sb−1Sw 的 d 个最大特征值及其对应的特征向量,组成 W W W;
- 对原数据集 D D D 中的数据点 x i x_i xi,进行投影,得到 z i = W T x i z_i = W^Tx_i zi=WTxi:
- 输出投影之后的数据集 D ′ D' D′;
举例:
数据集
D
D
D:
D
=
[
1
2
0
3
1
0
−
2
−
2
1
−
3
−
1
1
]
D= \begin{bmatrix} 1 & 2 & 0 \\ 3 & 1 & 0 \\ -2 & -2 & 1 \\ -3 & -1 & 1 \\ \end{bmatrix}
D=⎣⎢⎢⎡13−2−321−2−10011⎦⎥⎥⎤
1. 类内散度矩阵
S
w
=
[
2.5
−
1.5
−
1.5
1
]
S_w= \begin{bmatrix} 2.5 & -1.5 \\ -1.5 & 1 \\ \end{bmatrix}
Sw=[2.5−1.5−1.51]
2. 类间散度矩阵 S b = [ 20.25 13.5 13.5 9.0 ] S_b= \begin{bmatrix} 20.25 & 13.5 \\ 13.5 & 9.0 \\ \end{bmatrix} Sb=[20.2513.513.59.0]
3. S b − 1 S w = [ 162 108 256.5 171 ] S_b^{-1}S_w = \begin{bmatrix} 162 & 108 \\ 256.5 & 171 \\ \end{bmatrix} Sb−1Sw=[162256.5108171]
4. λ 1 = 0 , λ 2 = 333 \lambda_1=0, \lambda_2=333 λ1=0,λ2=333; w 1 = [ − 0.5547002 , 0.83205029 ] , w 2 = [ − 0.53399299 , − 0.8454889 ] w_1=[-0.5547002,0.83205029],w_2=[-0.53399299,-0.8454889] w1=[−0.5547002,0.83205029],w2=[−0.53399299,−0.8454889]
选择最大特征值对应的特征向量 w = [ − 0.53399299 , − 0.8454889 ] w=[-0.53399299,-0.8454889] w=[−0.53399299,−0.8454889]
5. 计算投影之后的点集 D ′ = [ − 2.21 − 2.43 2.74 2.43 ] D'= \begin{bmatrix} -2.21 \\ -2.43 \\ 2.74 \\ 2.43 \\ \end{bmatrix} D′=⎣⎢⎢⎡−2.21−2.432.742.43⎦⎥⎥⎤
6. LDA算法小结
LDA降维的过程基本如上所述,同时也可以将LDA用于分类。不严谨地简述一下:将训练集投影到超平面或者直线之后,对待分类数据点继续投影得到新数据点,利用统计学手段判断其最可能属于某个类别。LDA虽说考虑了不同类别之间的关系,但是还是缺失了原数据集的某些信息,将其用于分类从直观上来说也许并不是很好的手段。
下面再说一下LDA的优缺点:
优点:
(1) 计算速度快;
(2) 利用数据点的类别信息,充分考虑先验知识;
缺点:
(1) 当数据不是高斯分布时候,效果不好,PCA也是;
(2) 降维之后的维数最多为 k − 1 k-1 k−1(k为类别数);