在主成分分析(PCA)原理总结中,咱们对降维算法PCA作了总结。这里咱们就对另一种经典的降维方法线性判别分析(Linear Discriminant Analysis, 如下简称LDA)作一个总结。LDA在模式识别领域(好比人脸识别,舰艇识别等图形图像识别领域)中有很是普遍的应用,所以咱们有必要了解下它的算法原理。html
在学习LDA以前,有必要将其天然语言处理领域的LDA区别开来,在天然语言处理领域, LDA是隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA),他是一种处理文档的主题模型。咱们本文只讨论线性判别分析,所以后面全部的LDA均指线性判别分析。算法
LDA是一种监督学习的降维技术,也就是说它的数据集的每一个样本是有类别输出的。这点和PCA不一样。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想能够用一句话归纳,就是“投影后类内方差最小,类间方差最大”。什么意思呢? 咱们要将数据在低维度上进行投影,投影后但愿每一种类别数据的投影点尽量的接近,而不一样类别的数据的类别中心之间的距离尽量的大。微信
可能仍是有点抽象,咱们先看看最简单的状况。假设咱们有两类数据 分别为红色和蓝色,以下图所示,这些数据特征是二维的,咱们但愿将这些数据投影到一维的一条直线,让每一种类别数据的投影点尽量的接近,而红色和蓝色数据中心之间的距离尽量的大。函数
上图中国提供了两种投影方式,哪种能更好的知足咱们的标准呢?从直观上能够看出,右图要比左图的投影效果好,由于右图的黑色数据和蓝色数据各个较为集中,且类别之间的距离明显。左图则在边界处数据混杂。以上就是LDA的主要思想了,固然在实际应用中,咱们的数据是多个类别的,咱们的原始数据通常也是超过二维的,投影后的也通常不是直线,而是一个低维的超平面。工具
在咱们将上面直观的内容转化为能够度量的问题以前,咱们先了解些必要的数学基础知识,这些在后面讲解具体LDA原理时会用到。post
咱们首先来看看瑞利商的定义。瑞利商是指这样的函数\(R(A,x)\):
\[ R(A,x) = \frac{x^HAx}{x^Hx} \]性能
其中\(x\)为非零向量,而\(A\)为\(n \times n\)的Hermitan矩阵。所谓的Hermitan矩阵就是知足共轭转置矩阵和本身相等的矩阵,即\(A^H=A\)。若是咱们的矩阵A是实矩阵,则知足\(A^T=A\)的矩阵即为Hermitan矩阵。学习
瑞利商\(R(A,x)\)有一个很是重要的性质,即它的最大值等于矩阵\(A\)最大的特征值,而最小值等于矩阵\(A\)的最小的特征值,也就是知足
\[ \lambda_{min} \leq \frac{x^HAx}{x^Hx} \leq \lambda_{max} \]优化
具体的证实这里就不给出了。当向量\(x\)是标准正交基时,即知足\(x^Hx=1\)时,瑞利商退化为:\(R(A,x) = x^HAx\),这个形式在谱聚类和PCA中都有出现。spa
以上就是瑞利商的内容,如今咱们再看看广义瑞利商。广义瑞利商是指这样的函数\(R(A,B,x)\):
\[ R(A,x) = \frac{x^HAx}{x^HBx} \]
其中\(x\)为非零向量,而\(A,B\)为\(n \times n\)的Hermitan矩阵。\(B\)为正定矩阵。它的最大值和最小值是什么呢?其实咱们只要经过将其经过标准化就能够转化为瑞利商的格式。咱们令\(x=B^{-1/2}x'\),则分母转化为:
\[ x^HBx = x'^H(B^{-1/2})^HBB^{-1/2}x' = x'^HB^{-1/2}BB^{-1/2}x' = x'^Hx' \]
而分子转化为:
\[ x^HAx = x'^HB^{-1/2}AB^{-1/2}x' \]
此时咱们的\(R(A,B,x)\)转化为\(R(A,B,x')\):
\[ R(A,B,x') = \frac{x'^HB^{-1/2}AB^{-1/2}x'}{x'^Hx'} \]
利用前面的瑞利商的性质,咱们能够很快的知道,\(R(A,B,x')\)的最大值为矩阵\(B^{-1/2}AB^{-1/2}\)的最大特征值,或者说矩阵\(B^{-1}A\)的最大特征值,而最小值为矩阵\(B^{-1}A\)的最小特征值。若是你看过我写的谱聚类(spectral clustering)原理总结第6.2节的话,就会发现这里使用了同样的技巧,即对矩阵进行标准化。
如今咱们回到LDA的原理上,咱们在第一节说讲到了LDA但愿投影后但愿同一种类别数据的投影点尽量的接近,而不一样类别的数据的类别中心之间的距离尽量的大,可是这只是一个感官的度量。如今咱们首先从比较简单的二类LDA入手,严谨的分析LDA的原理。
假设咱们的数据集\(D=\{(x_1,y_1), (x_2,y_2), ...,((x_m,y_m))\}\),其中任意样本\(x_i\)为n维向量,\(y_i \in \{0,1\}\)。咱们定义\(N_j(j=0,1)\)为第j类样本的个数,\(X_j(j=0,1)\)为第j类样本的集合,而\(\mu_j(j=0,1)\)为第j类样本的均值向量,定义\(\Sigma_j(j=0,1)\)为第j类样本的协方差矩阵(严格说是缺乏分母部分的协方差矩阵)。
\(\mu_j\)的表达式为:
\[ \mu_j = \frac{1}{N_j}\sum\limits_{x \in X_j}x\;\;(j=0,1) \]
\(\Sigma_j\)的表达式为:
\[ \Sigma_j = \sum\limits_{x \in X_j}(x-\mu_j)(x-\mu_j)^T\;\;(j=0,1) \]
因为是两类数据,所以咱们只须要将数据投影到一条直线上便可。假设咱们的投影直线是向量\(w\),则对任意一个样本本\(x_i\),它在直线\(w\)的投影为\(w^Tx_i\),对于咱们的两个类别的中心点\(\mu_0,\mu_1\),在在直线\(w\)的投影为\(w^T\mu_0\)和\(w^T\mu_1\)。因为LDA须要让不一样类别的数据的类别中心之间的距离尽量的大,也就是咱们要最大化\(||w^T\mu_0-w^T\mu_1||_2^2\),同时咱们但愿同一种类别数据的投影点尽量的接近,也就是要同类样本投影点的协方差\(w^T\Sigma_0w\)和\(w^T\Sigma_1w\)尽量的小,即最小化\(w^T\Sigma_0w+w^T\Sigma_1w\)。综上所述,咱们的优化目标为:
\[ \underbrace{arg\;max}_w\;\;J(w) = \frac{||w^T\mu_0-w^T\mu_1||_2^2}{w^T\Sigma_0w+w^T\Sigma_1w} = \frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw}{w^T(\Sigma_0+\Sigma_1)w} \]
咱们通常定义类内散度矩阵\(S_w\)为:
\[ S_w = \Sigma_0 + \Sigma_1 = \sum\limits_{x \in X_0}(x-\mu_0)(x-\mu_0)^T + \sum\limits_{x \in X_1}(x-\mu_1)(x-\mu_1)^T \]
同时定义类间散度矩阵\(S_b\)为:
\[ S_b = (\mu_0-\mu_1)(\mu_0-\mu_1)^T \]
这样咱们的优化目标重写为:
\[ \underbrace{arg\;max}_w\;\;J(w) = \frac{w^TS_bw}{w^TS_ww} \]
仔细一看上式,这不就是咱们的广义瑞利商嘛!这就简单了,利用咱们第二节讲到的广义瑞利商的性质,咱们知道咱们的\(J(w')\)最大值为矩阵\(S^{−\frac{1}{2}}_wS_bS^{−\frac{1}{2}}_w\)的最大特征值,而对应的\(w'\)为\(S^{−\frac{1}{2}}_wS_bS^{−\frac{1}{2}}_w\)的最大特征值对应的特征向量! 而\(S_w^{-1}S_b\)的特征值和\(S^{−\frac{1}{2}}_wS_bS^{−\frac{1}{2}}_w\)的特征值相同,\(S_w^{-1}S_b\)的特征向量\(w\)和\(S^{−\frac{1}{2}}_wS_bS^{−\frac{1}{2}}_w\)的特征向量\(w'\)知足\(w = S^{−\frac{1}{2}}_ww'\)的关系!
注意到对于二类的时候,\(S_bw\)的方向恒为\(\mu_0-\mu_1\),不妨令\(S_bw=\lambda(\mu_0-\mu_1)\),将其带入:\((S_w^{-1}S_b)w=\lambda w\),能够获得\(w=S_w^{-1}(\mu_0-\mu_1)\), 也就是说咱们只要求出原始二类样本的均值和方差就能够肯定最佳的投影方向\(w\)了。
有了二类LDA的基础,咱们再来看看多类别LDA的原理。
假设咱们的数据集\(D=\{(x_1,y_1), (x_2,y_2), ...,((x_m,y_m))\}\),其中任意样本\(x_i\)为n维向量,\(y_i \in \{C_1,C_2,...,C_k\}\)。咱们定义\(N_j(j=1,2...k)\)为第j类样本的个数,\(X_j(j=1,2...k)\)为第j类样本的集合,而\(\mu_j(j=1,2...k)\)为第j类样本的均值向量,定义\(\Sigma_j(j=1,2...k)\)为第j类样本的协方差矩阵。在二类LDA里面定义的公式能够很容易的类推到多类LDA。
因为咱们是多类向低维投影,则此时投影到的低维空间就不是一条直线,而是一个超平面了。假设咱们投影到的低维空间的维度为d,对应的基向量为\((w_1,w_2,...w_d)\),基向量组成的矩阵为\(W\), 它是一个\(n \times d\)的矩阵。
此时咱们的优化目标应该能够变成为:
\[ \frac{W^TS_bW}{W^TS_wW} \]
其中\(S_b = \sum\limits_{j=1}^{k}N_j(\mu_j-\mu)(\mu_j-\mu)^T\),\(\mu\)为全部样本均值向量。\(S_w = \sum\limits_{j=1}^{k}S_{wj} = \sum\limits_{j=1}^{k}\sum\limits_{x \in X_j}(x-\mu_j)(x-\mu_j)^T\)
可是有一个问题,就是\(W^TS_bW\)和\(W^TS_wW\)都是矩阵,不是标量,没法做为一个标量函数来优化!也就是说,咱们没法直接用二类LDA的优化方法,怎么办呢?通常来讲,咱们能够用其余的一些替代优化目标来实现。
常见的一个LDA多类优化目标函数定义为:
\[ \underbrace{arg\;max}_W\;\;J(W) = \frac{\prod\limits_{diag}W^TS_bW}{\prod\limits_{diag}W^TS_wW} \]
其中\(\prod\limits_{diag}A\)为\(A\)的主对角线元素的乘积,\(W\)为\(n \times d\)的矩阵。
\(J(W)\)的优化过程能够转化为:
\[ J(W) = \frac{\prod\limits_{i=1}^dw_i^TS_bw_i}{\prod\limits_{i=1}^dw_i^TS_ww_i} = \prod\limits_{i=1}^d\frac{w_i^TS_bw_i}{w_i^TS_ww_i} \]
仔细观察上式最右边,这不就是广义瑞利商嘛!最大值是矩阵\(S^{−1}_wS_b\)的最大特征值,最大的d个值的乘积就是矩阵\(S^{−1}_wS_b\)的最大的d个特征值的乘积,此时对应的矩阵\(W\)为这最大的d个特征值对应的特征向量张成的矩阵。
因为\(W\)是一个利用了样本的类别获得的投影矩阵,所以它的降维到的维度d最大值为k-1。为何最大维度不是类别数k呢?由于\(S_b\)中每一个\(\mu_j-\mu\)的秩为1,所以协方差矩阵相加后最大的秩为k(矩阵的秩小于等于各个相加矩阵的秩的和),可是因为若是咱们知道前k-1个\(\mu_j\)后,最后一个\(\mu_k\)能够由前k-1个\(\mu_j\)线性表示,所以\(S_b\)的秩最大为k-1,即特征向量最多有k-1个。
在第三节和第四节咱们讲述了LDA的原理,如今咱们对LDA降维的流程作一个总结。
输入:数据集\(D=\{(x_1,y_1), (x_2,y_2), ...,((x_m,y_m))\}\),其中任意样本\(x_i\)为n维向量,\(y_i \in \{C_1,C_2,...,C_k\}\),降维到的维度d。
输出:降维后的样本集\(D′\)
1) 计算类内散度矩阵\(S_w\)
2) 计算类间散度矩阵\(S_b\)
3) 计算矩阵\(S_w^{-1}S_b\)
4)计算\(S_w^{-1}S_b\)的最大的d个特征值和对应的d个特征向量\((w_1,w_2,...w_d)\),获得投影矩阵W\(W\)
5) 对样本集中的每个样本特征\(x_i\),转化为新的样本\(z_i=W^Tx_i\)
6) 获得输出样本集\(D'=\{(z_1,y_1), (z_2,y_2), ...,((z_m,y_m))\}\)
以上就是使用LDA进行降维的算法流程。实际上LDA除了能够用于降维之外,还能够用于分类。一个常见的LDA分类基本思想是假设各个类别的样本数据符合高斯分布,这样利用LDA进行投影后,能够利用极大似然估计计算各个类别投影数据的均值和方差,进而获得该类别高斯分布的几率密度函数。当一个新的样本到来后,咱们能够将它投影,而后将投影后的样本特征分别带入各个类别的高斯分布几率密度函数,计算它属于这个类别的几率,最大的几率对应的类别即为预测类别。
因为LDA应用于分类如今彷佛也不是那么流行,至少咱们公司里没有用过,这里我就很少讲了。
LDA用于降维,和PCA有不少相同,也有不少不一样的地方,所以值得好好的比较一下二者的降维异同点。
首先咱们看看相同点:
1)二者都可以对数据进行降维。
2)二者在降维时均使用了矩阵特征分解的思想。
3)二者都假设数据符合高斯分布。
咱们接着看看不一样点:
1)LDA是有监督的降维方法,而PCA是无监督的降维方法
2)LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。
3)LDA除了能够用于降维,还能够用于分类。
4)LDA选择分类性能最好的投影方向,而PCA选择样本点投影具备最大方差的方向。
这点能够从下图形象的看出,在某些数据分布下LDA比PCA降维较优。
固然,某些某些数据分布下PCA比LDA降维较优,以下图所示:
LDA算法既能够用来降维,又能够用来分类,可是目前来讲,主要仍是用于降维。在咱们进行图像识别图像识别相关的数据分析时,LDA是一个有力的工具。下面总结下LDA算法的优缺点。
LDA算法的主要优势有:
1)在降维过程当中可使用类别的先验知识经验,而像PCA这样的无监督学习则没法使用类别先验知识。
2)LDA在样本分类信息依赖均值而不是方差的时候,比PCA之类的算法较优。
LDA算法的主要缺点有:
1)LDA不适合对非高斯分布样本进行降维,PCA也有这个问题。
2)LDA降维最多降到类别数k-1的维数,若是咱们降维的维度大于k-1,则不能使用LDA。固然目前有一些LDA的进化版算法能够绕过这个问题。
3)LDA在样本分类信息依赖方差而不是均值的时候,降维效果很差。
4)LDA可能过分拟合数据。
(欢迎转载,转载请注明出处。欢迎沟通交流: 微信:nickchen121)