LDA(有的资料也称作Fisher’s Linear Discriminant)
LDA的全称是Linear Discriminant Analysis(线性判别分析),是一种supervised learning。有些资料上也称为是Fisher’s Linear Discriminant。(发明于1936年)
LDA是在目前机器学习、数据挖掘领域经典且热门的一个算法,据我所知,百度的商务搜索部里面就用了不少这方面的算法。
LDA原理:点映射到低维空间,使得同类的点尽量聚集,不同类的点尽量分散
两类线性判别分析:
类别i的原始中心点为:(Di表示属于类别i的点)
类别i投影后的中心点为:
衡量类别i投影后,类别点之间的分散程度(方差)为:
最终我们可以得到一个下面的公式,表示LDA投影到w后的损失函数:
希望投影之后类内部的方差越小越好,投影后两类样例中心尽量地分离,即越大越好
若记:
则
而
所以这样损失函数可以化成下面的形式:
这样就可以用最喜欢的拉格朗日乘子法了,但是还有一个问题,如果分子、分母是都可以取任意值的,那就会使得有无穷解,我们将分母限制为长度为1(这是用拉格朗日乘子法一个很重要的技巧,在下面将说的PCA里面也会用到,如果忘记了,请复习一下高数),并作为拉格朗日乘子法的限制条件,带入得到:
注意:求导时可以简单地把
当做
看待
这样的式子就是一个求特征值的问题了。
如果有一个新的样本,则计算
,大于u(u是所有样本的均值)则属于第一类,小于则属于第二类;
多类线性判别分析:
假设有C个类别,降以一维已经不能满足分类要求了,我们需要k个基向量来做投影,W=[w1|w2|...|wk]。样本点在这k维投影后的结果为[y1,y2,...,yk]
这同样是一个求特征值的问题,我们求出的第i大的特征向量,就是对应的Wi了。(why?,因为上述求得是最大化的,而且可以根据上式如下推断(我自己想的)
则
则相当于求
实际上原因是特征值大的对应的特征向量分割性好)
补充:
1、特征值表示的是矩阵的性质,当我们取到矩阵的前N个最大的特征值的时候,我们可以说提取到的矩阵主要的成分(这个和之后的PCA相关,但是不是完全一样的概念)。
2、下图是图像识别中广泛用到的特征脸(eigen face),提取出特征脸有两个目的,首先是为了压缩数据,对于一张图片,只需要保存其最重要的部分就是了,然后是为了使得程序更容易处理,在提取主要特征的时候,很多的噪声都被过滤掉了。
PCA
主成分分析(PCA)与LDA有着非常近似的意思,LDA的输入数据是带标签的,而PCA的输入数据是不带标签的,所以PCA是一种unsupervised learning。LDA通常来说是作为一个独立的算法存在,给定了训练数据后,将会得到一系列的判别函数(discriminate function),之后对于新的输入,就可以进行预测了。
原理:将原本的数据降低维度,而使得降低了维度的数据之间的方差最大
假设我们还是将一个空间中的点投影到一个向量中去。首先,给出原空间的中心点:
假设u1为投影向量,投影之后的方差为:
上面这个式子如果看懂了之前推导LDA的过程,应该比较容易理解,如果线性代数里面的内容忘记了,可以再温习一下,优化上式等号右边的内容,还是用拉格朗日乘子法:
将上式求导,使之为0,得到:
这是一个标准的特征值表达式了,λ对应的特征值,u对应的特征向量。上式的左边取得最大值的条件就是λ1最大,也就是取得最大的特征值的时候。假设我们是要将一个D维的数据空间投影到M维的数据空间中(M < D), 那我们取前M个特征向量构成的投影矩阵就是能够使得方差最大的矩阵了。