pca与lda区别

转自https://www.jianshu.com/p/982c8f6760de

本文用于理解机器学习中常见的两种降维方法,主成分分析和线性判别分析,并对两者进行简单的对比。

基本目录如下:

  1. 什么是PCA?
    1.1 先导数学知识准备
    1.2 PCA基本概念理解
    1.3 PCA推导之最大方差理论

  2. 什么是LDA?
    2.1 LDA基本概念理解
    2.2 LDA理论推导

  3. PCA与LDA的比较分析

------------------第一菇 - 什么是PCA------------------

1.1 先导数学知识准备

在正式深入理解之前还是需要铺垫一些线性代数的基本概念及其计算公式,以方便大家理解之后的数学符号以及矩阵运算的推导过程。

1.1.1 内积与投影

俩个向量A,B内积的计算公式为,

A\cdot B=|A||B|cos(\alpha )
其表示的意义可以简单理解为A到B的投影长度乘以B的模,如果B为单位向量,即B的模为1,则A与B的内积值等于A向B所在直线投影的矢量长度【1】。

1.1.2 方差

用于描述数据的离散程度,计算公式为,

Var(a)=\frac{1}{m}\sum_{i=1}^m{(a_i-\mu)^2}
一般为了简便计算,我们会对数值进行去中心化处理,即\mu为0,则此时计算公式可简便为,

Var(a)=\frac{1} {m}\sum_{i=1}^m{a_i^2}

1.1.3 协方差

用于描述俩个变量之间的相关性,数值去中心化处理以后,其计算公式为,

Cov(a,b)=\frac{1}{m}\sum_{i=1}^m{a_ib_i}
利用该公式可以推广出矩阵X的协方差矩阵的计算公式为,

C=\frac{1}{m}XX^\mathsf{T}

1.1.4 矩阵求导的性质

矩阵的求导,有如下性质,

\frac{\partial A^\mathsf{T}A}{\partial A}=A
矩阵的迹(即矩阵的对角线元素之和)有如下性质,

\frac{\partial tr(AB)}{\partial A}=B^\mathsf{T}

1.1.5 拉格朗日乘子法

一种寻找多元函数在一组约束下的极值的方法。本文不做展开,想深入了解的读者可翻阅周志华老师《机器学习》附录B。

1.2 PCA基本概念理解

PCA(Principal Component Analysis),中文名为“主成成分分析”。顾名思义,其目的就是找到高维数据中的主成分,并利用“主成分”数据,来表征原始数据,从而达到降维的目的。借鉴一个简单的例子,假设有一组数据存在于三维空间的一个平面上(此时需要3个维度来表征数据向量),若我们选择旋转坐标轴使得数据所在平面与x,y平面重合,则此时我们只需要2个纬度即可表征数据,且没有丢失任何数据信息,这就是最简单的数据降维。但是现实生活中的情况,往往数据特征高达上百甚至上千维,我们很难直观去找出一组基平面来完成对数据的降维,此时PCA就有其用武之地了。先直接上一张PCA分解后的图来帮助大家理解。

 

PCA示例

如图可见,绿色线为第一主成成分方向,黑色线为第二主成成分方向。仔细观察一下图,大家是否能得出如下俩个结论:

(1) 样本点在绿色线上的投影其离散程度要大于其在黑色线上的投影程度。
(2) 样本点到绿色线的平均距离都要小于其到黑色线的距离。

西瓜书上将此俩个结论归纳为最大可分析和最近重构性。其中最大可分性可以理解为我们希望降维过后的数据不影响后续我们对其的分类处理,其数据特征的差异性仍然足够强,也即方差最大;最近重构性可以理解为我们希望降维过后的数据仍然保留有其主要的特征,也即数据样本点到这个超平面的距离和最小。

接下来,本菇就按此两种目标,分别推演一把PCA问题的求解。

1.3 PCA推导之最大可分性

最大可分性理论的目标函数就是最大化数据在主轴上的投影的方差。假设现有一组已去中心化的数据\{x_1,x_2,x_3,...,x_n\}其中,向量{x_i}W超平面上的投影为x_{i}^{\mathsf{T}}W那么投影后的方差即可表示为,

D(x) =\frac{1}{n}\sum_{i=1}^{n} (x_{i}^{\mathsf{T}}W)^{2}
展开以后,我们可以得到,

D(x) = \frac{1}{n}\sum_{i=1}^{n}W^{T}x_{i}x_{i}^\mathsf{T}W
其实推导到这里,不难看出,样本的协方差矩阵即为,

C=\sum_{i=1}^{n}x_{i}x_{i}^\mathsf{T} = XX^{T}
D(x)就是“降维”后的样本的协方差矩阵。而联想到我们的优化目标就是同一纬度的方差最大,不同维度的相关性为0,如下图矩阵所示。

理想的协方差矩阵.png

也就是说,如果我们期望同一维度的方差最大,本质上就等于最大化该降维后样本的协方差矩阵的迹,如此一来,我们的优化目标就出来了,限制条件显然有 W 是正交的,所列如下,

 

\max\ tr(W^{T}CW)s.t. W^{T}W=I
此时便可引入拉格朗日乘子法得到,

f(W) = tr(W^TCW) + \lambda (W^TW-I)
求导并令其等与0可得,

\frac{\partial f}{\partial W} = \frac{\partial tr(W^TCW)}{\partial W} + \lambda \frac{\partial (W^TW)}{\partial W}=0
根据先导知识矩阵迹求导的性质,便可以推出,

CW=\lambda W
此时,

D(x) = W^{T}CW = W^{T}\lambda W = \lambda
至此真相大白,原来 x 投影后的方差就是协方差矩阵的特征值,而我们想要的最大方差,显然就是协方差矩阵最大的特征值,最佳投影方向就是最大特征值所对应的特征向量。(另一种基于最近重构性的推导方法,较最大方差推导略为复杂一点,但其最后也是殊途同归,本文就不做展开)

总结一下,我们就可以梳理出整一个PCA降维的流程,归纳如下,
(1)样本去中心化
(2)计算样本的协方差矩阵XX^{T}
(3)对协方差矩阵做特征值分解
(4)取最大的d^{'} 个特征值所对应的特征向量
(5)计算投影矩阵

------------------第二菇 - 什么是LDA------------------

2.1 LDA基本概念理解

LDA(Linear Discriminant Analysis),中文名为“线性判别分析”,是目前数据挖掘领域中比较经典且热门的一种有监督的算法。从降维的层面考虑,其也是在寻找一个投影矩阵,使得投影之后数据样本,同类的接近,而不同类的远离。(其作为分类器的时候,就可以对新的数据也进行投影,依据与哪一个类别接近来确定类别)。这里盗用一张周志华老师《机器学习》里面的一张图,来方便大家理解【2】。

 

LDA示例.jpg

 

仔细观察投影后的结果,不难发现,LDA的中心思想就是最大化类间距离以及最小化类内距离。接下来,我们就按照这个思想,进行详细的推导。

2.1 LDA理论推导

我们以最简单的二分类为切入口,首先我们定义俩个样本C_1, C_2, 均值分别为\mu_1, \mu_2,投影方向为w,则投影后俩个样本之间的距离就可表示为,

D(C1, C2) = \left |\left| w^{T}(\mu_1 - \mu_2) \right |\right|_{2}^{2}
接着,我们需要表示出投影后样本的方差,

Var(C_1^{'}) = \sum_{x\in C_1}(w^Tx-w^T\mu_1)^{2}Var(C_2^{'}) = \sum_{x\in C_2}(w^Tx-w^T\mu_2)^{2}
此时我们的优化目标即可写为,

J(w) = \frac{D(C1, C2) }{Var(C_1^{'}) + Var(C_2^{'}) }
代入上式化简后我们可得,

J(w) = \frac{w^T(\mu_1-\mu_2)(\mu_1-\mu_2)^{T}w}{\sum_{x\in C_i}w^T(x-\mu_i)(x-\mu_i)^{T}w}
此时我们可以分别定义类间散度矩阵S_b,以及类内散度矩阵S_w如下,

S_w = \sum_{x\in C_i}(x-\mu_i)(x-\mu_i)^{T}
S_b = (\mu_1-\mu_2)(\mu_1-\mu_2)^{T}
则此时我们的优化目标可以简化为,

\max J(w)= \frac{w^{T}S_bw}{w^{T}S_ww}
我们要最大化J(w)只需对w求偏导,并令导数等于0,得到,

(w^TS_ww)S_bw=(w^TS_bw)S_ww
代入原式,我们便可以得到,

S_bw=\lambda S_ww
其中\lambdaJ(w),显然为一个数,那么在整理一下,我们就可以得到,

S_w^{-1}S_bw = \lambda w
至此真相大白,原来我们最大化的目标就对应了矩阵S_w^{-1}S_b的最大特征值,而投影方向就是这个特征值对应的特征向量。

再进一步思考,将LDA扩展至多类高维情况(\mu为全局中心,N为总的类别个数,m为样本个数),类间散度矩阵会重新定义为全局散度矩阵,即类内散度与类间散度之和,

S_t = S_b + Sw = \sum_{i=1}^{m}(x_i - \mu)(x_i - \mu)^{T}
其类内散度矩阵变为每个类的类内散度矩阵之和,

S_w = \sum_{i=1}^{N}S_{wi}
则此时我们可以推出,

S_b = \sum_{i=1}^{N}m_i(\mu_i - \mu)(\mu_i - \mu)^{T}
其中m_i为第i个样本的个数。
形象的理解一下,其实现在的优化目标就变为每一个类别的中心到全局中心到加权距离,更形象的讲就是我们希望我们每一个类别的中心都离全局的中心足够远。参考书上【2】,我们此时的优化目标就变为,

J(w) = \frac{tr(w^TS_bw)}{tr(w^TS_ww)}
其最后的结论仍与上面相符,即为矩阵S_w^{-1}S_b的最大特征值,投影方向就是这个特征值对应的特征向量。

总结一下,我们就可以梳理出整一个LDA用于降维的流程,归纳如下,
(1)计算每个类别的均值\mu_i,全局样本均值\mu
(2)计算类内散度矩阵S_w,全局散度矩阵S_t,类间散度矩阵S_b
(3)对矩阵S_w^{-1}S_b做特征值分解
(4)取最大的d^{'} 个特征值所对应的特征向量
(5)计算投影矩阵

------------------第三菇 - PCA与LDA的比较分析------------------

至此,已经讲述清晰PCA与LDA的理论概念及其推导过程,从过程来看,他们有着很大的相似性,最后其实都是求某一个矩阵的特征值,投影矩阵即为该特征值对应的特征向量。但是其原理也稍有不同,现总结如下。

  1. PCA为非监督降维,LDA为有监督降维
  2. PCA希望投影后的数据方差尽可能的大(最大可分性),因为其假设方差越多,则所包含的信息越多;而LDA则希望投影后相同类别的组内方差小,而组间方差大。LDA能合理运用标签信息,使得投影后的维度具有判别性,不同类别的数据尽可能的分开。

举个简单的例子,在语音识别领域,如果单纯用PCA降维,则可能功能仅仅是过滤掉了噪声,还是无法很好的区别人声,但如果有标签识别,用LDA进行降维,则降维后的数据会使得每个人的声音都具有可分性,同样的原理也适用于脸部特征识别。

所以,可以归纳总结为有标签就尽可能的利用标签的数据(LDA),而对于纯粹的非监督任务,则还是得用PCA进行数据降维。

简单总结一下本文,先是讲述了PCA及LDA的一些基本概念,引导读者理解其数学背后的本质,接着也附上了比较详尽的数学推导进一步加深读者的理解,最后也简单的比较了一下这两者的区别及应用场景。希望大家读完本文后对机器学习降维这一块有全新的认识。有说的不对的地方也请大家指出,多多交流,大家一起进步~?

参考文献:
【1】https://zhuanlan.zhihu.com/p/21580949
【2】周志华《机器学习》



作者:蘑菇轰炸机
链接:https://www.jianshu.com/p/982c8f6760de
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值