什么是线性判别分析
引自周志华老师的《机器学习》
线性判别分析是一种经典的线性学习方法,给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能的近,异类样例的投影点尽可能原,在对新样本进行分类时,将其投影到同样的这条直线上,在根据投影点的位置来确定新样本的类别
一个直观的例子:
线性判别分析的作用
1、分类
2、降维,其将高维空间的点映射到一条直线上,用一个实数来表示高维空间的点
基本思想
线性判别分析具有两个关键点
- 1、投影后,不同类别的点尽可能远离
- 2、投影后,相同类别的点尽可能靠近
对于关键点1,我们可以使用投影后,不同类别的中心点之间的距离来衡量,中心点距离越远,类别之间的区分度越高
对于关键点2,我们可以使用方差来衡量投影后同类别点之间的散乱程度(方差的统计意义便是衡量点与点之间的散乱程度),方差越小,投影后同类别的数据之间越靠近
如何将点投影到直线上
周志华老师的《机器学习》一书并没有明显说明如何将点投影到直线上,那么我们如何用式子去刻画点投影到直线这个动作呢?即如何寻找到一个式子,使其几何意义表示将点投影到某个直线上
我们来看看维基百科对于线性回归的定义 我是链接:
线性判别分析 (LDA)是对费舍尔的线性鉴别方法的归纳,这种方法使用统计学,模式识别和机器学习方法,试图找到两类物体或事件的特征的一个线性组合,以能够特征化或区分它们
关键点在于LDA试图通过特征的线性组合来特征化或区分它们,若特征为(
x1,
x2,…,
xd),那么LDA的输出应该是
y=
w1x1+
w2x2+…+
wnxd (式1.0)
问题是,这个式子的几何意义是什么?
令
w=(
w1,
w2,…,
wd),x=(
x1,
x2,…,
xd),则式1.0可重写为
y=
wTx (式1.1)
式1.1可看成是向量
w与向量
x的点乘,我们知道向量点乘可以写成:
wT∗x=|
w||
x|cos
θ,其几何意义为向量
x在向量
w方向的投影长度的|
w|倍,那么投影的直线便确定了,即向量
w所在方向的直线,但是线性判别分析是将训练集样例投影到直线上,但是式1.1是投影后在乘以|
w|倍,是不是与线性判别分析的思想有出入呢?其实没有,因为对于所有的样例,式1.1都对其在
w方向的投影放大了|
w|倍,不会改变投影后样例之间的相对位置,而线性判别的关键点只关心投影后点与点之间的相对位置关系,式1.1并不会破坏这个关系
二分类线性判别分析
接下来的任务就是如何使用式1.1去刻画上述两个关键点,即利用式1.1推出一个式子,其几何意义为这两个关键点,假设我们现有一个问题——判断一个工厂生产的零件是不是好零件,一个零件只有好和坏之分,因此这是一个二分类问题,设一个零件具有d个特征,我们用这d个特征去描述这些零件,现假设我们有一批样本数据,其中,好零件的样本为(
x11,
x12,…,
x1n),(
x21,
x22,…,
x2d),…,(
xn1,
xn2,…,
xnd),坏零件的样本为(
x11,,
x12,,…,
x1n,),(
x21,,
x22,,…,
x2n,),…,(
xn1,,
xn2,,…,
xnd,)
如何刻画类别的中心点之间的距离
即如何刻画投影后的中心点(均值),我们先求出投影前的均值向量
好零件的均值向量
x为
(
n∑i=1nxi1,
n∑i=1nxi2,…,
n∑i=1nxid)
投影后,各样本的值为
∑i=1nwix1i,
∑i=1nwix2i,…,
∑i=1nwdxdi
投影后,样本的均值为
n∑i=1nwix1i+∑i=1nwix2i+...+∑i=1nwixdi (式1.2)
(式1.2)可变为:
nw1∑i=1nxi1+
nw2∑i=1nxi2+…+
nwd∑i=1nxid(式1.3)
(式1.3)可变为:
(w1,w2,...,wd)T*(
n∑i=1nxi1,
n∑i=1nxi2,…,
n∑i=1nxid)
⇒
wTx(式1.4)
同理可得坏零件的均值
wTx, (式1.5)
所以类别的中心点之间的距离可以通过下列式子进行刻画
(
wTx−
wTx,)2
⇒
wT
(x−
x,)
(x−
x,)T
w (式1.6)
如何刻画投影后相同类别的散乱程度
对于好零件来说,令
xi表示(
xi1,
xi2,…,
xid),投影后的方差为:
∑i=1n(∑j=1nwjxij−wTx)2
⇒
∑i=1n(wTxi−wTx)2
⇒
∑i=1n(wT(xi−x)(xi−x)Tw)
由于矩阵的加法与乘法满足分配率,所以上式可以变为:
wT(∑i=1n(xi−x)(xi−x)T))w (式1.7)
同理可得坏零件投影后的的方差为
wT(∑i=1n(xi,−x,)(xi,−x,)T))w (式1.8)
将式1.7与式1.8相加得:
wT(∑i=1n(xi−x)(xi−x)T))w+
wT(∑i=1n(xi,−x,)(xi,−x,)T))w
⇓
wT(∑i=1n(xi,−x,)(xi,−x,)T+∑i=1n(xi−x)(xi−x)T)w (式1.9)
可以得出,式1.9最小时,有式1.7最小化,式1.8最小化
如何用式1.9与式1.6刻画LDA的两个关键点
wT
(x−
x,)
(x−
x,)T
w (式1.6)
wT(∑i=1n(xi,−x,)(xi,−x,)T+∑i=1n(xi−x)(xi−x)T)w (式1.9)
令
Sb表示
(x−
x,)
(x−
x,)T,
Sw表示
(∑i=1n(xi,−x,)(xi,−x,)T+∑i=1n(xi−x)(xi−x)T),先明确一点,
Sb与
Sw均为标量,
Sb为类间散度矩阵,
Sw为类内散度矩阵
线性判别分析具有的两个关键点为
- 1、投影后,不同类别的点尽可能远离,令式1.6最大化
- 2、投影后,相同类别的点尽可能靠近,令式1.9最小化
因此,线性判别法的最终关键点为求下列函数的最大值
J=wTSwwwTSbw
好,很好,现在已经将问题转换为函数极值问题了,这里使用拉格朗日乘子法求解,我们将分母限制为长度为1(这是用拉格朗日乘子法一个很重要的技巧),则有:
c=wTSbw−λ(wTSww−1)
其实函数c长这个样子:
c=Sb(w12+w22+....+wd2)−λ[Sw(w12+w22+....+wd2)],函数
s对
w求偏导有:
∂w1∂c=2w1Sb−2λw1Sw
∂w2∂c=2w2Sb−2λw2Sw
…
∂wd∂c=2w1Sb−2λw1Sw
令上面这些式子等于0,其实等价于:
2Sbw−2λSww=0⇒Sbw=λSww
仔细观察,
Sbw其实为
(x−
x,)
(x−
x,)Tw
(x−
x,)Tw为标量,我们设它为
λw,则有
λw
(x−
x,)=λSww
⇒
Sw−1(x−
x,)=λwλw
其实
Sw−1(x−
x,)就是最优解,假设
w1是最优解,则
Sw−1(x−
x,)为
λwλw1,我们把
λwλw1代入函数
J,会发现参数
λwλ被约掉了,所以
Sw−1(x−
x,)就是最优解