LDA 线性判别分析

来源:互联网 发布:naca4412翼型数据 编辑:程序博客网 时间:2024/06/14 01:52

一、简介



        相较于FLD(Fisher Linear Decriminant),LDA假设:1.样本数据服从正态分布,2.各类得协方差相等。虽然这些在实际中不一定满足,但是LDA被证明是非常有效的降维方法,其线性模型对于噪音的鲁棒性效果比较好,不容易过拟合。



二、LDA分类【二分类】


     1.原理小节

        对于二分类LDA问题,简单点来说,是将带有类别标签的高维样本投影到一个向量w(一维空间)上,使得在该向量上样本的投影值达到类内距离最小、类内间距离最大(分类效果,具有最佳可分离性)。问题转化成一个确定w的优化问题。其实w就是二分类问题的超分类面的法向量。类似于SVM和kernel PCA,也有kernel FDA,其原理是将原样本通过非线性关系映射到高维空间中,在该高纬空间利用FDA算法,这里的关键是w可以用原样本均值的高维投影值表示,这样可以不需知道具体的映射关系而给出kernel的形式就可以了。和PCA一样,FDA也可以看成是一种特征提取(feature extraction)的方法,即将原来的n维特征变成一维的特征了(针对该分类只要有这一个特征就足够了)。

   

    2.问题

      PCA、ICA之余对样本数据来言,可以是没有类别标签y的。回想我们做回归时,如果特征太多,那么会产生不相关特征引入、过度拟合等问题。我们可以使用PCA来降维,但PCA没有将类别标签考虑进去,属于无监督的。举一个例子,假设我们对一张100*100像素的图片做人脸识别,每个像素是一个特征,那么会有10000个特征,而对应的类别标签y仅仅是0/1值,1代表是人脸。这么多特征不仅训练复杂,而且不必要特征对结果会带来不可预知的影响,但我们想得到降维后的一些最佳特征(与y关系最密切的),怎么办呢?  

         回顾我们之前的logistic回归方法,给定m个n维特征的训练样例clip_image002(i从1到m),每个clip_image004对应一个类标签clip_image006。我们就是要学习出参数clip_image008,使得clip_image010(g是sigmoid函数)。

         首先给定特征为d维的N个样例,clip_image012,其中有clip_image014个样例属于类别clip_image016,另外clip_image018个样例属于类别clip_image020。现在我们觉得原始特征数太多,想将d维特征降到只有一维,而又要保证类别能够“清晰”地反映在低维数据上,也就是这一维就能决定每个样例的类别。假设这个最佳映射向量为w(d维),那么样例x(d维)到w上的投影可以表示为

     clip_image022

           为了方便说明,假设样本向量clip_image002包含2个特征值(d=2),我们就是要找一条直线(方向为w)来做投影,然后寻找最能使样本点分离的直线。如下图:

     clip_image024

    直观上,右图相较于左图可以在映射后,更好地将不同类别的样本点分离。

    接下来我们从定量的角度来找到这个最佳的w。

    首先,每类样本的投影前后的均值点分别为(此处样本总数C=2),Ni表示每类样本的个数

     clip_image026

     clip_image028

       由此可知,投影后的的均值也就是样本中心点的投影

    什么是最佳的投影向量w呢?我们首先发现,能够使投影后的两类样本均值点尽量间隔较远的就可能是最佳的,定量表示就是:

     clip_image030

       J(w)越大越好。但是只考虑J(w)行不行呢?不行,看下图

     clip_image031

      样本点均匀分布在椭圆里,投影到横轴x1上时能够获得更大的中心点间距J(w),但是由于有重叠,x1不能分离样本点。投影到纵轴x2上,虽然J(w)较小,但是能够分离样本点。因此我们还需要考虑样本点之间的方差,方差越大,样本点越难以分离。我们使用另外一个度量值——散列值(Scatter)。对投影后的类求散列值,如下

     clip_image033

      从公式中可以看出,只是少除以样本数量的方差值,散列值的几何意义是样本点的密集程度,值越大,越分散,反之,越集中。而我们想要的投影后的样本点的样子是:不同类别的样本点越分开越好,同类的越聚集越好,也就是均值点间距离越大越好,散列值越小越好。正好,我们可以使用J(w)和S(w)来度量。定义最终的度量公式:

     clip_image035

    接下来的事就比较明显了,我们只需寻找使J(w)最大的w即可。展开散列值公式:

     clip_image037

      定义:

  clip_image039

    该协方差矩阵称为散列矩阵(Scatter matrices)。利用该定义,上式可简写为:clip_image049

    定义样本集的Within-Class Scatter Matrix——类内离散度矩阵clip_image043为:

     clip_image041

      使用以上3个等式,可以得到 clip_image051

      展开分子:

     clip_image052

        clip_image054称为Between-Class Scatter Matrix即类间离散度矩阵。clip_image054是两个向量的外积,是个秩为1的矩阵。

    那么J(w)最终可以化简表示为:

 

     在我们求导之前,需要对分母进行归一化,因为不做归一的话,w扩大任何倍,都成立,我们就无法确定w。这里w并不是唯一的,倘若w对应J(w)的极大值点,则a*w仍旧可以达到J(w)的极大值点。

  令clip_image058,即目标函数J(w)化简为等于其分子部分,且受clip_image058约束。加入拉格朗日乘子并求导得到:

    clip_image059

    利用矩阵微积分,求导时可以简单地把clip_image061当做clip_image063看待。如果clip_image043[1]可逆(非奇异),那么将求导后的结果两边都乘以clip_image065,得

     clip_image066

     这个可喜的结果就是w就是矩阵clip_image068的特征向量了。这个公式称为Fisher Linear Discrimination

   等等,让我们再观察一下,发现前面clip_image070的公式

     clip_image072

   那么

     clip_image074

  代入最后的特征值公式得

     clip_image076

  由于对w扩大缩小任何倍不影响结果,因此可以约去两边的未知常数clip_image078clip_image080,得到

     clip_image082

  至此,我们只需要求出原始样本的均值和方差就可以求出最佳的方向w,这就是Fisher于1936年提出的线性判别分析。

  考虑到数值解的稳定性,在实践中,通常是对Sw进行奇异值分解,即:


  这里,是一个实对角矩阵,其对角线上的元素是Sw的奇异值,然后再由


  求解出w的解!


  看上面二维样本的投影结果图:

     clip_image083

原创粉丝点击