LDA线性判别分析

线性判别分析(Linear Discriminant Analysis)是一种经典的线性学习方法,在二分类问题上因为最早由Fisher提出,也称”Fisher判别分析”。
线性判别分析的思想朴素:给定训练数据集,设法将样本投影到直线上,使得同类样本的投影点尽可能接近、异类样本的投影点尽可能远离。在对新样本进行分类时,将其投影到同样的这条直线上,在根据投影点的位置来确定新样本的类别。
示意图如下:
这里写图片描述

给定训练数据集 T={(xi,yi)}mi=1 , yi{0,1} .其中 xi=(xi1,,xin)T 为列向量。假设 X0,X1 分别表示两种类别的集合, N0,N1 分别表示两种类别的个数,则两种类别的均值如下:

μ0=1N0xX0x

μ1=1N1xX1x

对于向量 w ,向量x w 的投影可以表示为y=wTx。则投影后的均值表示为:
μ~0=1N0xX0wTx=wT1N0xX0x=wTμ0

同理, μ~1=wTμ1 。投影后的均值也是均值的投影。
什么是最佳的直线呢?我们假设投影后的两类样本中心点尽量分离是最好的直线,定量表示为:
J(w)=|μ~0μ~1|=|wT(μ0μ1)|

J(w) 越大越好。
但是只考虑 J(w) 是不行的,看下图。
这里写图片描述
投影到横轴上虽然中心点最远,但是两类样本存在重叠,投影到纵轴上,虽然距离短了,但是却可以分别出两种样本。因此,我们还要考虑样本的方差,方差越小,样本越难以分离。我们使用另一个度量值,称作散列值,对投影后的类求散列值,如下
s~2i=x~X~i(x~μ~i)2=xXi(wTxwTμi)2

其中, X~i Xi 在w上的投影。
散列值的几何意义是样本点的密集程度,值越大,越分散,值越小,越集中。
把散列值公式展开,得到
s~2i=====xXi(wTxwTμi)2xXi(wTxwTμi)T(wTxwTμi)xXi(wTxwTμi)(wTxwTμi)TxXiwT(xμi)(xμi)TwwTxXi(xμi)(xμi)Tw

因为 (wTxwTμi)T(wTxwTμi) 是一个实值,所以转置等于其本身。

Si=xXi(xμi)(xμi)T ,
这个矩阵和协方差矩阵只差一个常数倍,称为散列矩阵。
样本的协方差矩阵参见(协方差矩阵)
我们继续定义
Sw=S0+S1
Sw 称为”类内散度矩阵 (within-class sactter matrix)”。
则我们有
s~20+s~21=wT(S0+S1)w=wTSww
然后,我们展开

(μ~0μ~1)2===(wTμ0wTμ1)T(wTμ0wTμ1)(wTμ0wTμ1)(wTμ0wTμ1)TwT(μ0μ1)(μ0μ1)Tw

Sb=(μ0μ1)(μ0μ1)T ,
Sb 称为“类间散度矩阵(between-class scatter matrix)”。
则目标函数可以表示为

J(w)=wTSbwwTSww

这就是LDA欲最大化的目标,即 Sb Sw 的”广义瑞利熵(generalized Rayleigh quotient)”。
如何求解 w 呢?注意到J(w)的分子和分母都是关于 w 的二次项,因此,其解和w的长度无关,只与其方向有关,不失一般性,令 wTSww=1 ,得到
minwwTSbw
s.t.wTSww=1 .
由拉格朗日乘子法,假设 f(w,λ)=wTSbwλ(wTSww1) ,则有
fw=2Sbw2λSww=0

fλ=wTSww1=0

上式等价于
Sbw=λSww
其中 λ 为拉格朗日乘子.
Sbw=(μ0μ1)(μ0μ1)Tw ,其中 (μ0μ1)Tw 为常数。所以, Sw 的方向恒为 μ0μ1 ,不妨设
Sbw=λ(μ0μ1) ,
得到
w=S1w(μ0μ1) .
考虑到数值解的稳定性,在实践中,通常对 Sw 进行奇异值分解,即 Sw=UΣVT ,这里 Σ 是一个对角矩阵,对角线上的元素为 Sw 的奇异值,然后再由 S1w=VΣ1UT ,得到 S1w .

线性判别多分类
前面是针对的只有两个类的情况,假设类别变成多个,那么要怎么改变,才能保证投影后的类别能够分离呢?
我们之前讨论的是如何将n维降到一维,现在,假设存在N个类别,且第 i 个类别样本数为mi,则有: m=Ni=1mi
假设需要K维向量来做投影。
将这K维向量表示为 W=(w1,w2,,wK)
我们将样本点在这K维向量投影后的结果表示为 y=(y1,y2,,yK)T ,有以下公式成立
yi=wTix
y=WTx
接下来,我们定义多分类情况下下的类间散列度和类内散列度。
类内散列度矩阵定义 Sw 为每个类别的散列度矩阵之和,如下
Sw=Ni=1Swi
其中,
Swi=xXi(xμi)(xμi)T
Sb 需要改变,原来度量的是两个均值点的散列程度,现在度量的是每类均值点相对于样本中心的散列程度。类似于将 μi 看做第i类的中心点, μ 看做总体样本的中心点,如果某类里面的样本点较多,那么其权重稍大,权重用 mi/m ,但由于 J(w) 对倍数不敏感,因此使用 mi .

Sb=i=1Nmi(μiμ)(μiμ)T

其中,
μ=1mxx=1mNi=1miμi
则投影到第k(k=1,2,…K)维可以表示为:
μ~i=1mixXiwTkx
μ~=1mxwTkx
投影到第k维 的类内散度矩阵和类间散度矩阵分别为
S~w=Ni=1xXi(wTkxwTkμi)(wTkxwTkμi)T
S~b=Ni=1mi(wTkμiwTkμ)(wTkμiwTkμ)T
综合各个投影向量w上的 Sw , Sb ,得到
S~W=WTSwW
S~B=WTSbW
W是基向量矩阵, SW~ , SB~ 分别是投影后的类内散列度矩阵之和和各个类中心相对于全样本中心投影的类间散列度矩阵之和。
然而最后的 J(W) 的形式是
J(W)=SB~SW~=|WTSbW||WTSwW|
由于分子分母都是散列度矩阵,要将矩阵变为实数,需要取行列式。
固定分母为1,然后求导,得到 SbW=λSwW ,
得到 W 的闭式解是S1wSb的N-1个最大广义特征值所对应的的特征向量组成的矩阵。

另一种推导的方式。
假设存在N个类别,且第i类的样本数为 Ni ,我们定义“全局散度矩阵”
St=Sb+Sw=mi=1(xiμ)(xiμ)T
其中, μ 为所有样本的均值。
类内散度矩阵 Sw 定义为每个类别的散度矩阵的
Sw=Ni=1Swi ,
其中 Swi=xXi(xμi)(xμi)T .
则类间散度定义为
Sb=StSw
=mi=1(xiμ)(xiμ)TNi=1xXi(xμi)(xμi)T
=Ni=1xXi(xμ)(xμ)TNi=1xXi(xμi)(xμi)T
=Ni=1xXi[(xμ)(xμ)T(xμi)(xμi)T]
=Ni=1xXi[x(μTiμ)+(μiμ)xT+(μμTμiμTi)]
=Ni=1[Niμi(μTiμ)+Ni(μiμ)μTi+Ni((μμTμiμTi)]
=Ni=1Ni(μiμ)(μiμ)T .
后面的步骤和上面类似。

参考文档:
线性判别分析(Linear Discriminant Analysis)
《机器学习》周志华

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhengjihao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值