1. LDA原理
一种经典的降维方法线性判别分析(Linear Discriminant Analysis, 以下简称LDA)。LDA是一种监督学习的降维技术,PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”。
右图比左图好,因为右图的黑色数据和蓝色数据各个较为集中,且类别之间的距离明显。左图则在边界处数据混杂。
2. 瑞利商与广义瑞利商
瑞利商(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} \leq \frac{x^HAx}{x^Hx} \leq \lambda_{max}
λmin≤xHxxHAx≤λmax
广义瑞利商(genralized Rayleigh quotient)是指这样的函数R(A,B,x):
R
(
A
,
x
)
=
x
H
A
x
x
H
B
x
R(A,x) = \frac{x^HAx}{x^HBx}
R(A,x)=xHBxxHAx
其中x为非零向量,而A,B为n×n的Hermitan矩阵。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
′
x^HBx = x'^H(B^{-1/2})^HBB^{-1/2}x' = x'^HB^{-1/2}BB^{-1/2}x' = x'^Hx'
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'^HB^{-1/2}AB^{-1/2}x'
xHAx=x′HB−1/2AB−1/2x′
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′)的最大值为矩阵
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的最小特征值。
3. 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∈{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
)
μ_j(j=0,1)
μj(j=0,1)为第j类样本的均值向量,定义
Σ
j
(
j
=
0
,
1
)
Σ_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\limits_{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
)
\Sigma_j = \sum\limits_{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,则对任意一个样本本xi,它在直线w的投影为
w
T
x
i
w^Tx_i
wTxi,对于我们的两个类别的中心点μ0,μ1,在直线w的投影为
w
T
μ
0
w^Tμ_0
wTμ0和
w
T
μ
1
w^Tμ_1
wTμ1。由于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\Sigma_0w
wTΣ0w和
w
T
Σ
1
w
w^T\Sigma_1w
wTΣ1w尽可能的小,即最小化
w
T
Σ
0
w
+
w
T
Σ
1
w
w^T\Sigma_0w+w^T\Sigma_1w
wTΣ0w+wTΣ1w。综上所述,我们的优化目标为:
a
r
g
m
a
x
⏟
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\Sigma_0w+w^T\Sigma_1w} = \frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw}{w^T(\Sigma_0+\Sigma_1)w}
w
argmaxJ(w)=wTΣ0w+wTΣ1w∣∣wTμ0−wTμ1∣∣22=wT(Σ0+Σ1)wwT(μ0−μ1)(μ0−μ1)Tw
类内散度矩阵Sw:
S
w
=
Σ
0
+
Σ
1
=
∑
x
∈
X
0
(
x
−
μ
0
)
(
x
−
μ
0
)
T
+
∑
x
∈
X
1
(
x
−
μ
1
)
(
x
−
μ
1
)
T
S_w = \Sigma_0 + \Sigma_1 = \sum\limits_{x \in X_0}(x-\mu_0)(x-\mu_0)^T + \sum\limits_{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
类间散度矩阵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
m
a
x
⏟
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′)最大值为矩阵
S
w
−
1
2
S
b
S
w
−
1
2
S^{−\frac{1}{2}}_wS_bS^{−\frac{1}{2}}_w
Sw−21SbSw−21的最大特征值,而对应的w′为
S
w
−
1
2
S
b
S
w
−
1
2
S^{−\frac{1}{2}}_wS_bS^{−\frac{1}{2}}_w
Sw−21SbSw−21的最大特征值对应的特征向量!
S
w
−
1
S
b
S^{−1}_wS_b
Sw−1Sb的特征值和
S
w
−
1
2
S
b
S
w
−
1
2
S^{−\frac{1}{2}}_wS_bS^{−\frac{1}{2}}_w
Sw−21SbSw−21的特征值相同
S
w
−
1
S
b
S^{−1}_wS_b
Sw−1Sb的特征向量
w
w
w和
S
w
−
1
2
S
b
S
w
−
1
2
S^{−\frac{1}{2}}_wS_bS^{−\frac{1}{2}}_w
Sw−21SbSw−21的特征向量
w
′
w'
w′满足
w
=
S
w
−
1
2
w
′
w = S^{−\frac{1}{2}}_ww'
w=Sw−21w′
注意到对于二类的时候,
S
b
w
S_bw
Sbw的方向恒平行于
μ
0
−
μ
1
μ_0−μ_1
μ0−μ1,不妨令
S
b
w
=
λ
(
μ
0
−
μ
1
)
S_bw=λ(μ_0−μ_1)
Sbw=λ(μ0−μ1),将其带入:
(
S
w
−
1
S
b
)
w
=
λ
w
(S^{−1}_wS_b)w=λw
(Sw−1Sb)w=λw,可以得到
w
=
S
w
−
1
(
μ
0
−
μ
1
)
w=S^{−1}_w(μ_0−μ_1)
w=Sw−1(μ0−μ1), 也就是说我们只要求出原始二类样本的均值和方差就可以确定最佳的投影方向w了。
4. 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
∈
{
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
)
μ_j(j=1,2,...,k)
μj(j=1,2,...,k)为第j类样本的均值向量,定义
Σ
j
(
j
=
1
,
2
,
.
.
.
,
k
)
Σ_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\limits_{j=1}^{k}N_j(\mu_j-\mu)(\mu_j-\mu)^T
Sb=j=1∑kNj(μ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\limits_{j=1}^{k}S_{wj} = \sum\limits_{j=1}^{k}\sum\limits_{x \in X_j}(x-\mu_j)(x-\mu_j)^T
Sw=j=1∑kSwj=j=1∑kx∈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的优化方法,怎么办呢?一般来说,我们可以用其他的一些替代优化目标来实现。
a
r
g
m
a
x
⏟
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\limits_{diag}W^TS_bW}{\prod\limits_{diag}W^TS_wW}
W
argmaxJ(W)=diag∏WTSwWdiag∏WTSbW
其中
∏
d
i
a
g
A
\prod\limits_{diag}A
diag∏A为A的主对角线元素的乘积,W为n×d的矩阵。
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\limits_{i=1}^dw_i^TS_bw_i}{\prod\limits_{i=1}^dw_i^TS_ww_i} = \prod\limits_{i=1}^d\frac{w_i^TS_bw_i}{w_i^TS_ww_i}
J(W)=i=1∏dwiTSwwii=1∏dwiTSbwi=i=1∏dwiTSwwiwiTSbwi
上式最右边是广义瑞利商,最大值是矩阵
S
w
−
1
S
b
S^{−1}_wS_b
Sw−1Sb的最大特征值,最大的d个值的乘积就是矩阵
S
w
−
1
S
b
S^{−1}_wS_b
Sw−1Sb的最大的d个特征值的乘积,此时对应的矩阵W为这最大的d个特征值对应的特征向量张成的矩阵.
由于W是一个利用了样本的类别得到的投影矩阵,因此它的降维到的维度d最大值为k-1。为什么最大维度不是类别数k呢?因为Sb中每个
μ
j
−
μ
μ_j−μ
μj−μ的秩为1,因此协方差矩阵相加后最大的秩为k(矩阵的秩小于等于各个相加矩阵的秩的和),但是由于如果我们知道前k-1个
μ
j
μ_j
μj后,最后一个
μ
k
μ_k
μk可以由前k-1个μj线性表示,因此Sb的秩最大为k-1,即特征向量最多有k-1个。
5. 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 ∈ C 1 , C 2 , . . . , C k yi∈{C_1,C_2,...,C_k} yi∈C1,C2,...,Ck,降维到的维度d。
输出:降维后的样本集 D ′ D′ D′
1) 计算类内散度矩阵 S w = ∑ j = 1 k S w j = ∑ j = 1 k ∑ x ∈ X j ( x − μ j ) ( x − μ j ) T S_w = \sum\limits_{j=1}^{k}S_{wj} = \sum\limits_{j=1}^{k}\sum\limits_{x \in X_j}(x-\mu_j)(x-\mu_j)^T Sw=j=1∑kSwj=j=1∑kx∈Xj∑(x−μj)(x−μj)T
2) 计算类间散度矩阵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,多分类: S b = ∑ j = 1 k N j ( μ j − μ ) ( μ j − μ ) T S_b = \sum\limits_{j=1}^{k}N_j(\mu_j-\mu)(\mu_j-\mu)^T Sb=j=1∑kNj(μj−μ)(μj−μ)T,
3) 计算矩阵 S w − 1 S b S^{−1}_wS_b Sw−1Sb
4)计算 S w − 1 S b S^{−1}_wS_b Sw−1Sb的最大的d个特征值和对应的d个特征向量 ( w 1 , w 2 , . . . w d ) (w_1,w_2,...w_d) (w1,w2,...wd),得到投影矩阵W
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))
一个常见的LDA分类基本思想是假设各个类别的样本数据符合高斯分布,这样利用LDA进行投影后,可以利用极大似然估计计算各个类别投影数据的均值和方差,进而得到该类别高斯分布的概率密度函数。当一个新的样本到来后,我们可以将它投影,然后将投影后的样本特征分别带入各个类别的高斯分布概率密度函数,计算它属于这个类别的概率,最大的概率对应的类别即为预测类别。
6. LDA优缺点
LDA算法的主要优点有:
1)在降维过程中可以使用类别的先验知识经验,而像PCA这样的无监督学习则无法使用类别先验知识。
2)LDA在样本分类信息依赖均值而不是方差的时候,比PCA之类的算法较优。
LDA算法的主要缺点有:
1)LDA假设数据符合高斯分布,不适合对非高斯分布样本进行降维,PCA也有这个问题。
2)LDA降维最多降到类别数k-1的维数,如果我们降维的维度大于k-1,则不能使用LDA。当然目前有一些LDA的进化版算法可以绕过这个问题。(一般是基于核函数的线性判别分析,这样把类别数k映射到高维,再去降维,那么就可以绕过最大维度k-1的限制了。当然还有其他方法。
你网上可以找下基于核函数的LDA的资料。)
3)LDA在样本分类信息依赖方差而不是均值的时候,降维效果不好。
4)LDA可能过度拟合数据。
在LDA里面,对应的特征分解的矩阵都是对称矩阵,所以不会出现复数的特征值。
一般意义上我们说的样本或者特征的协方差矩阵都是针对特征维度的,包括我上文中讲到的协方差矩阵,比如你的特征是二维的,那么你的协方差矩阵就是2x2的。
矩阵中的数据按行排列与按列排列求出的协方差矩阵是不同的,这里默认数据是按行排列。即每一行是一个observation(or sample),那么每一列就是一个随机变量。
协方差矩阵的维度等于随机变量的个数,即每一个 observation 的维度。在某些场合前边也会出现 1 / m,而不是 1 / (m - 1).
LDA与PCA的区别
LDA用于降维,和PCA有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。
首先我们看看相同点:
1)两者均可以对数据进行降维。
2)两者在降维时均使用了矩阵特征分解的思想。
3)两者都假设数据符合高斯分布。
我们接着看看不同点:
1)LDA是有监督的降维方法,而PCA是无监督的降维方法
2)LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。
3)LDA除了可以用于降维,还可以用于分类。
4)LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。
这点可以从下图形象的看出,在某些数据分布下LDA比PCA降维较优。
某些某些数据分布下PCA比LDA降维较优,如下图所示:
转自:https://www.cnblogs.com/pinard/p/6244265.html