线性判别分析(简称LDA),最早由Fisher提出,也叫Fisher判别分析。
LDA 的思想非常朴素: 给定训练样例集, 设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。
下面以二分类问题为例,如图所示
LDA 的二维示意图"+"、"- "分别代表正例和反例,椭圆表示数据簇的外轮廓,虚线表示投影, 红色实心园和实心三角形分别表示两类样本投影后的中心点。
关于“投影”的理解:机器学习里面的样本往往是由向量描述的,所以这里讲的“投影”不能简单的认为一个点向一条直线做垂线,找垂点的问题,而应当看做这个向量对应的样本点在,对向本空间中的某个直线上的“映射”。
问题的关键即是找到这样一条直线,使得“投影后类内方差最小,类间方差最大”,比如
样本点均匀分布在椭圆里,投影到横轴x1上时能够获得更大的中心点间距,但是由于有重叠,x1不能分离样本点。投影到纵轴x2上,虽然中心点间距较小,但是能够分离样本点。因此我们还需要考虑样本点之间的方差,方差越大,样本点越难以分离,方差越小,即样本点越集中,样本点越容易分离(其实就是对散度的考察)。
下面给出这个问题的数学原理。我们的目的是找到第一张图片中最佳的ω,首先找到每类样本的中心点(均值)
对于二分类问题,只有两类i = 2,Ni表示第i类样本的个数。样本点到直线y = ωTx投影后的样本点均值是
因此,投影后的的均值也就是样本中心点的投影。当考虑样本点的聚集程度的时候,我们常用方差表示,如果我们忽略计算方差时要除以的样本数量,定义散列值如下:
其中,y = ωTx表示每个样本点对应的值,括号里面第二项表示每类样本点的均值。散列值的几何意义是样本点的密集程度,值越大,越分散,反之,越集中。
而我们想要的投影后的样本点的样子是:不同类别的样本点越分开越好(下式分子),同类的越聚集越好(下式分母),也就是均值差越大越好,散列值越小越好。所以定义如下一个度量
所以使J(w)最大化就是LDA的目标,即寻找使J(w)最大的w即可。
先把散列值公式展开
上式的计算用到如下公式,a,b 都是列向量,则(这个公式还没考证,请知道的同学私信,谢谢) 那么就有如下推导
我们定义上式中中间那部分
这个公式的样子不就是少除以样例数的协方差矩阵么,称为散列矩阵。x代表不同的样本点,样本本身是向量,是多维的,所以上式计算出来的是矩阵。
在概率论和统计学中,协方差用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,衡量一个变量的分散程度(总体误差)。
或
期望值分别为E[X]与E[Y]的两个实随机变量X与Y之间的协方差Cov(X,Y)定义为
如果X与Y是统计独立的,那么二者之间的协方差就是0,因为两个独立的随机变量满足E[XY]=E[X]E[Y]。
协方差是描述X和Y相关程度的,理解协方差,请参考https://www.zhihu.com/question/20852004
下面说协方差矩阵, cij为X的分量Xi和Xj的协方差。
对于两类问题而言,设:
对于多类问题
其中 表示第i类样本的协方差矩阵。所以Sw就是表示C类样本协方差矩阵之和。 所以J(ω)的分母可以写为
下面看J(ω)的分子,我们展开分子
那么J(w)最终可以表示为
称为SB和SW的广义瑞利商。现在的问题是,如何求解使J最大时的ω呢?这个问题比较复杂,为了不使篇幅太长,下次再讲。
参考:《机器学习》周志华
http://www.sohu.com/a/214082074_100008678
https://blog.csdn.net/liuweiyuxiang/article/details/78874106
https://baike.baidu.com/item/%E5%8D%8F%E6%96%B9%E5%B7%AE/2185936?fr=aladdin
https://baike.baidu.com/item/%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5/9822183?fr=aladdin
网友评论