线性判别分析LDA

原文来自博客园(华夏35度)http://www.cnblogs.com/zhangchaoyang 作者:Orisun
有一点修改

Discriminant Analysis就是根据研究对象的各种特征值判别其类型归属问题的一种多变量统计分析方法。
根据判别标准不同,可以分为距离判别、Fisher判别、Bayes判别法等。比如在KNN中用的就是距离判别,当然这里的“距离”又有好几种:欧氏距离、街区距离、甚至可以用皮尔森相关系数等。朴素贝叶斯分类用的就是Bayes判别法。本文要讲的线性判别分析就是用是Fisher判别式。
根据判别函数的形式,可以分为线性判别和非线性判别。

LDA和PCA比较

两者都是为了在对原始数据降维之后进行分类。PCA是无监督的方式,它没有分类标签,降维之后需要采用K-Means或自组织映射网络等无监督的算法进行分类。LDA是有监督的方式,它先对训练数据进行降维,然后找出一个线性判别函数。

两类线性判别分析

给定N个特征为d维的样例 x(i){x(i)1,x(i)2,,x(i)d} ,其中有N1个样例属于类别w1,另外N2个样例属于类别w2。现在我们要将原始数据降低到只有一维,降维函数(或者叫投影函数)是: y=wTx ,最后我们就依靠每个样例对应的y值来判别它属于哪一类。

形象的图求如下
映射到低维

我们就是要找到这个最佳的w,使得样例映射到y后最易于区分。

定义每类样例的均值点: ui=1Nixωix

样例投影到y后有均值点为: ui~=1NixωiωTx=ωTui

我们希望投影后两类样例中心尽量地分离,即 |u1~u2~|=|ωT(u1u2)| 越大越好。

同时我们希望投影之后类内部的方差 si~2=yωi(yui~)2 越小越好。

由此得到我们的目标函数:

max  J(ω)=|u1~u2~|2s1~2+s2~2

又是个最优化问题。最终解得:

ω=(s1+s2)1(u1u2)

s1和s2分别中原始样例的方差。

这就是Fisher在1936年提出的线性判别分析。
如果 y=ωTxωTu>0 ,u是所有样本的均值),就属于类别C1,否则就属于类别C2。

实际上使用线性回归得到的直线方向就是二值分类中LDA求得的直线方向。

多类线性判别分析

假设有C个类别,降以一维已经不能满足分类要求了,我们需要k个基向量来做投影, W=[w1|w2||wk] 。样本点在这k维投影后的结果为 [y1,y2,,yk] ,且有 yi=wTix ,  y=WTx

Sω=i=1CSωi

Sω=xωi(xui)(xui)T

SB=i=1CNi(uiu)(uiu)T

u=1Nxx=1NxωiNiui

同样是求一个类似于(1)式的最优化问题,我们得到
S1ωSBωi=λωi

ωi 是矩阵 S1ωSB 的特征向量。首先求出 S1ωSB 的特征值,然后取其前k个特征向量组成W即可,因为特征值大的对应的特征向量分割性好。另外 SB 的秩至多为C-1,所以 S1BSB 不为0的特征值至多有C-1个,所以k最大为C-1。

由于 S1BSB 不一定是对称矩阵,因此k个特征向量不一定正交,这也是与PCA不同的地方。求 S1BSB 的特征向量不能采用奇异值分解的方式,而因该采用更通用的求一般方阵特征向量的方式。特征值的求法有很多,求一个D * D的矩阵的时间复杂度是 O(D3) , 也有一些求Top k的方法,比如说幂法,它的时间复杂度是 O(D2k)
那降维之后又如何根据y值来判别分类呢?原博中这个地方写的有问题,我们既然已经求出了降维函数y,接下来我们需要把样本投影到这个y上,然后再用其他的分类方法来进行分类。

使用LDA的限制

  1. LDA至多可生成C-1维子空间
  2. LDA不适合对非高斯分布的样本进行降维
  3. LDA在样本分类信息依赖方差而不是均值时,效果不好。
  4. LDA可能过度拟合数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值