【机器学习】六、线性判别分析原理

【机器学习】六、线性判别分析原理_第1张图片
一、LDA简介

  1. 前言
    线性判别分析(Linear Discriminant Analysis),简称LDA(不同于文档主题分类模型里面的LDA)。是一种可用于数据分类和降维操作的方法(主要用于数据降维),不同于前面讲的无监督降维PCA方法,LDA是有监督的降维方法。码字不易,喜欢请点赞!!!
    这里建议先看一下PCA的降维原理,那篇文章我分享了很多背后的数学知识,链接:https://blog.csdn.net/Asher117/article/details/95476493
    【机器学习】六、线性判别分析原理_第2张图片
  2. 思想
    在无监督PCA中,我们讲到,PCA的思想是使降维之后的数据最大的保持数据特征,而不会去考虑数据类别,这将会导致有的分类数据可能降维之后无法区分类别了;而LDA是一种有监督的降维方法,它的思想是降维之后同类数据类方差尽可能小,而不用类数据方差尽可能大
    【机器学习】六、线性判别分析原理_第3张图片

二、LDA数学原理
给定数据集 ( x , y ) {(x,y)} (x,y)
降维映射矩阵为 w w w
i i i类的集合为 X i X_i Xi
i i i类的均值为 μ i \mu _i μi
i i i类的方差为 Σ i = Σ ( x i − μ i ) 2 \Sigma _i=\Sigma(x_i-\mu _i)^2 Σi=Σ(xiμi)2
则降维之后第 i i i类的均值为 w T μ i w^T\mu _i wTμi
则降维之后第 i i i类的方差为:
S i = Σ ( w T x i − w T μ i ) 2 = Σ ( w T ) 2 ( x i − μ i ) 2 = w T Σ ( x i − μ i ) 2 w = w T Σ i w S _i=\Sigma(w^Tx_i-w^T\mu _i)^2=\Sigma (w^T)^2(x_i-\mu _i)^2=w^T\Sigma (x_i-\mu _i)^2w=w^T\Sigma _iw Si=Σ(wTxiwTμi)2=Σ(wT)2(xiμi)2=wTΣ(xiμi)2w=wTΣiw

  • 投影之后类之间的距离越大越好,可以看坐不同类的均值相差越大越好
    即: J ( w ) 1 = ∣ w T μ 1 − w T μ 2 ∣ 2 = ( w T ∣ μ 1 − μ 2 ∣ ) 2 J(w)_1 = |w^T\mu _1 - w^T\mu _2|^2= (w^T |\mu _1 - \mu _2|)^2 J(w)1=wTμ1wTμ22=(wTμ1μ2)2 的值越大越好。
  • 同时需要同一类中,数据越聚集越好,由此引入散列值
    散列值:样本越密集,值越小;样本越分散,值越大;
    即: J ( w ) 2 = S 1 + S 2 J(w)_2 =S _1 +S _2 J(w)2=S1+S2越小越好。

综合以上两点,则目标函数为下列函数的最大化:
【机器学习】六、线性判别分析原理_第4张图片
又有类内散度矩阵为:
S w = Σ 1 + Σ 2 = Σ x ∈ X 1 ( x − μ 1 ) 2 + Σ x ∈ X 2 ( x − μ 2 ) 2 = Σ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T + Σ x ∈ X 2 ( x − μ 2 ) ( x − μ 2 ) T S_w=\Sigma _1 + \Sigma _2=\Sigma_{x\in X_1}(x-\mu _1)^2 +\Sigma_{x\in X_2}(x-\mu _2)^2=\Sigma_{x\in X_1}(x-\mu _1)(x-\mu _1)^T +\Sigma_{x\in X_2}(x-\mu _2)(x-\mu _2)^T Sw=Σ1+Σ2=ΣxX1(xμ1)2+ΣxX2(xμ2)2=ΣxX1(xμ1)(xμ1)T+ΣxX2(xμ2)(xμ2)T

类间散度矩阵为:
S b = ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T S_b=(\mu _1-\mu _2)(\mu _1-\mu _2)^T Sb=(μ1μ2)(μ1μ2)T

则目标函数等价于:

J ( w ) = w T S b w w T S w w J(w)=\frac{w^TS_bw}{w^TS_ww} J(w)=wTSwwwTSbw ——>(最大化广义瑞利商)

由于 w w w的缩放不影响目标函数, J ( w ) J(w) J(w)只跟方向有关,因此令 w T S w w = 1 w^TS_ww=1 wTSww=1,则目标函数等价于:
【机器学习】六、线性判别分析原理_第5张图片
采用拉格朗日乘子法求解,将得到结果:
S b w = λ S w w S_bw=\lambda S_ww Sbw=λSww

两边乘以 S w − 1 S_w^{-1} Sw1,从而得到:
S w − 1 S b w = λ w S_w^{-1}S_bw=\lambda w Sw1Sbw=λw

从而得到结果 λ \lambda λ 为矩阵 S w − 1 S b S_w^{-1}S_b Sw1Sb 的特征值,同时 w w w 为矩阵 S w − 1 S b S_w^{-1}S_b Sw1Sb 的特征值向量。

三、LDA与PCA对比

  1. 相同点
  • 都可以对数据降维
  • 降维的主要思想都是矩阵分解
  • 都假设数据服从高斯分布
  1. 不同点
  • LDA是有监督降维,而PCA是无监督降维
  • LDA只能降到K-1维(K为类别数),而PCA可以降维到任意维度
  • LDA可以用于降维和分类,而PCA只能用于降维
  • LDA投影选择分类效果最好的方向,而PCA选择投影之后数据特征最大保留方向
    【机器学习】六、线性判别分析原理_第6张图片

四、LDA优缺点

  1. 优点
  • 在降维过程中可以使用类别的先验知识经验,而像PCA这样的无监督学习则无法使用类别先验知识。
  • LDA在样本分类信息依赖均值而不是方差的时候,比PCA之类的算法较优。
  1. 缺点
  • LDA不适合对非高斯分布样本进行降维,PCA也有这个问题。
  • LDA降维最多降到类别数k-1的维数,如果我们降维的维度大于k-1,则不能使用LDA。当然目前有一些LDA的进化版算法可以绕过这个问题。
  • LDA在样本分类信息依赖方差而不是均值的时候,降维效果不好。
  • LDA可能过度拟合数据。

参考文献:
http://sebastianraschka.com/Articles/2014_python_lda.html
https://zhuanlan.zhihu.com/p/57156916
https://blog.csdn.net/ruthywei/article/details/83045288

你可能感兴趣的:(机器学习)