主成分分析和判别函数
标签: 模式分类
@author lancelot-vim
主成分分析
考虑n个d维的样本 x1,x2...xn ,如何使用一个d维的向量 x0 ,来代表这n个样本,确切说,我们希望这n个样本和它的代表 x0 之间的距离的和越小越好,特别的,使用欧几里得距离来定义误差函数 J0(x0) : J0(x0)=∑nk=1||x0−xk||2
我们的目标是寻找 x0 ,使得 J0 最小,很容易可以得到: x0=1n∑nk=1xk
实际上,样本均值是样本数据集的零维表达,它表达了样本之间的相似,但不能表达样本的差异性。过样本均值做一条直线,并将所有的样本向这条直线上做投影,那么我们能得到代表所有样本的一维向量,若
e⃗
表示这条直线的单位向量,那么直线方程为
x⃗ =m⃗ +ae⃗
,其中
m⃗
代表样本均值
其中
a
是一个实数,表示某点离开
J1(a1,a2...an,e)=∑nk=1||(m+ake)−xk||2=∑nk=1a2k||e||2−2∑nk=1akeT(xk−m)+∑nk=1||xk−m||2
由于
||e||=1
,通过对
ak
求偏导,令结果为0有:
ak=eT(xk−m)
,直观上表示为点到直线的距离
这就引出一个问题,什么方向的直线才是最好的直线,对此定义”散布矩阵”(scatter matrix)
S=∑k=1n(xk−m)(xk−m)T
将上式代入
J1
,有:
J1(e)=∑nk=1a2k−2∑nk=1a2k+∑nk=1||xk−m||2 =−∑nk=1eT(xk−m)(xk−m)Te+∑nk=1||xk−m||2 =−eTSe+∑nk=1||xk−m||2
因此,我们需要找单位向量
e
,让
Jd′=∑k=1n||(m+∑i=1d′akiei)−xk||2
其中: e1,e2...ed′ 为散布矩阵的d’个的最大特征值所对应的特征向量
判别方法
PCA(主成分分析)对于代表或者说表达数据样本特别有效,但是可能对分类并没有什么作用,比如对于字母Q和O,很可能PCA会Q的尾巴丢掉,总的来说PCA方法是用来寻找有效主轴方向的方法,而判别分类方法(discriminant analysis)使用来寻找有效分类方向的方法。
Fisher 线性判别分析
考虑把d维空间的数据投影到一条直线上去,希望不同类别之间的距离尽量远,相同类别尽量紧凑,我们希望找到这样一条直线。假设我们有一组d维的样本
x1,x2...xn
,它们分别属于两个不同的类别,其中大小为
n1
的样本子集
D1
属于类别
w1
,大小为
n2
的样本子集
D2
属于类别
w2
,如果对
x
中的各个成分做线性组合,就能的到一个內积,结果为标量
从几何上来说,假设
||w||=1
,那么每个
yi
就是把
xi
向方向为
w
的直线作投影,
一个很好的用来确定最佳分类方向的方法是度量两个类别样本均值的差,加入
mi
为d为样本的均值,那么投影后的点为:
因此投影之后的样本差为: |m~i−m~j|=|wT(m1−m2)|
由于可以增加 w 的幅值,使得距离超级大,但是投影样本均值的差却是相对的,所以我们需要定义类别
由此Fisher线性可分性准则要求在投影 y=wTx 下,准测函数 J(w)=|m~1−m~2|2s~21+s~22 尽可能大
要使
J(∙)
最大化的
w
能够使投影后的两类最大程度的分开,我们还需要一个阈值准则来确定最终的分类器。
为了把
可得:
- s~2i=∑x∈Di(wTx−wTmi)2=∑x∈DiwT(x−mi)(x−mi)Tw=wTSiw
- 各散度的和: s~21+s~22=wTSww
- 各散度的差: (m~1−m~2)2=(wTm1−wTm2)2 =wT(m1−m2)(m1−m2)Tw =wTSBw
我们把
Sw
称为总类内散度矩阵。它与全部样本的样本写方差矩阵成正比,并且是对称且半正定的。当
d≤n
时,
Sw
通常非奇异。类似的,
SB
被称为总类间散步矩阵,也是对称半正定的,但由于
SB
是两个向量的外积,所以秩至多等于1.特别的,对于任意的
w
,
若使用
SB,Sw
来表达,准则函数
J(⋅)
可以写为:
这个表达式在数学物理中经常被使用,同城被称为广义瑞利商,容易证明,使得准则函数
J
最大化的
这是一个广义特征值问题,可以理解成在
J
的极值处,
多重判别分析
对于c-类问题,把Fisher线性判别准则作推广,就需要c-1个判别函数,也就是说投影问题实际上是从d维空间向c-1维空间作投影, 并且假设
d≥c
,类内散布矩阵推广是明显的:
Sw=∑ck=1Si
,其中
Si=∑x∈Di(x−mi)(x−mi)T
对
SB
的推广不是那么容易,假设我们定义总体均值为
m=1n∑x=1n∑ni=1nimi
,总体散布矩阵
ST=∑(x−m)(x−m)T
,有:
由于,总散布矩阵就是类内散布矩阵和内间散布矩阵的和,即 ST=Sw+SB ,所以自然而然定义类间散布矩阵为: SB=∑ci=1ni(mi−m)(mi−m)T
从d维空间向c-1维空间的投影是通过c-1个分类方程进行的:
yi=wTix (i=1,2 ... c)
,如果我们吧
yi
看作一个c-1维的方程组,可以表达为简单的矩阵方程
y=WTx
对原始样本
x1,x2 ... xn
进行投影后,的到新的样本
y1,y2,...yn
,这些新得到的样本本身又具有它们自己的均值向量和散步矩阵,由此:
- m~i=1ni∑y∈Yiy
- m~=1n∑ci=1nim~i
- S~w=∑ci=1∑y∈Yi(y−m~i)(y−m~i)T
- S~B=∑ci=1ni(m~i−m~)(m~i−m~)T
易证:
- S~w=WTSwW
- S~B=WTSBW
最终,我们的到了判别函数: J(W)=|S~B||S~w|=|WTSBW||WTSwW|
要使得
J(⋅)
最大化,需使矩阵
W
的列向量为