线性差别分析LDA

LDA原理

LDA思想

这里的LDA是指Linear Discriminant Analysis,简称LDA,全称线性判别分析。要与自然语言处理领域的LDA(Latent Dirichlet Allocation)隐含狄利克雷分布区分开来。

LDA是一种监督学习降维技术,它的数据集的每个样本是有类别输出的。而PCA是不考虑样本类别输出的无监督降维技术。

核心思想是:投影后类内方差最小,类间方差最大。理解为:数据在低维度上进行投影,投影后希望每一类别数据的投影点尽可能接近,而不同类别数据的类别中心之间距离尽可能远。

瑞利商(Rayleigh quotient)与广义瑞利商(genralized Rayleigh quotient)

瑞利商的定义(R(A,x))如下

[R(A,X)=frac{x^HAx}{x^Hx} ]

其中x为非零向量,而A为(n imes n)的Hermitan矩阵,所谓Hermitan矩阵就是满足共轭转置和自相等的矩阵,即(A^H=A)。如果A是实数阵,则满足(A^T=A)的矩阵即为Hermitan矩阵。

瑞利商(R(A,x))有一个非常重要的性质,即它的最大值等于矩阵A最大的特征值,而最小值等于矩阵A的最小特征值,也就是满足如下:

[lambda_{min}lefrac{x^HAx}{x^Hx}lelambda_{max} ]

当x是正标准正交基时,即满足(x^Hx=1)时瑞利商退化为(R(A,x)=x^HAx)

广义瑞利商定义如下:

[R(A,x)=frac{x^HAx}{x^HBx} ]

其中(x)为非零向量,而A,B为(n imes n)的Hermitan矩阵,B为正定矩阵。它的最大值和最小值是什么?我们令(x=B^{-frac{1}{2}}x'),则上式分母转化为

[x^HBx=x^{'H}(B^{-frac{1}{2}})^HBB^{-frac{1}{2}}x'=x^{'H}B^{-frac{1}{2}}BB^{-frac{1}{2}}x'=x^{'H}x^{'} ]

而其分子转化为

[x^HAx=x^{'H}B^{-frac{1}{2}}AB^{-frac{1}{2}}x^{'} ]

此时我们的(R(A,B,x))转化为(R(A,B,x'))

[R(A,B,x')=frac{x^{'H}B^{-frac{1}{2}}AB^{-frac{1}{2}}x^{'}}{x^{'H}x^{'}} ]

利用瑞利商的性质可知,(R(A,B,x'))的最大值为矩阵(B^{-frac{1}{2}}AB^{-frac{1}{2}})的最大特征值或者说是矩阵(B^{-1}A)的最大特征值,而最小值为矩阵(B^{-1}A)的最小特征值。

二类LDA

LDA的目标是:中心点尽可能大,即每类均值的距离尽可能大;类间距离尽可能小,即协方差尽可能小。

最后推导为瑞利商和广义瑞利商。

假设数据集(D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)}),其中任意样本(x_i)为n维重见天日,(y_iin {{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}sumlimits_{xin X_j}(j=0,1) ]

(Sigma_j)表示为

[Sigma_j=sumlimits_{xin X_j}(x-mu_j)(x-mu_j)^T(j=0,1) ]

由于是两类数据,我们将其投影到一条直线上即可。假设我们的投影直线是向量(w_j),则对任意一个样本(x_i),它在直线(w)的投影为(w^Tx_i),对于我们两个类别中心点(mu_0,mu_1),在直线(w)的投影为(w^Tmu_0)(w^Tmu_1)由于LDA需要让不同类别的数据中心之间的距离尽可能大,也就是我们需要最大化(lVert w^Tmu_0-w^Tmu_1 Vert_2^2),同时,我们希望同一种类数据的投影点尽可能的接近,也就是要同类样本投影点的协方差(w^TSigma_0w)(w^TSigma_1w)尽可能的小,即最小化(w^TSigma_0w+w^TSigma_1w)综上所述,我们的优化目标表示为:

[underbrace{argmax}_w J(w)=frac{lVert w^Tmu_0-w^Tmu_1 Vert_2^2}{w^TSigma_0w+w^TSigma_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=sumlimits_{xin X_0}(x-mu_0)(x-mu_0)^T+sumlimits_{xin X_1}(x-mu_1)(x-mu_1)^T ]

定义类间散度矩阵(S_b)如下

[S_b=(mu_0-mu_1)(mu_0-mu_1)^T ]

这样,重写优化目标如下

[underbrace{argmax}_w J(w)=frac{w^TS_bw}{w^TS_ww} ]

这就是广义瑞利商!由广义瑞利商的性质可知,我们的(J(w'))最大值为矩阵(S_w^{-frac{1}{2}}S_bS_w^{-frac{1}{2}})的最大特征值,而对应的(w')(S_w^{-frac{1}{2}}S_bS_w^{-frac{1}{2}})的最大特征值对应的向量!而(S_w^{-1}S_b)的特征值和(S_w^{-frac{1}{2}}S_bS_w^{-frac{1}{2}})的特征值相同,(S_w^{-1}S_b)的特征向量(w)(S_w^{-frac{1}{2}}S_bS_w^{-frac{1}{2}})的特征向量(w')满足(w=s_w^{-frac{1}{2}}w')的关系。

注意到,二分类时,(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))也就是说只要求出原始二类样本的均值和方差,就可以确定最佳投影方向了

多类LDA

同理(略)

LDA算法流程

输入:数据集(D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)}),其中任意样本(x_i)为n维向量,(y_iin{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个特征向量((w_1,w_2,...,w_d)),得到投影矩阵W
  5. 对样本集中的每一个样本特征x,转化为新的样本(z_i=W^Tx_i)
  6. 得到输出样本集(D'={(z_1,y_1),(z_2,y_2),...,(z_m,y_m)})

以上就是LDA进行降维的算法流程,实际上LDA除了可以用于降维外,还可以用于分类。一个常见的LDA分类基本思想是假设各个类别的样本数据符合高斯分布,这样利用LDA进行投影后,可以利用极大似然估计计算各个类别投影数据的均值和方差,进而得到该类别高斯分布的概率密度函数。当一个新的样本来后,我们可以将它投影,然后将投影后的样本特征分别带入各个类别的高斯分布概率函数,计算它属于这个类别的概率,最大概率对应的类别即为预测类别。

LDA VS PCA

LDA与PCA都可以用于降维

相同点:

  1. 均可降维
  2. 均使用了矩阵分解思想
  3. 都假设数据符合高斯分布

不同点:

  1. LDA是有监督的降维,PCA是无监督的降维
  2. LDA降维最多降到类别数k-1维,而PCA无此限制
  3. LDA除了降维,还可以用于分类
  4. LDA选择分类性能最好的投影方向,而PCA选择样本投影具有最大方差的方向

LDA算法总结

LDA优点:

  1. 降维过程可以使用先验知识,而PCA这种无监督学习无法使用先验知识
  2. LDA依赖均值而不是方差的时候,比PCA算法较优

LDA缺点:

  1. LDA不适合对非高斯分布进行降维
  2. 最多降维到类别数k-1维
  3. LDA依赖方差而不是均值的时候,降维效果不好
  4. LDA可能过拟合

sklearn中LDA使用

类库

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

参数

  1. solover:求LDA超平面特征矩阵使用的方法
  2. shrinkage:正则化参数
  3. priors:类别权重
  4. n_componets:降到的维数

实例

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

lda = LinearDiscriminantAnalysis(n_components=2)
lda.fit(x)

如果数据是有标签是,优先使用LDA。

PCA有助于去噪声。

原文地址:https://www.cnblogs.com/guesswhy/p/12882838.html