提要:html
本文主要介绍了和推导了LDA和PCA,参考了这篇博客算法
LDA编辑器
LDA的原理是,将带上标签的数据(点),经过投影的方法,投影到维度更低的空间中,使得投影后的点,会造成按类别区分,一簇一簇的状况,相同类别的点,将会在投影后的空间中更接近。要说明白LDA,首先得弄明白线性分类器(Linear Classifier):由于LDA是一种线性分类器。对于K-分类的一个分类问题,会有K个线性函数:函数
PS 上面一大段话彻底能够不看,看不懂也彻底没有关系,你只要知道不一样类的x,通过上面那个式子算出y(x和y的维数可能不一样,通常y的维数要小一点,由于LDA和PCA就是用来降维的嘛,PPS就是用维数较低的数据就能够将较高维的数据分开)后仍然能够分开就好了。举个例子吧,二维数据x分为两类,其中第一类都在第1、四象限,如(1,0)、(7,7)等等,第二类则都在第二象限,如(-1,2)、(-5,8)等等,而后你选取合适的wk,带入的式子能够有第一类算出的y都大于0,而第二类y都小于0(这里只是假设为0,实际上算出来多是其余的数),这样是否是仅用y的大小就能表示出两类的区别了啊,下面讲的就是怎么求出合适的wk。优化
此图是原博客主举得例子,能够看出红蓝在那条直线上的投影,就是降维的操做spa
在这里咱们应当考虑用什么标准考量投影后的数据的好坏了(即y的分布了),天然而然,咱们但愿3d
一、原来的就是不一样类的x计算成y之后也能分的越开越好(如上图的那些在线上的红点和蓝点分的越开越好),htm
二、而同一类则离得越近越好(如上图中咱们但愿映射后的红点咱们但愿他能够更密集些)blog
对于1,咱们选取了每类的中心点用来衡量他们的距离,而2,咱们用了万能的方差君⊙﹏⊙bip
说了那么多,咱们总算是将咱们的猪脚弄出来了,~\(≧▽≦)/~啦啦啦
你们想来已经知道m1~(公式编辑器坏了的人伤不起),m2~是投影后的类一、2 的中心点了,s1~ s2~的平方则是方差了,我们如今只要求出J(w)取最大值时,w的取值就好了,下面全部的推导、计算什么的都是围绕这一点展开的,下面是上述公式的数学解释
类别i的原始中心点为:(Di表示属于类别i的点)
类别i投影后的中心点为:
衡量类别i投影后,类别点之间的分散程度(方差)为:
而后就是对J(w)的化简了,具体来就是将 m1~,m2~,s1~,s2~用咱们如今能够知道的数据代替
这是原来的方差(在咱们举得例子中就是其在x的方差)
华丽丽的化成了y的方差
求个和
同理(你妹的同理)
这样损失函数能够化成下面的形式:
解释一下咱们为何要将J(w)化成这个样子,第一点所有用已知的数据表示出来了,也就是说这个式子中只有w是变量了,其余都是常量了,第二点、化成这样咱们能够用拉格朗日法了,至因而什么是拉格朗日法,请看这里,下面就是用拉格朗日法来处理J(w),来求出J(w)最大值时的w值了
若是分子、分母是均可以取任意值的,那就会使得有无穷解,咱们将分母限制为长度为1(这是用拉格朗日乘子法一个很重要的技巧,在下面将说的PCA里面也会用到,若是忘记了,请复习一下高数),并做为拉格朗日乘子法的限制条件,带入获得:
这样的式子就是一个求特征值的问题了。
这样问题就解决了,咱们就求出了w了。
对于二维以上的分类的问题,我就直接写出下面的结论了:
这一样是一个求特征值的问题,咱们求出的第i大的特征向量,就是对应的Wi了。
PCA
推完LDA后看PCA应该很快了,毕竟两种方法没有本质上的区别,只不过PCA是不带标签的,将方差取最大的结果罢了(LDA是将J(w)取最大了,且带标签的,即事先已经分好类了),推导过程彻底同样,而最小投影偏差法则是立足于投影的偏差最小这一思想而后给强推出来的,最后证实二者结果相同。
原博客讲得不错,我就直接复制粘贴了。。。
PCA的所有工做简单点说,就是对原始的空间中顺序地找一组相互正交的坐标轴,第一个轴是使得方差最大的,第二个轴是在与第一个轴正交的平面中使得方差最大的,第三个轴是在与第一、2个轴正交的平面中方差最大的,这样假设在N维空间中,咱们能够找到N个这样的坐标轴,咱们取前r个去近似这个空间,这样就从一个N维的空间压缩到r维的空间了,可是咱们选择的r个坐标轴可以使得空间的压缩使得数据的损失最小。
主成分分析(PCA)与LDA有着很是近似的意思,LDA的输入数据是带标签的,而PCA的输入数据是不带标签的,因此PCA是一种unsupervised learning。LDA一般来讲是做为一个独立的算法存在,给定了训练数据后,将会获得一系列的判别函数(discriminate function),以后对于新的输入,就能够进行预测了。而PCA更像是一个预处理的方法,它能够将本来的数据下降维度,而使得下降了维度的数据之间的方差最大(也能够说投影偏差最小,具体在以后的推导里面会谈到)。
我下面将用两种思路来推导出一个一样的表达式。首先是最大化投影后的方差,其次是最小化投影后的损失(投影产生的损失最小)。
最大化方差法:
假设咱们仍是将一个空间中的点投影到一个向量中去。首先,给出原空间的中心点:
假设u1为投影向量,投影以后的方差为:
上面这个式子若是看懂了以前推导LDA的过程,应该比较容易理解,若是线性代数里面的内容忘记了,能够再温习一下,优化上式等号右边的内容,仍是用拉格朗日乘子法:
将上式求导,使之为0,获得:
这是一个标准的特征值表达式了,λ对应的特征值,u对应的特征向量。上式的左边取得最大值的条件就是λ1最大,也就是取得最大的特征值的时候。假设咱们是要将一个D维的数据空间投影到M维的数据空间中(M < D), 那咱们取前M个特征向量构成的投影矩阵就是可以使得方差最大的矩阵了。
最小化损失法:
假设输入数据x是在D维空间中的点,那么,咱们能够用D个正交的D维向量去彻底的表示这个空间(这个空间中全部的向量均可以用这D个向量的线性组合获得)。在D维空间中,有无穷多种可能找这D个正交的D维向量,哪一个组合是最合适的呢?
假设咱们已经找到了这D个向量,能够获得:
咱们能够用近似法来表示投影后的点:
上式表示,获得的新的x是由前M 个基的线性组合加上后D - M个基的线性组合,注意这里的z是对于每一个x都不一样的,而b对于每一个x是相同的,这样咱们就能够用M个数来表示空间中的一个点,也就是使得数据降维了。可是这样降维后的数据,必然会产生一些扭曲,咱们用J描述这种扭曲,咱们的目标是,使得J最小:
上式的意思很直观,就是对于每个点,将降维后的点与原始的点之间的距离的平方和加起来,求平均值,咱们就要使得这个平均值最小。咱们令:
将上面获得的z与b带入降维的表达式:
将上式带入J的表达式获得:
再用上拉普拉斯乘子法(此处略),能够获得,取得咱们想要的投影基的表达式为:
这里又是一个特征值的表达式,咱们想要的前M个向量其实就是这里最大的M个特征值所对应的特征向量。证实这个还能够看看,咱们J能够化为:
也就是当偏差J是由最小的D - M个特征值组成的时候,J取得最小值。跟上面的意思相同。