LDA是一种有监督学习算法。
在PCA中,算法没有考虑数据的标签(类别),只是把数据映射到一些方差比较大的方向而已。
思想
LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的,这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”,即最大化类间距离,最小化类内方差
推导
(1) 假设有C1、C2两个类比的样本,两类均值为:
μ1=N11∑x∈C1x
μ2=N11∑x∈C2x
(2) 目标
是希望投影后两类之间的距离尽可能大,每一类的方差小距离表示为:
D(C1,C2)=∣∣μ1
−μ2
∣∣22
其中
μ1
,
μ2
表示两类的中心在
ω方向上的投影向量
μ1
=wTμ1,μ2
=wTμ2
(3)优化
需要优化的问题
{s.tmax∣∣ωT(μ1−μ2)∣∣22ωTω=1,单位方向向量
(4)目标函数
目标函数定义为类间距离与类内距离的比值,引出最大化的目标:
maxJ(w)=D1+D2∣∣wT(μ1−μ2)∣∣22
D1 D2为两个类投影后的方差,其中D1,D2为:
D1=x∈C1∑(wTx−wTμ1)2=x∈C1∑wT(x−μ1)(x−μ1)Tw
扫描二维码关注公众号,回复:
5572703 查看本文章
D2=x∈C2∑wT(x−μ2)(x−μ2)Tw
故
J(w)可以表示为:
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
在此,我们定义类间散度矩阵(各样本间的均方距离):
SB=(μ1−μ2)(μ1−μ2)T,
类内散度矩阵(各样本点围绕均值的散布情况)为:
Sw=∑x∈Ci(x−μi)(x−μi)T
J(w)变换为:
J(w)=wTSwwwTSBw
对
ω求偏导,并令导数为零:
∂ω∂J(ω)=(wTSww)2(∂w∂wTSBwwTSww−∂w∂wTSwwwTSBw)
通过矩阵求导法则,可得出:
(wTSww)SBw=(wTSBw)Sww
令
λ=J(w)=wTSwwwTSBw
整理得出:
SBw=λSww⟹Sw−1SBw=λw
于是LDA降维变成了求矩阵特征向量的问题,J(w)就对应了矩阵
Sw−1SB最大的特征值,投影方向为这个特征值对应的特征向量。
步骤
对于多类别标签高维数据的LDA步骤如下:
- 计算数据集中每个类别样本均值向量uj,以及总体样本均值u;
- 计算类内散度矩阵
Sw,全局散度矩阵S_t
,并得到类间散度矩阵S_b= S_t-S_w$
- 对于矩阵
Sw−1Sb 进行特征值分解,将特征值从大到小排列;
- 取特征值前d大的对应特征向量
w1,...wd,将n维样本映射到d维
xi′=⎣⎢⎢⎡w1Txiw2Txi⋯wdTxi⎦⎥⎥⎤(3)
输入:数据集
D={(x1,y1),(x2,y2),...,((xm,ym))},其中任意样本
xi为n维向量,
yi∈{C1,C2,...,Ck},降维到的维度d。
输出:降维后的样本集
D′
1) 计算类内散度矩阵$S_w
2) 计算类间散度矩阵$S_b
3) 计算矩阵
Sw−1Sb
4)计算
Sw−1Sb的最大的d个特征值和对应的d个特征向量
(w1,w2,...wd),得到投影矩阵WW
5) 对样本集中的每一个样本特征
xi,转化为新的样本
zi=WTxi
6) 得到输出样本集
D′={(z1,y1),(z2,y2),...,((zm,ym))}
比较
相同点
1)两者均可以对数据进行降维。
2)两者在降维时均使用了矩阵特征分解的思想。
3)两者都假设数据符合高斯分布。
不同点
1)LDA是有监督的降维方法,而PCA是无监督的降维方法
2)LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。
3)LDA除了可以用于降维,还可以用于分类。
4)LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。