线性判别分析(Linear Discriminant Analysis, LDA)是一种有监督降维方法,有关机器学习的书上一定少不了对PCA和LDA这两个算法的介绍。LDA的标准建模形式是这样的(这里以两类版本为例,文章会在几个关键点上讨论多类情况):
其中,
怎么样,一定非常熟悉吧,经典的LDA就是长这个样子的。这个式子的目标也十分直观:将两类样本投影到一条直线上,使得投影后的类间散布矩阵与类内散布矩阵的比值最大。
三个加粗的词隐含着三个问题:
1 为什么是类间散布矩阵
2 为什么是投影到直线,而不是投影到超平面?PCA是把d维样本投影到c维(c<d),LDA为什么不能也投影到c维,而是直接投影到1维呢?同样地,在K类LDA中,为什么书上写的都是投影到K-1维,再高一点不行吗?这是必然吗?
3 为什么是类间散布与类内散布的比值呢?差值不行吗?
这篇文章就围绕这三个问题展开。我们先回顾一下经典LDA的求解,然后顺次讲解分析这三个问题。
原问题等价于这个形式:
然后就可以用拉格朗日乘子法了:
求导并令其为0:
得到解:
对矩阵
而其中
求解完毕。
非常优雅,不愧是教科书级别的经典算法,整个求解一气呵成,标准的拉格朗日乘子法。但是求解中还是用到了一个小技巧:
我们不用类内散布矩阵了
还是用拉格朗日乘子法:
求导并令其为0:
得到解:
怎么样,是不是求解更简单了呢,不需要任何技巧,一步一步下来就好了。
为什么说均值之差更符合直觉呢?大家想啊,LDA的目的是让投影后的两类之间离得更远,类内离得更近。说到类内离得更近能想到的最直接的方法就是让类内方差最小,这正是类内散布矩阵;说到类间离得更远能想到的最直接的方法肯定是让均值之差最大,而不是均值之差与自己的克罗内克积这个奇怪的东西最大。
那么经典LDA为什么会用类间散布矩阵呢?我个人认为是这样的表达式看起来更加优雅:分子分母是齐次的,并且这个东西恰好就是广义瑞利商:
虽然经典LDA求解没有上面这个方法直接,但是问题表述更加规范,所用到的技巧也非常简单,不会给是使用者带来困扰,所以LDA最终采用的就是类间散布矩阵了吧。
上面那个问题只算是小打小闹,没有太大的意义,但是这个问题就很有意义了:LDA为什么直接投影到直线(一维),而不能像PCA一样投影到超平面(多维)呢?
我们试试不就完了hhh。
假设将样本投影到
$W^Tx = \left[ \begin{matrix} w_1^Tx \ w_2^Tx \ . \ . \ w_c^Tx \end{matrix} \right] \in R^c $
Github无法渲染上述公式,所以附图。本地markdown编辑器一般都可以打开
所以样本的投影过程就是:
那么,均值的投影过程也是这样:
投影后的均值之差的二范数:
$\begin{equation} \begin{aligned} ||W^T(m_1-m_2)||_2^2 &=(m_1-m_2)^TWW^T(m_1-m_2) \ &=tr[W^T(m_1-m_2)(m_1-m_2)^TW] \ &=tr[W^TS_BW] \end{aligned} \end{equation} $
Github无法渲染上述公式,所以附图。本地markdown编辑器一般都可以打开
为什么不用第一行的向量内积而偏要用第二行的迹运算呢?因为这样可以拼凑出类间散布
回顾一下经典LDA的形式:
现在我们有了
实际上,约束也可以选择成
回想
右边是秩为c的单位矩阵,因为矩阵乘积的秩不大于每一个矩阵的秩,所以左边这三个矩阵的秩都要不小于c,因此我们得到了
下面来求解这个问题。还是拉格朗日乘子法:
求导并令其为0:
得到了:
在大部分情况下,一些协方差矩阵的和
我们只要对
真的是这样吗?
不是这样的。诚然,我们可以选出c个特征向量,但是其中只有1个特征向量真正是我们想要的,另外c-1个没有意义。
观察:
发现了吗?等式右边的
秩为1的矩阵只有1个非零特征值,也只有1个非零特征值对应的特征向量w。
可能有人会问了,那不是还有零特征值对应的特征向量吗,用它们不行吗?
不行。来看一下目标函数:
我们刚才得到的最优性条件:
所以目标函数为:
$\begin{equation} \begin{aligned} \max \limits_W \quad tr[W^TS_BW] &= \max \limits_W \quad tr[W^TS_WW\Lambda] \ &= \max \limits_W \quad tr[I_c\Lambda] \ &= \max \limits_W \quad tr[\Lambda] \ &= \max \limits_W \quad \lambda_1 + \lambda_2 + ... + \lambda_d \end{aligned} \end{equation}$
Github无法渲染上述公式,所以附图。本地markdown编辑器一般都可以打开
而我们的W只能保证
所以,两类LDA只能向一条直线投影。
这里顺便解释一下K类LDA为什么只能投影到K-1维,其实道理是一样的。K类LDA的类间散布矩阵是:
可以看出,
只有K-1个非零特征值。所以,K类LDA最高只能投影到K-1维。
咦?刚才第三个问题怎么提的来着,可不可以不用比值用差值,用差值的话会不会解决这个投影维数的限制呢?
经典LDA的目标函数是投影后的类间散布与类内散布的比值,我们很自然地就会想,为什么非得用比值呢,差值有什么不妥吗?
再试试不就完了hhh。
注意,这一节我们不用向量w,而使用矩阵W来讨论,这也就意味着我们实际上在同时讨论二类LDA和多类LDA,只要把
注意到可以通过放缩W来得到任意大的目标函数,所以我们要对W的规模进行限制,同时也进行秩限制:
也就得到了差值版的LDA:
依然拉格朗日乘子法:
求导并令其为0:
得到了:
由
可以得到:
若括号内的东西可逆,则上式可以写为:
注意到,
所以我们还是会遇到秩不足,无法求出K-1个以上的非零特征值和对应的特征向量。这样还不够,我们还需要证明的一点是,新的目标函数在零特征值对应的特征向量下依然不会增加。
目标函数(稍加变形)为:
再利用刚才我们得到的最优性条件(稍加变形):
所以目标函数为:
$\begin{equation} \begin{aligned} \max \limits_W \quad tr[W^T(S_B-\alpha S_W)W] &= \max \limits_W \quad tr[W^TW\Lambda] \ &= \max \limits_W \quad tr[I_c\Lambda] \ &= \max \limits_W \quad tr[\Lambda] \ &= \max \limits_W \quad \lambda_1 + \lambda_2 + ... + \lambda_d \end{aligned} \end{equation}$
Github无法渲染上述公式,所以附图。本地markdown编辑器一般都可以打开
结论没有变化,新的目标函数依然无法在零特征值的特征向量下增大。
综合新矩阵依然秩不足和零特征值依然对新目标函数无贡献这两点,我们可以得到一个结论:用差值代替比值也是可以求解的,但是我们不会因此受益。
既然比值和差值算出来的解性质都一样,那么为什么经典LDA采用的是比值而不是差值呢?
我个人认为,这可能是因为比值算出来的解还有别的直觉解释,而差值的可能没有,所以显得更优雅一些。什么直觉解释呢?
在二分类问题下,经典LDA是最小平方误差准则的一个特例。若让第一类的样本的输出值等于
这篇文章针对教科书上LDA的目标函数抛出了三个问题,并做了相应解答,在这个过程中一步一步深入理解LDA。
第一个问题:可不可以用均值之差而不是类间散布。
答案:可以,这样做更符合直觉,并且更容易求解。但是采用类间散布的话可以把LDA的目标函数表达成广义瑞利商,并且上下齐次更加合理。可能是因为这些原因,经典LDA最终选择了类间散布。
第二个问题:可不可以把K类LDA投影到大于K-1维的子空间中。
答案:不可以,因为类间散布矩阵的秩不足。K类LDA只能找到K-1个使目标函数增大的特征值对应的特征向量,即使选择了其他特征向量,我们也无法因此受益。
第三个问题:可不可以用类间散布与类内散布的差值,而不是比值。
答案:可以,在新准则下可以得到新的最优解,但是我们无法因此受益,K类LDA还是只能投影到K-1维空间中。差值版LDA与比值版LDA相比还缺少了一个直觉解释,可能是因为这些原因,经典LDA最终选择了比值。
所以,教科书版LDA如此经典是有原因的,它在各个方面符合了人们的直觉,本文针对它提出的三个问题都没有充分的理由驳倒它,经典果然是经典。