线性判别分析LDA


线性判别分析(liner discriminant analysis, LDA)一种常用的数据降维方法,目的是在保持分类的前体下把数据投影至低维空间以降低计算复杂度。

LDA VS PCA

LDA和PCA都是利用线性变换对数据进行降维的机器学习技术。之前也对主成分分析(PCA)原理进行了总结。PCA是一种无监督的降维技术,无视数据的分类信息挖掘数据中的模式,投影后方差最大的方向即为主成分。LDA是一种有监督的降维技术,对数据进行模式分类。如图所示,LDA要求类间的方差最大,而类内的方差最小,以保证投影后同一分类数据集中,不同分类间数据距离尽可能大。

LDA原理推导

如前所述,LDA原始就是类间方差最大,类内方差最小。类间方差最大。因此LDA的计算可以分为三步:计算类间方差、计算类内方差、求解最优投影空间使得类间方差最大和类内方差最小。具体计算流程如下图所示(以3个分类,每个分类中5个样本为例)。

原始数据矩阵为X={x1,x2,,xN}, xi表征第ith样本的观测值,总样本数为N, 共有M个特征(变量),所以样本xiRM空间中。

类间方差

类间方差(between-class variance, SB), SBi表征原始数据中第ith类的均值(μi)和总体均值μ的距离,对应的投影后的均值分别为mim, 那么mi=WTμi,m=WTμ, W表示投影矩阵。类间方差可由下式计算:

(mim)2=(WTμiWTμ)2=WT(μiμ)(μiμ)TW

其中原始数据的均值计算如下(图B和C):

μj=1njxiωjxi μ=1Ni=1Nxi=i=1cniNμi

c表示分类个数,图例中c=3。所以类间方差为(图D)

SBi=(μiμ)(μiμ)T(mim)2=WTSBiW

类内方差

类内方差,表示某一分类投影后所有样本观测值的方差,投影后样本的观测值为WTxi。类内均值之间距离为:

xiωj,j=1,,c(WTximj)2=xiωj,j=1,,c(WTxijWTμj)2=xiωj,j=1,,cWT(xijμj)2W=WTSWjW 其中SWj=i=1nj(xijμj)(xijμj)T, xij表示第属于第j分类的第i个样本, (图E)

最优低维空间

LDA可以转化为最优解问题:

arg maxW WTSBWWTSWB

根据梯度最优方法转化为矩阵特征分解问题,λ表示W的特征值。

SWW=λSBW

如果SW可逆SW1SBW=λW, 转化为求SW1SB的特征值和特征向量问题,特征向量表示新的空间中的一个方向,而特征值表征了特征向量的缩放长度。所以特征向量是LDA空间的一个坐标轴,而特征值表示了该坐标轴的鲁棒性(即区别数据分类的能力)。通常取数值较大的前k个特征值对应的特征向量(Vk)作为低维空间,而忽略其余对分类结果影响较小的分量(图F)。

LDA后原始数据(RN×M)映射至由k个特征向量构成的k维空间中($R^{M k}),如下图所示。

Y=XVk

取较大的前两个特征值的特征向量(v1, v2)把原始数据映射至二维空间,如下图所示:

  • 不同分类样本映射至v1v2分类效果更好, 投影至v1的第1类和第2类均值的距离((m1m2))远大于v2投影值。
  • 类内方差较小

R进行LDA分析

以R自带的iris数据为例,3种iris花的数据,150个样本,4个变量。

library(MASS)
ord <- lda(Species~., iris)

# 可视化
library(ggord)
ggord(ord, iris$Species, coord_fix = FALSE)


一路嘿嘿

Bioinformatics, R enthusiast. Thoughts on reasarch, personal experience and other distractions.

Tags

blogdown font ggplot git github github pages Homebrew html hugo icon liner algebra linux machine learning R scholar sublime text 3 tidyverse