机器学习-有监督学习-降维:LDA算法(Linear Discriminant Analysis, 线性判别分析)

LDA 是一种有监督学习算法,同时经常被用来对数据进行降维。

相比于PCA,LDA可以作为一种有监督的降维算法。在PCA中,算法没有考虑数据的标签(类别),只是把原数据映射到一些方差比较大的方向上而已。

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

在这里插入图片描述

一、LDA数学推导

现在我们首先从比较简单的二类LDA入手,严谨的分析LDA的原理:

  • 假设我们的数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( ( x m , y m ) ) } D=\{(x_1,y_1), (x_2,y_2), ...,((x_m,y_m))\} D={ (x1,y1),(x2,y2),...,((xm,ym))},其中任意样本 x i x_i xi为n维向量, y i ∈ { 0 , 1 } y_i \in \{0,1\} yi{ 0,1}。我们定义 N j ( j = 0 , 1 ) N_j(j=0,1) Nj(j=0,1)为第j类样本的个数, X j ( j = 0 , 1 ) X_j(j=0,1) Xj(j=0,1)为第j类样本的集合,而 μ j ( j = 0 , 1 ) \mu_j(j=0,1) μj(j=0,1)为第j类样本的均值向量,定义 Σ j ( j = 0 , 1 ) \Sigma_j(j=0,1) Σj(j=0,1)为第j类样本的协方差矩阵(严格说是缺少分母部分的协方差矩阵)。
  • μ j \mu_j μj的表达式为: μ j = 1 N j ∑ x ∈ X j x      ( j = 0 , 1 ) \mu_j = \frac{1}{N_j}\sum\limits_{x \in X_j}x\;\;(j=0,1) μj=Nj1xXjx(j=0,1)
  • Σ j \Sigma_j Σj的表达式为: Σ j = ∑ x ∈ X j ( x − μ j ) ( x − μ j ) T      ( j = 0 , 1 ) \Sigma_j = \sum\limits_{x \in X_j}(x-\mu_j)(x-\mu_j)^T\;\;(j=0,1) Σj=xXj(xμj)(xμj)T(j=0,1)
  • 由于是两类数据,因此我们只需要将数据投影到一条直线上即可。假设我们的投影直线是向量 w w w,则对任意一个样本本 x i x_i xi,它在直线 w w w的投影为 w T x i w^Tx_i wTxi,对于我们的两个类别的中心点 μ 0 , μ 1 \mu_0,\mu_1 μ0,μ1,在在直线 w w w的投影为 w T μ 0 w^T\mu_0 wTμ0 w T μ 1 w^T\mu_1 wTμ1。由于LDA需要让不同类别的数据的类别中心之间的距离尽可能的大,也就是我们要最大化 ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 ||w^T\mu_0-w^T\mu_1||_2^2 wTμ0wTμ122,同时我们希望同一种类别数据的投影点尽可能的接近,也就是要同类样本投影点的协方差 w T Σ 0 w w^T\Sigma_0w wTΣ0w w T Σ 1 w w^T\Sigma_1w wTΣ1w尽可能的小,即最小化 w T Σ 0 w + w T Σ 1 w w^T\Sigma_0w+w^T\Sigma_1w wTΣ0w+wTΣ1w。综上所述,我们的优化目标为: a r g    m a x ⏟ w      J ( w ) = ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 w T Σ 0 w + w T Σ 1 w = w T ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w w T ( Σ 0 + Σ 1 ) w \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} w argmaxJ(w)=wTΣ0w+wTΣ1wwTμ0wTμ122=wT(Σ0+Σ1)wwT(μ0μ1)(μ0μ1)Tw
  • 我们一般定义类内散度矩阵 S w S_w Sw为: S w = Σ 0 + Σ 1 = ∑ x ∈ X 0 ( x − μ 0 ) ( x − μ 0 ) T + ∑ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T 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 Sw=Σ0+Σ1=xX0(xμ0)(xμ0)T+xX1(xμ1)(xμ1)T
  • 同时定义类间散度矩阵 S b S_b Sb为: S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T S_b = (\mu_0-\mu_1)(\mu_0-\mu_1)^T Sb=(μ0μ1)(μ0μ1)T
  • 这样我们的优化目标重写为: a r g    m a x ⏟ w      J ( w ) = w T S b w w T S w w \underbrace{arg\;max}_w\;\;J(w) = \frac{w^TS_bw}{w^TS_ww} w argmaxJ(w)=wTSwwwTSbw
  • 要最大化 J ( w ) J(w) J(w),只需要对 w w w 求偏导,并令导数等于0:

在这里插入图片描述

  • 于是得出,
    在这里插入图片描述
  • 由于在简化的二分类问题中ωTSwω和ωTSBω是两个数,我们令
    在这里插入图片描述
  • 于是得:
    在这里插入图片描述
  • 整理得:
    在这里插入图片描述
  • 从这里我们可以看出,我们最大化的目标对应了一个矩阵的特征值,于是LDA降维变成了一个求矩阵特征向量的问题。J(ω)就对应了矩阵 S w − 1 S B S_w^{−1}S_B Sw1SB最大的特征值,而投影方向就是这个特征值对应的特征向量。
  • 对于二分类这一问题,由于 S B = ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T S_B=(\mu_1-\mu_2)(\mu_1-\mu_2)^T SB=(μ1μ2)(μ1μ2)T,因此 S B ω S_Bω SBω的方向始终与 ( μ 1 − μ 2 ) (μ_1−μ_2) (μ1μ2)一致,如果只考虑ω的方向,不考虑其长度,可以得到

ω = S w − 1 ( μ 1 − μ 2 ) ω = S_w^{−1}(\mu_1-\mu_2) ω=Sw1(μ1μ2)

换句话说,我们只需要求 样本的均值类内方差,就可以马上得出最佳的投影方向 ω ω ω。这便是Fisher在1936年提出的线性判别分析。

二、PCA与LDA对比

1、从数学推导的角度,PCA与LDA有何区别与联系?

相同点都转化为求解矩阵特征值、特征向量的问题
不同点

  • PCA选择的是投影后数据方差最大的方向。由于它是无监督的,因此PCA假设方差越大,信息量越多,用主成分来表示原始数据可以去除冗余的维度,达到降维。
  • LDA选择的是投影后类内方差小、类间方差大的方向。其用到了类别标签信息,为了找到数据中具有判别性的维度,使得原始数据在这些方向上投影后,不同类别尽可能区分开。

2、如何从应用的角度分析其原理的异同?

  • 从应用的角度,我们可以掌握一个基本的原则:对无监督的任务使用PCA进行降维,对有监督的则应用LDA。
  • LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同。
  • PCA是不考虑样本类别输出的无监督降维技术。

猜你喜欢

转载自blog.csdn.net/u013250861/article/details/121042287