LDA是一种有监督学习算法。
在PCA中,算法没有考虑数据的标签(类别),只是把数据映射到一些方差比较大的方向而已。
思想
LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的,这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”,即最大化类间距离,最小化类内方差
推导
(1) 假设有C1、C2两个类比的样本,两类均值为:
μ 1 = 1 N 1 ∑ x ∈ C 1 x \mu_1 = \frac{1}{N_1}\sum_{x\in C_1 }x μ1=N11∑x∈C1x
μ
2
=
1
N
1
∑
x
∈
C
2
x
\mu_2 = \frac{1}{N_1}\sum_{x\in C_2 }x
μ2=N11∑x∈C2x
(2) 目标
是希望投影后两类之间的距离尽可能大,每一类的方差小距离表示为:
D ( C 1 , C 2 ) = ∣ ∣ μ 1 ~ − μ 2 ~ ∣ ∣ 2 2 D(C_1,C_2) = ||\widetilde{\mu_1}-\widetilde{\mu_2}||_2^2 D(C1,C2)=∣∣μ1 −μ2 ∣∣22
其中 μ 1 ~ \widetilde{\mu_1} μ1 , μ 2 ~ \widetilde{\mu_2} μ2 表示两类的中心在 ω \omega ω方向上的投影向量
μ 1 ~ = w T μ 1 , μ 2 ~ = w T μ 2 \widetilde{\mu_1} = w^T\mu_1,\widetilde{\mu_2} = w^T\mu_2 μ1 =wTμ1,μ2 =wTμ2
(3)优化
需要优化的问题
{
m
a
x
∣
∣
ω
T
(
μ
1
−
μ
2
)
∣
∣
2
2
,
s
.
t
ω
T
ω
=
1
单位方向向量
\begin{cases} & max||\omega^T(\mu_1-\mu_2)||_2^2 &,\\ s.t & \omega^T\omega=1 & {\text{单位方向向量}} \end{cases}
{s.tmax∣∣ωT(μ1−μ2)∣∣22ωTω=1,单位方向向量
(4)目标函数
目标函数定义为类间距离与类内距离的比值,引出最大化的目标:
m
a
x
J
(
w
)
=
∣
∣
w
T
(
μ
1
−
μ
2
)
∣
∣
2
2
D
1
+
D
2
maxJ(w) = \frac{||w^T(\mu_1-\mu_2)||_2^2}{D1+D2}
maxJ(w)=D1+D2∣∣wT(μ1−μ2)∣∣22
D1 D2为两个类投影后的方差,其中D1,D2为:
D
1
=
∑
x
∈
C
1
(
w
T
x
−
w
T
μ
1
)
2
=
∑
x
∈
C
1
w
T
(
x
−
μ
1
)
(
x
−
μ
1
)
T
w
D_1 = \sum_{x\in C_1}(w^Tx-w^T\mu_1)^2= \sum_{x\in C_1}w^T( x-\mu_1)(x-\mu_1)^Tw
D1=x∈C1∑(wTx−wTμ1)2=x∈C1∑wT(x−μ1)(x−μ1)Tw
D
2
=
∑
x
∈
C
2
w
T
(
x
−
μ
2
)
(
x
−
μ
2
)
T
w
D_2 =\sum_{x\in C_2}w^T( x-\mu_2)(x-\mu_2)^Tw
D2=x∈C2∑wT(x−μ2)(x−μ2)Tw
故
J
(
w
)
J(w)
J(w)可以表示为:
J
(
w
)
=
∣
∣
w
T
(
μ
1
−
μ
2
)
∣
∣
2
2
∑
x
∈
C
i
w
T
(
x
−
μ
i
)
(
x
−
μ
i
)
T
w
=
w
T
(
μ
1
−
μ
2
)
(
μ
1
−
μ
2
)
w
∑
x
∈
C
i
w
T
(
x
−
μ
i
)
(
x
−
μ
i
)
T
w
J(w)=\frac{||w^T(\mu_1-\mu_2)||_2^2}{\sum_{x\in C_i}w^T( x-\mu_i)(x-\mu_i)^Tw}=\frac{w^T(\mu_1-\mu2)(\mu_1-\mu_2)w}{\sum_{x\in C_i}w^T( x-\mu_i)(x-\mu_i)^Tw}
J(w)=∑x∈CiwT(x−μi)(x−μi)Tw∣∣wT(μ1−μ2)∣∣22=∑x∈CiwT(x−μi)(x−μi)TwwT(μ1−μ2)(μ1−μ2)w
在此,我们定义类间散度矩阵(各样本间的均方距离):
S
B
=
(
μ
1
−
μ
2
)
(
μ
1
−
μ
2
)
T
S_B=(\mu_1-\mu_2)(\mu_1-\mu_2)^T
SB=(μ1−μ2)(μ1−μ2)T,
类内散度矩阵(各样本点围绕均值的散布情况)为:
S
w
=
∑
x
∈
C
i
(
x
−
μ
i
)
(
x
−
μ
i
)
T
S_w=\sum_{x\in C_i}(x-\mu_i)(x-\mu_i)^T
Sw=∑x∈Ci(x−μi)(x−μi)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
对
ω
\omega
ω求偏导,并令导数为零:
∂
J
(
ω
)
∂
ω
=
(
∂
w
T
S
B
w
∂
w
w
T
S
w
w
−
∂
w
T
S
w
w
∂
w
w
T
S
B
w
)
(
w
T
S
w
w
)
2
\frac{\partial J(\omega)}{\partial \omega} = \frac{\left( \frac{\partial w^TS_Bw}{\partial w}w^TS_ww-\frac{\partial w^TS_ww}{\partial w}w^TS_Bw\right)}{(w^TS_ww)^2}
∂ω∂J(ω)=(wTSww)2(∂w∂wTSBwwTSww−∂w∂wTSwwwTSBw)
通过矩阵求导法则,可得出:
(
w
T
S
w
w
)
S
B
w
=
(
w
T
S
B
w
)
S
w
w
(w^TS_ww)S_Bw = (w^TS_Bw)S_ww
(wTSww)SBw=(wTSBw)Sww
令 λ = J ( w ) = w T S B w w T S w w \lambda =J(w) = \frac{w^TS_Bw}{w^TS_ww} λ=J(w)=wTSwwwTSBw
整理得出:
S
B
w
=
λ
S
w
w
⟹
S
w
−
1
S
B
w
=
λ
w
S_Bw = \lambda S_ww \Longrightarrow S_w^{-1}S_Bw = \lambda w
SBw=λSww⟹Sw−1SBw=λw
于是LDA降维变成了求矩阵特征向量的问题,J(w)就对应了矩阵
S
w
−
1
S
B
S_w^{-1}S_B
Sw−1SB最大的特征值,投影方向为这个特征值对应的特征向量。
步骤
对于多类别标签高维数据的LDA步骤如下:
- 计算数据集中每个类别样本均值向量uj,以及总体样本均值u;
- 计算类内散度矩阵 S w , 全 局 散 度 矩 阵 S_w,全局散度矩阵 Sw,全局散度矩阵S_t , 并 得 到 类 间 散 度 矩 阵 ,并得到类间散度矩阵 ,并得到类间散度矩阵S_b= S_t-S_w$
- 对于矩阵 S w − 1 S b S_w^{-1}S_b Sw−1Sb 进行特征值分解,将特征值从大到小排列;
- 取特征值前d大的对应特征向量
w
1
,
.
.
.
w
d
w_1,...w_d
w1,...wd,将n维样本映射到d维
(3) x i ′ = [ w 1 T x i w 2 T x i ⋯ w d T x i ] x_i \prime = \left[ \begin{matrix} w_1^Tx_i \\ w_2^Tx_i\\ \cdots \\ w_d^Tx_i \end{matrix} \right] \tag{3} xi′=⎣⎢⎢⎡w1Txiw2Txi⋯wdTxi⎦⎥⎥⎤(3)
输入:数据集 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′
1) 计算类内散度矩阵$S_w
2) 计算类间散度矩阵$S_b
3) 计算矩阵 S w − 1 S b S_w^{-1}S_b Sw−1Sb
4)计算 S w − 1 S b S_w^{-1}S_b Sw−1Sb的最大的d个特征值和对应的d个特征向量 ( w 1 , w 2 , . . . w d ) (w_1,w_2,...w_d) (w1,w2,...wd),得到投影矩阵WW
5) 对样本集中的每一个样本特征 x i x_i xi,转化为新的样本 z i = W T x i z_i=W^Tx_i zi=WTxi
6) 得到输出样本集 D ′ = { ( z 1 , y 1 ) , ( z 2 , y 2 ) , . . . , ( ( z m , y m ) ) } D'=\{(z_1,y_1), (z_2,y_2), ...,((z_m,y_m))\} D′={(z1,y1),(z2,y2),...,((zm,ym))}
比较
相同点
1)两者均可以对数据进行降维。
2)两者在降维时均使用了矩阵特征分解的思想。
3)两者都假设数据符合高斯分布。
不同点
1)LDA是有监督的降维方法,而PCA是无监督的降维方法
2)LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。
3)LDA除了可以用于降维,还可以用于分类。
4)LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。