码迷,mamicode.com
首页 > 其他好文 > 详细

线性差别分析LDA

时间:2020-05-13 17:17:16      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:领域   集合   目标   pre   shrink   com   ati   之间   直线   

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\times n\)的Hermitan矩阵,所谓Hermitan矩阵就是满足共轭转置和自相等的矩阵,即\(A^H=A\)。如果A是实数阵,则满足\(A^T=A\)的矩阵即为Hermitan矩阵。

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

\[\lambda_{min}\le\frac{x^HAx}{x^Hx}\le\lambda_{max} \]

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

广义瑞利商定义如下:

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

其中\(x\)为非零向量,而A,B为\(n\times 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_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}\sum\limits_{x\in X_j}(j=0,1) \]

\(\Sigma_j\)表示为

\[\Sigma_j=\sum\limits_{x\in 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^T\mu_0\)\(w^T\mu_1\)由于LDA需要让不同类别的数据中心之间的距离尽可能大,也就是我们需要最大化\(\lVert w^T\mu_0-w^T\mu_1\rVert_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{\lVert w^T\mu_0-w^T\mu_1\rVert_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_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_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个特征向量\((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有助于去噪声。

线性差别分析LDA

标签:领域   集合   目标   pre   shrink   com   ati   之间   直线   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!