(二十)线性判别分析(LDA)
线性判别分析(LDA)原理
在主成分分析(PCA)原理总结中,我们对降维算法PCA做了总结。这里我们就对另外一种经典的降维方法线性判别分析(Linear Discriminant Analysis, 以下简称LDA)做一个总结。LDA在模式识别领域(比如人脸识别,舰艇识别等图形图像识别领域)中有非常广泛的应用,因此我们有必要了解下它的算法原理。
在学习LDA之前,有必要将其自然语言处理领域的LDA区别开来,在自然语言处理领域, LDA是隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA),他是一种处理文档的主题模型。我们本文只讨论线性判别分析,因此后面所有的LDA均指线性判别分析。
1. LDA的思想
LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”。什么意思呢? 我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。
可能还是有点抽象,我们先看看最简单的情况。假设我们有两类数据 分别为红色和蓝色,如下图所示,这些数据特征是二维的,我们希望将这些数据投影到一维的一条直线,让每一种类别数据的投影点尽可能的接近,而红色和蓝色数据中心之间的距离尽可能的大。
上图中国提供了两种投影方式,哪一种能更好的满足我们的标准呢?从直观上可以看出,右图要比左图的投影效果好,因为右图的黑色数据和蓝色数据各个较为集中,且类别之间的距离明显。左图则在边界处数据混杂。以上就是LDA的主要思想了,当然在实际应用中,我们的数据是多个类别的,我们的原始数据一般也是超过二维的,投影后的也一般不是直线,而是一个低维的超平面。
在我们将上面直观的内容转化为可以度量的问题之前,我们先了解些必要的数学基础知识,这些在后面讲解具体LDA原理时会用到。
2. 瑞利商(Rayleigh quotient)与广义瑞利商(generalized Rayleigh quotient)
我们首先来看看瑞利商的定义。瑞利商是指这样的函数 R(A,x) R ( A , x ) :
其中 x x 为非零向量,而
瑞利商 R(A,x) R ( A , x ) 有一个非常重要的性质,即它的最大值等于矩阵 A A 最大的特征值,而最小值等于矩阵
具体的证明这里就不给出了。当向量 x x 是标准正交基时,即满足
以上就是瑞利商的内容,现在我们再看看广义瑞利商。广义瑞利商是指这样的函数 R(A,B,x) R ( A , B , x ) :
R(A,x)=xHAxxHBx R ( A , x ) = x H A x x H B x
其中 x x 为非零向量,而
xHBx=x′H(B−1/2)HBB−1/2x′=x′HB−1/2BB−1/2x′=x′Hx′ x H B x = x ′ H ( B − 1 / 2 ) H B B − 1 / 2 x ′ = x ′ H B − 1 / 2 B B − 1 / 2 x ′ = x ′ H x ′
而分子转化为: xHAx=x′HB−1/2AB−1/2x′ x H A x = x ′ H B − 1 / 2 A B − 1 / 2 x ′
此时我们的 R(A,B,x)
R(A,B,x′)=x′HB−1/2AB−1/2x′x′Hx′ R ( A , B , x ′ ) = x ′ H B − 1 / 2 A B − 1 / 2 x ′ x ′ H x ′
利用前面的瑞利商的性质,我们可以很快的知道, R(A,B,x) R ( A , B , x ) 的最大值为矩阵 B−1/2AB−1/2 B − 1 / 2 A B − 1 / 2 的最大特征值,或者说矩阵 B−1A B − 1 A 的最大特征值,而最小值为矩阵 B−1A B − 1 A 的最小特征值。
3. 二类LDA原理
现在我们回到LDA的原理上,我们在第一节说讲到了LDA希望投影后希望同一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大,但是这只是一个感官的度量。现在我们首先从比较简单的二类LDA入手,严谨的分析LDA的原理。
假设我们的数据集 D={(x1,y1),(x2,y2),...,((xm,ym))} D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( ( x m , y m ) ) } ,其中任意样本 xi x i 为n维向量, yi∈{0,1} y i ∈ { 0 , 1 } 。我们定义 Nj(j=0,1) N j ( j = 0 , 1 ) 为第j类样本的个数, Xj(j=0,1) X j ( j = 0 , 1 ) 为第j类样本的集合,而 μj(j=0,1) μ j ( j = 0 , 1 ) 为第j类样本的均值向量,定义 Σj(j=0,1) Σ j ( j = 0 , 1 ) 为第j类样本的协方差矩阵(严格说是缺少分母部分的协方差矩阵)。
μj μ j 的表达式为:
Σj Σ j 的表达式为: Σj=∑x∈Xj(x−μj)(x−μj)T(j=0,1) Σ j = ∑ x ∈ X j ( x − μ j ) ( x − μ j ) T ( j = 0 , 1 )
由于是两类数据,因此我们只需要将数据投影到一条直线上即可。假设我们的投影直线是向量 w w ,则对任意一个样本本
我们一般定义类内散度矩阵 Sw S w 为:
Sw=Σ0+Σ1=∑x∈X0(x−μ0)(x−μ0)T+∑x∈X1(x−μ1)(x−μ1)T S w = Σ 0 + Σ 1 = ∑ x ∈ X 0 ( x − μ 0 ) ( x − μ 0 ) T + ∑ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T同时定义类间散度矩阵 Sb S b 为: Sb=(μ0−μ1)(μ0−μ1)T S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T
这样我们的优化目标重写为: argmaxwJ(w)=wTSbwwTSww a r g m a x ⏟ w J ( w ) = w T S b w w T S w w
仔细一看上式,这不就是我们的广义瑞利商嘛!这就简单了,利用我们第二节讲到的广义瑞利商的性质,我们知道我们的 J(w) J ( w ) 最大值为矩阵 S−1wSb S w − 1 S b 的最大特征值,而对应的 w w 为
注意到对于二类的时候, Sbw S b w 的方向恒为 μ0−μ1 μ 0 − μ 1 ,不妨令 Sbw=λ(μ0−μ1) S b w = λ ( μ 0 − μ 1 ) ,将其带入: (S−1wSb)w=λw ( S w − 1 S b ) w = λ w ,可以得到 w=S−1w(μ0−μ1) w = S w − 1 ( μ 0 − μ 1 ) , 也就是说我们只要求出原始二类样本的均值和方差就可以确定最佳的投影方向 w w 了。
4. 多类LDA原理
有了二类LDA的基础,我们再来看看多类别LDA的原理。
假设我们的数据集
由于我们是多类向低维投影,则此时投影到的低维空间就不是一条直线,而是一个超平面了。假设我们投影到的低维空间的维度为d,对应的基向量为 (w1,w2,...wd) ( w 1 , w 2 , . . . w d ) ,基向量组成的矩阵为 W W , 它是一个
此时我们的优化目标应该可以变成为:
其中 Sb=∑j=1kNj(μj−μ)(μj−μ)T S b = ∑ j = 1 k N j ( μ j − μ ) ( μ j − μ ) T , μ μ 为所有样本均值向量。 Sw=∑j=1kSwj=∑j=1k∑x∈Xj(x−μj)(x−μj)T S w = ∑ j = 1 k S w j = ∑ j = 1 k ∑ x ∈ X j ( x − μ j ) ( x − μ j ) T
但是有一个问题,就是 WTSbW W T S b W 和 WTSwW W T S w W 都是矩阵,不是标量,无法作为一个标量函数来优化!也就是说,我们无法直接用二类LDA的优化方法,怎么办呢?一般来说,我们可以用其他的一些替代优化目标来实现。
常见的一个LDA多类优化目标函数定义为: argmaxWJ(W)=∏diagWTSbW∏diagWTSwW a r g m a x ⏟ W J ( W ) = ∏ d i a g W T S b W ∏ d i a g W T S w W
其中 ∏diagA ∏ d i a g A 为 A A 的主对角线元素的乘积,
J(W) J ( W ) 的优化过程可以转化为:
J(W)=∏i=1dwTiSbwi∏i=1dwTiSwwi=∏i=1dwTiSbwiwTiSwwi J ( W ) = ∏ i = 1 d w i T S b w i ∏ i = 1 d w i T S w w i = ∏ i = 1 d w i T S b w i w i T S w w i
仔细观察上式最右边,这不就是广义瑞利商嘛!最大值是矩阵 S−1wSb S w − 1 S b 的最大特征值,最大的d个值的乘积就是矩阵 S−1wSb S w − 1 S b 的最大的d个特征值的乘积,此时对应的矩阵 W W 为这最大的d个特征值对应的特征向量张成的矩阵。
由于
5. LDA算法流程
在第三节和第四节我们讲述了LDA的原理,现在我们对LDA降维的流程做一个总结。
输入:数据集 D={(x1,y1),(x2,y2),...,((xm,ym))} D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( ( x m , y m ) ) } ,其中任意样本 xi x i 为n维向量, yi∈{C1,C2,...,Ck} y i ∈ { C 1 , C 2 , . . . , C k } ,降维到的维度d。输出:降维后的样本集 D′ D ′
算法流程:
- 计算类内散度矩阵 Sw S w
- 计算类间散度矩阵 Sb S b
- 计算矩阵 S−1wSb S w − 1 S b
- 计算 S−1wSb S w − 1 S b 的最大的d个特征值和对应的d个特征向量 (w1,w2,...wd) ( w 1 , w 2 , . . . w d ) ,得到投影矩阵 W W
- 对样本集中的每一个样本特征
" role="presentation">,转化为新的样本 zi=WTxi z i = W T x ix i - 得到输出样本集 D′={(z1,y1),(z2,y2),...,((zm,ym))} D ′ = { ( z 1 , y 1 ) , ( z 2 , y 2 ) , . . . , ( ( z m , y m ) ) }
以上就是使用LDA进行降维的算法流程。实际上LDA除了可以用于降维以外,还可以用于分类。一个常见的LDA分类基本思想是假设各个类别的样本数据符合高斯分布,这样利用LDA进行投影后,可以利用极大似然估计计算各个类别投影数据的均值和方差,进而得到该类别高斯分布的概率密度函数。当一个新的样本到来后,我们可以将它投影,然后将投影后的样本特征分别带入各个类别的高斯分布概率密度函数,计算它属于这个类别的概率,最大的概率对应的类别即为预测类别。
由于LDA应用于分类现在似乎也不是那么流行,至少我们公司里没有用过,这里我就不多讲了。
6. LDA vs PCA
LDA用于降维,和PCA有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。
首先我们看看相同点:
- 两者均可以对数据进行降维。
- 两者在降维时均使用了矩阵特征分解的思想。
- 两者都假设数据符合高斯分布。
我们接着看看不同点:
- LDA是有监督的降维方法,而PCA是无监督的降维方法
- LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。
- LDA除了可以用于降维,还可以用于分类。
- LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。
这点可以从下图形象的看出,在某些数据分布下LDA比PCA降维较优。
当然,某些某些数据分布下PCA比LDA降维较优,如下图所示:
7. LDA算法小结
LDA算法既可以用来降维,又可以用来分类,但是目前来说,主要还是用于降维。在我们进行图像识别图像识别相关的数据分析时,LDA是一个有力的工具。下面总结下LDA算法的优缺点。
LDA算法的主要优点有:
- 在降维过程中可以使用类别的先验知识经验,而像PCA这样的无监督学习则无法使用类别先验知识。
- LDA在样本分类信息依赖均值而不是方差的时候,比PCA之类的算法较优。
LDA算法的主要缺点有:
- LDA不适合对非高斯分布样本进行降维,PCA也有这个问题。
- LDA降维最多降到类别数k-1的维数,如果我们降维的维度大于k-1,则不能使用LDA。当然目前有一些LDA的进化版算法可以绕过这个问题。
- LDA在样本分类信息依赖方差而不是均值的时候,降维效果不好。
- LDA可能过度拟合数据。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
