946 words
5 minutes
线性判别分析 (LDA)

注意:在不加说明的情况下,本文所有公式的向量均是列向量

基本概念#

线性判别分析既是一种分类算法,也是一种降维方法,和PCA一样,LDA也是通过投影的方式达到去除数据之间冗余的一种算法。其基本想法是找到一个向量 w\boldsymbol{w} ,使所有样本投影到 w\boldsymbol{w} 上之后类别间距离最大

正交投影#

已知:

p=cwd=xp\boldsymbol{p} = c \boldsymbol{w}\\ \boldsymbol{d} = \boldsymbol{x}-\boldsymbol{p}\\

计算 x\boldsymbol{x}w\boldsymbol{w} 上的投影 p\boldsymbol{p} :

dTp=0(xp)Tp=0(xcw)Tcw=0cxTwc2wTw=0c=wTxwTwp=cw=(wTxwTw)w\begin{aligned} \boldsymbol{d}^{\mathrm{T}} \cdot \boldsymbol{p} &= 0\\ (\boldsymbol{x}-\boldsymbol{p})^{\mathrm{T}} \cdot \boldsymbol{p} &= 0\\ (\boldsymbol{x}-c\boldsymbol{w})^{\mathrm{T}} \cdot c\boldsymbol{w} &= 0\\ c\boldsymbol{x}^{\mathrm{T}}\boldsymbol{w} - c^2\boldsymbol{w}^{\mathrm{T}}\boldsymbol{w} &= 0\\ c &= \frac{\boldsymbol{w}^{\mathrm{T}}\boldsymbol{x}}{\boldsymbol{w}^{\mathrm{T}}\boldsymbol{w}}\\ \boldsymbol{p} &= c\boldsymbol{w}\\ &= (\frac{\boldsymbol{w}^{\mathrm{T}}\boldsymbol{x}}{\boldsymbol{w}^{\mathrm{T}}\boldsymbol{w}})\boldsymbol{w} \end{aligned}

假设 w\boldsymbol{w} 是一个单位向量, 即 wTw=1\boldsymbol{w}^\mathrm{T}\boldsymbol{w} = 1 , 对于一个数据集 X={x1,x2,,xm}X=\{x_1, x_2,\cdots ,x_m\},其中 xi\boldsymbol{x}_idd 维列向量,其在 w\boldsymbol{w} 上的投影 xi^\hat{\boldsymbol{x}_i} 可以表示为

xi^=(wTx)w=aiw\begin{aligned} \hat{\boldsymbol{x}_i} &= (\boldsymbol{w}^{\mathrm{T}}\boldsymbol{x})\boldsymbol{w}\\ &= a_i \boldsymbol{w} \end{aligned}

其中 aia_i 是一个常数, 叫做 xi\boldsymbol{x}_iw\boldsymbol{w} 上的坐标或者偏移

这一系列的值 {a1,a2,,am}\{a_1,a_2,\cdots,a_m\} 表示了一个映射:RdR\boldsymbol{R}^d \rightarrow \boldsymbol{R} ,即通过投影,我们将 dd 维向量降维到了1维

数据集的假设#

为了简化问题和可视化结果,我们假设数据集中只有2个目标类和2个特征,可做出如下假设:

xiRd,where  d=2 Di={xjyj=ci}\boldsymbol{x}_i \in \boldsymbol{R}^d,\quad where \ \ d=2\\ ~\\ D_i = \{\boldsymbol{x}_j |y_j = c_i \}

其中 DiD_i 是 所有类别为 cic_i 的样本的集合。

投影数据的均值#

所有数据 xi\boldsymbol{x}_i 投影到 w\boldsymbol{w} 上之后,计算 DiD_i 中投影数据的均值:

mi=1nixjDiai=1nixjDiwTxj=wT(1nixjDixj)=wTμi\begin{aligned} m_i &= \frac{1}{n_i}\sum_{x_j \in D_i}a_i \\ &= \frac{1}{n_i}\sum_{x_j \in D_i} \boldsymbol{w}^{\mathrm{T}}\boldsymbol{x}_j \\ &= \boldsymbol{w}^{\mathrm{T}} (\frac{1}{n_i} \sum_{x_j \in D_i} \boldsymbol{x}_j)\\ &= \boldsymbol{w}^{\mathrm{T}}\boldsymbol{\mu}_i \end{aligned}

其中 μi\boldsymbol{\mu}_iDiD_i 中所有输入数据的均值向量

两个重要想法#

为了在投影空间最大化类间距离,我们可以想到需要最大化投影均值之差 m1m2|m_1 - m_2|,但仅凭这个条件还不足以确保在投影空间中找到最好分割,我们需要考虑投影数据的类内方差,过大的类内方差会导致不同类的数据之间产生重叠,所以我们需要同时最小化类内方差。

但是 LDA 没有直接使用方差,而是使用总平方偏差,即没取平均的方差:

si2=xjDi(ajmi)2s_i^2 = \sum_{\boldsymbol{x}_j \in D_i} (a_j - m_i)^2

Fisher’s LDA#

Fisher提出了一个思想:最⼤化⼀个函数,这个函数能够让类均值的投影分开得较大,同时让每个类别内部的方差较小,从而最小化了类别的重叠。这个函数被叫做 Fisher’s LDA

maxw J(w)=(m1m2)2s12+s22\mathop{max}\limits_{w}\ J(\boldsymbol{w}) = \frac{(m_1 - m_2)^2}{s_1^2 + s_2^2}

重写上述公式:

(m1m2)2=(wTμ1wTμ2)2=[wT(μ1μ2)]2=[wT(μ1μ2)][wT(μ1μ2)]T=wT(μ1μ2)(μ1μ2)Tw=wTSBw  si2=xjDi(ajmi)2=xjDi(wTxjwTμi)2=xjDi[wT(xjμi)]2=wT(xjDi(xjμi)(xjμi)T)w=wTSiw  s12+s22=wTS1w+wTS2w=wT(S1+S2)w=wTSWw  maxwJ(w)=wTSBwwTSWw\begin{aligned} {(m_1 - m_2)^2} &= (\boldsymbol{w}^\mathrm{T}\boldsymbol{\mu}_1-\boldsymbol{w}^\mathrm{T}\boldsymbol{\mu}_2)^2\\ &= [\boldsymbol{w}^\mathrm{T}(\boldsymbol{\mu}_1-\boldsymbol{\mu}_2)]^2\\ &= [\boldsymbol{w}^\mathrm{T}(\boldsymbol{\mu}_1-\boldsymbol{\mu}_2)][\boldsymbol{w}^\mathrm{T}(\boldsymbol{\mu}_1-\boldsymbol{\mu}_2)]^\mathrm{T}\\ &= \boldsymbol{w}^\mathrm{T}(\boldsymbol{\mu}_1-\boldsymbol{\mu}_2)(\boldsymbol{\mu}_1-\boldsymbol{\mu}_2)^\mathrm{T}\boldsymbol{w}\\ &= \boldsymbol{w}^\mathrm{T}\boldsymbol{S}_B\boldsymbol{w}\\ ~\\ ~\\ s_i^2 &=\sum_{\boldsymbol{x}_j \in D_i} (a_j - m_i)^2\\ &= \sum_{\boldsymbol{x}_j \in D_i}(\boldsymbol{w}^\mathrm{T}\boldsymbol{x}_j-\boldsymbol{w}^\mathrm{T}\boldsymbol{\mu}_i)^2\\ &= \sum_{\boldsymbol{x}_j \in D_i}[\boldsymbol{w}^\mathrm{T}(\boldsymbol{x}_j-\boldsymbol{\mu}_i)]^2\\ &= \boldsymbol{w}^\mathrm{T}(\sum_{\boldsymbol{x}_j \in D_i}(\boldsymbol{x}_j-\boldsymbol{\mu}_i)(\boldsymbol{x}_j-\boldsymbol{\mu}_i)^\mathrm{T})\boldsymbol{w}\\ &= \boldsymbol{w}^\mathrm{T}\boldsymbol{S}_i\boldsymbol{w}\\ ~\\ ~\\ s_1^2 + s_2^2 &= \boldsymbol{w}^\mathrm{T}\boldsymbol{S}_1\boldsymbol{w}+\boldsymbol{w}^\mathrm{T}\boldsymbol{S}_2\boldsymbol{w}\\ &= \boldsymbol{w}^\mathrm{T}(\boldsymbol{S}_1+\boldsymbol{S}_2)\boldsymbol{w}\\ &= \boldsymbol{w}^\mathrm{T}\boldsymbol{S}_W\boldsymbol{w}\\ ~\\ ~\\ \mathop{max}\limits_{w}J(\boldsymbol{w}) &= \frac{\boldsymbol{w}^\mathrm{T}\boldsymbol{S}_B\boldsymbol{w}}{\boldsymbol{w}^\mathrm{T}\boldsymbol{S}_W\boldsymbol{w}} \end{aligned}

对目标优化函数求导:

dJ(w)dw=(2SBw)(wTSWw)(2SWw)(wTSBw)(wTSWw)2\frac{\mathrm{d}J(\boldsymbol{w})}{\mathrm{d}\boldsymbol{w}}=\frac{(2\boldsymbol{S}_B\boldsymbol{w})(\boldsymbol{w}^\mathrm{T}\boldsymbol{S}_W\boldsymbol{w})-(2\boldsymbol{S}_W\boldsymbol{w})(\boldsymbol{w}^\mathrm{T}\boldsymbol{S}_B\boldsymbol{w})}{(\boldsymbol{w}^\mathrm{T}\boldsymbol{S}_W\boldsymbol{w})^2}

可知使 J(w)J(\boldsymbol{w}) 取最大值的条件是:

SBw(wTSWw)=SWw(wTSBw)SBw=SWw(wTSBwwTSWw)SBw=J(w)SWwSBw=λSWw\begin{aligned} \boldsymbol{S}_B\boldsymbol{w}(\boldsymbol{w}^\mathrm{T}\boldsymbol{S}_W\boldsymbol{w}) &= \boldsymbol{S}_W\boldsymbol{w}(\boldsymbol{w}^\mathrm{T}\boldsymbol{S}_B\boldsymbol{w})\\ \Rightarrow \boldsymbol{S}_B\boldsymbol{w} &= \boldsymbol{S}_W\boldsymbol{w}(\frac{\boldsymbol{w}^\mathrm{T}\boldsymbol{S}_B\boldsymbol{w}}{\boldsymbol{w}^\mathrm{T}\boldsymbol{S}_W\boldsymbol{w}})\\ \Rightarrow \boldsymbol{S}_B\boldsymbol{w} &= J(\boldsymbol{w})\boldsymbol{S}_W\boldsymbol{w}\\ \Rightarrow \boldsymbol{S}_B\boldsymbol{w} &= \lambda\boldsymbol{S}_W\boldsymbol{w}\\ \end{aligned}

其中 λ=J(w)\lambda = J(\boldsymbol{w}) ,是一个常量

如果 SS 是一个非奇异矩阵,那么上式两边同时左乘 SW1S_W^{-1} 可得:

SW1SBw=λw\boldsymbol{S}^{-1}_W\boldsymbol{S}_B\boldsymbol{w} = \lambda\boldsymbol{w}

最终,LDA问题其实就是求 SW1SB\boldsymbol{S}^{-1}_W\boldsymbol{S}_B 对应最大特征值,而我们前面要求的投影方向就是最大特征值对应的特征向量,我们将LDA问题化成了矩阵的特征值和特征向量的问题了。

多分类LDA#

上述推导针对的是二分类问题,对于多分类问题, SW\boldsymbol{S}_W 的计算方式不变,而 SB\boldsymbol{S}_B 矩阵需要采用如下的公式计算:

SB=i=1Cni(μiμ)(μiμ)T\boldsymbol{S}_B = \sum_{i=1}^Cn_i(\boldsymbol{\mu}_i-\boldsymbol{\mu})(\boldsymbol{\mu}_i-\boldsymbol{\mu})^\mathrm{T}

其中 CC 表示类别数;nin_i 表示第i类中样本个数,μi\boldsymbol{\mu}_i表示第i类样本的均值;μ\boldsymbol{\mu} 表示整个样本的均值。

线性判别分析 (LDA)
https://www.quahog-dev.tech/posts/lda/
Author
Brian & Stewie
Published at
2025-01-12