赞
踩
LDA是一种有监督的降维技术,它的每个样本输出都是有类别的。
LDA的思想是投影后类间方差尽可能大,类内方差尽可能小。
类间散度矩阵为:
S
b
=
∑
i
=
1
C
(
μ
i
−
μ
)
(
μ
i
−
μ
)
T
\boldsymbol{S}_{b}=\sum_{i=1}^{C}(\mu _{i}-\mu)(\mu _{i}-\mu)^{T}
Sb=i=1∑C(μi−μ)(μi−μ)T
其中,
C
C
C为类别总数,
μ
\mu
μ为所有样本的均值:
μ
=
1
m
∑
i
=
1
m
x
i
\mu =\frac{1}{m}\sum_{i=1}^{m}\mathbf{x}^{i}
μ=m1i=1∑mxi
∣
C
i
∣
|C_{i}|
∣Ci∣为类别为
C
i
C_{i}
Ci的样本数,
μ
i
\mu _{i}
μi为类别为
C
i
C_{i}
Ci的样本均值:
μ
i
=
1
∣
C
i
∣
∑
i
=
1
∣
C
i
∣
x
i
\mu _{i}=\frac{1}{|C_{i}|}\sum_{i=1}^{|C_{i}|}\mathbf{x}^{i}
μi=∣Ci∣1i=1∑∣Ci∣xi
类间散度矩阵为:
S
w
=
∑
i
=
1
C
∑
x
i
∈
C
i
(
x
i
−
μ
i
)
(
x
i
−
μ
i
)
T
\mathbf{S}_{w}=\sum_{i=1}^{C}\sum_{\mathbf{x}^{i}\in C_{i}}(\mathbf{x}^{i}-\mu _{i})(\mathbf{x}^{i}-\mu _{i})^{T}
Sw=i=1∑Cxi∈Ci∑(xi−μi)(xi−μi)T
投影后的类间协方差矩阵:
w
T
S
b
w
\mathbf{w^{T}S_{b}w}
wTSbw
投影后的类内协方差矩阵:
w
T
S
w
w
\mathbf{w^{T}S_{w}w}
wTSww
类内方差最小,类间方差最大,等价于最大化下式:
arg
max
w
w
T
S
b
w
w
T
S
w
w
\arg \max_{w}\frac{\mathbf{w^{T}S_{b}w}}{\mathbf{w^{T}S_{w}w}}
argwmaxwTSwwwTSbw
分子和分母都为
w
\mathbf{w}
w的二次项,不失一般性,令
w
T
S
w
w
=
1
\mathbf{w^{T}S_{w}w}=1
wTSww=1,则上式等价于最小化下式:
arg
min
w
−
w
T
S
b
w
s
.
t
.
w
T
S
w
w
=
1
\arg\min_{w}-\mathbf{w^{T}S_{b}w}\\ s.t.\mathbf{w^{T}S_{w}w}=1
argwmin−wTSbws.t.wTSww=1
带约束的最优化问题,使用拉格朗日乘子法:
J
(
w
)
=
−
w
T
S
b
w
−
λ
(
1
−
w
T
S
w
w
)
J(\mathbf{w})=-\mathbf{w^{T}S_{b}w}-\lambda(1-\mathbf{w^{T}S_{w}w})
J(w)=−wTSbw−λ(1−wTSww)
此时,求梯度并令梯度为0:
∂
J
(
w
)
∂
w
=
−
2
S
b
w
+
2
λ
S
w
w
=
0
\frac{\partial J(\mathbf{w})}{\partial \mathbf{w}}=-2\mathbf{S_{b}w}+2\lambda\mathbf{S_{w}w}=0
∂w∂J(w)=−2Sbw+2λSww=0
最终得:
S
w
−
1
S
b
w
=
λ
w
\mathbf{S_{w}^{-1}S_{b}w}=\lambda \mathbf{w}
Sw−1Sbw=λw
因此,需要求
S
w
−
1
S
b
w
\mathbf{S_{w}^{-1}S_{b}w}
Sw−1Sbw的特征值和特征向量。
由于利用了样本的类别得到的投影矩阵,因此降维到的维度
d
d
d最大值为类别数减1。
输入:
m
m
m个
n
n
n维样本,有
k
k
k个类别,需要降到的维度为
d
d
d。
输出:降维后的样本集。
(1)分别求出类间散度矩阵
S
b
\mathbf{S_{b}}
Sb和类内散度矩阵
S
w
\mathbf{S_{w}}
Sw。
(2)计算出矩阵
S
w
−
1
S
b
\mathbf{S_{w}^{-1}S_{b}}
Sw−1Sb。
(3)计算出矩阵
S
w
−
1
S
b
\mathbf{S_{w}^{-1}S_{b}}
Sw−1Sb的最大
d
d
d个特征值和对应的特征向量,组成投影矩阵:
W
=
(
w
1
,
w
2
,
.
.
.
,
w
d
)
\mathbf{W}=(\mathbf{w}_{1},\mathbf{w}_{2},...,\mathbf{w}_{d})
W=(w1,w2,...,wd)
(4)得到新的样本:
x
n
e
w
i
=
W
T
x
i
\mathbf{x^{i}_{new}}=\mathbf{W^{T}x^{i}}
xnewi=WTxi
(1)LDA为有监督降维,PCA为无监督降维。
(2)PCA可以降低到任意维度,LDA只能降维最大至类别数减1。
(3)LDA可以进行分类。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.datasets import make_classification
x, y = make_classification(n_samples=1000, n_features=3, n_redundant=0, n_classes=3, n_informative=2,
n_clusters_per_class=1,class_sep =0.5, random_state =10)
print(x.shape)
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(x[:, 0], x[:, 1], x[:, 2],c=y)
输出:
from sklearn.decomposition import PCA
model1=PCA(n_components=2)
x1 = model1.fit_transform(x)
print(x1.shape)
plt.scatter(x1[:,0],x1[:,1],c=y)
plt.show()
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
model2 = LinearDiscriminantAnalysis(n_components=2)
model2.fit(x,y)
x2=model2.transform(x)
print(x2.shape)
plt.scatter(x2[:,0],x2[:,1],c=y)
plt.show()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。