降维

在机器学习或数据处理中,经常会碰到一些高维数据,而高维数据情形下经常出现样本稀疏、计算困难等问题,称之为“维度灾难”。
对于一个高维数据数 D={X1,X2,...,XN}D = \{X_1, X_2, ..., X_N\}D={X1​,X2​,...,XN​},其中每条数据的对应维度为nnn,即Xi∈RnX_i\in R^{n}Xi​∈Rn。降维的目的是找到一个映射函数fff,使得DDD中的任意一条数据XXX,都能被映射到一个低维空间中:
f(X)→Rmf(X) \to R^mf(X)→Rm
其中,mmm是映射后的低维空间的维度,从而每一条数据的维度都从nnn维降到了mmm维。
映射函数 fff的形式有无数种,可简单分为线性变换和非线性变换。线性变换在高维空间中,寻找一个超平面从而将高维空间中的数据点映射到超平面上。而线性变换的形式较为简单,不一定能够完全表现出数据的特征,因此也有许多基于非线性变换的降维方法。

在确定映射函数的形式后,一般需要根据不同的任务或某些准则来确定映射函数的最优参数:
min⁡θL(f(D∣θ),D)\min_{\theta} L(f(D|\theta), D)θmin​L(f(D∣θ),D)
其中,LLL是定义的准则函数,θ\thetaθ是映射函数fff的参数,DDD是原始的高维数据集合,f(D∣θ)f(D|\theta)f(D∣θ)是映射后的低维数据集合。

线性变换降维

主成分分析(PCA)

主成分分析 (PCA)是一种较为常用的线性变换、无监督的降维方法。线性变换是在高维空间中,寻找一个超平面从而将高维空间中的数据点映射到超平面上。那么,一个较好的超平面,应该具有以下的性质:

  • 最近可重构性: 样本点到这个超平面的距离都足够近。
    即下图中所有红线(即投影造成的损失)加起来最小。西瓜书对最近可重构性的解释较为简略,基于西瓜书的个人对最近可重构性的理解是其等价于基于投影后的低维数据集,重构到原来的高维空间中,应使重构后的高维的点与原始的高维的点的距离尽可能小(欢迎探讨)。

  • 最大可分性: 样本点在这个超平面上的投影能尽可能地分开。
    一个比较直观的感受是,投影应尽可能保留更多原始数据的特征和信息,因此应尽可能地分开;如果投影存在重合,那么则无法区分其对应的原始数据。而数据之间的离散程度可以用样本方差表示,所以,如下图的二维到一维的投影所示,最大可分性即需最大化投影点的方差。

从最近可重构性的推导

原始的高维数据 X={X1,X2,...,XN}X = \{X_1, X_2, ..., X_N\}X={X1​,X2​,...,XN​},其中每一条样本是一个列向量,数据矩阵X∈Rn×NX\in R^{n×N}X∈Rn×N。现在对这些点进行压缩,使其投影到k维空间中,其中k<n,使其损失的信息最小。设矩阵W={w1,w2,...,wk}W = \{w_1, w_2, ..., w_k\}W={w1​,w2​,...,wk​}是一个n×kn×kn×k的正交阵,wiw_iwi​是标准正交基向量,即满足
WTW=IW^TW = IWTW=I
根据线性变换,原始数据矩阵XXX经过线性变换WWW的点的坐标:
Z=f(X)=WTXZ = f(X) = W^TXZ=f(X)=WTX

矩阵相乘实际上一种线性变换,这里的WWW是一个正交阵,保证线性变换后的子空间的基是一组标准正交基,即投影后的数据之间各个维度的协方差为0,从而避免冗余信息,保留更多的数据特征。

如果对原始样本进行中心化处理,均值化为0,即每个样本都减去所有样本的均值:
X′=X−μX=X−1N∑i=1NXiX' = X - \mu_X = X - \frac{1}{N}\sum_{i=1}^{N}X_iX′=X−μX​=X−N1​i=1∑N​Xi​
那么,处理后的投影点的均值:
μZ′=1N∑i=1NZi′=1N∑i=1NWTXi′=1NWT∑i=1NXi′=0\mu' _Z = \frac{1}{N}\sum_{i=1}^{N}Z'_i = \frac{1}{N}\sum_{i=1}^{N}W^TX'_i = \frac{1}{N}W^T\sum_{i=1}^{N}X'_i =0μZ′​=N1​i=1∑N​Zi′​=N1​i=1∑N​WTXi′​=N1​WTi=1∑N​Xi′​=0
因此,可知如果对原始数据进行中心化处理,得到的投影数据的均值也为0。

考虑基于投影后的点ZZZ重构XXX,即重新映射回RnR^nRn空间:
X′=WZ=WWTXX' = WZ = WW^TXX′=WZ=WWTX

WTW^TWT是一个标准正交基组成的矩阵,伪逆等于其转置。

那么,假设新得到的数据与原始的数据点之间的距离最小,即PCA可转化为求解约束最优化问题:

min⁡∣∣X−X′∣∣F2=min⁡∣∣X−WWTX∣∣F2\min ||X - X'||_F^2 = \min ||X - WW^TX||_F^2min∣∣X−X′∣∣F2​=min∣∣X−WWTX∣∣F2​

其中,∣∣A∣∣F||A||_F∣∣A∣∣F​代表矩阵AAA的Frobenius范数(F范数),其值为矩阵所有元素的平方和。根据F范数与矩阵迹的关系:
∣∣A∣∣F=tr(AAT)||A||_F = \sqrt{tr(AA^T)}∣∣A∣∣F​=tr(AAT)​
tr(A)tr(A)tr(A)是矩阵A的迹,代表对角线元素之和。那么:
min⁡∣∣X−WWTX∣∣F2=min⁡tr((X−WWTX)(X−WWTX)T)=min⁡tr((X−WWTX)(XT−XTWWT))=min⁡tr(XXT−XXTWWT−WWTXXT+WWTXXTWWT)=min⁡(tr(XXT)−tr(XXTWWT)−tr(WWTXXT)+tr(WWTXXTWWT))\min ||X - WW^TX||_F^2 \\ = \min tr((X-WW^TX)(X-WW^TX)^T )\\ = \min tr((X-WW^TX)(X^T-X^TWW^T)) \\ = \min tr(XX^T - XX^TWW^T - WW^TXX^T +WW^TXX^TWW^T) \\ = \min (tr(XX^T) - tr(XX^TWW^T) - tr( WW^TXX^T) + tr(WW^TXX^TWW^T))min∣∣X−WWTX∣∣F2​=mintr((X−WWTX)(X−WWTX)T)=mintr((X−WWTX)(XT−XTWWT))=mintr(XXT−XXTWWT−WWTXXT+WWTXXTWWT)=min(tr(XXT)−tr(XXTWWT)−tr(WWTXXT)+tr(WWTXXTWWT))
根据迹的循环不变性:
tr(WWTXXTWWT)=tr(XXTWWT)=tr(WWTXXT)=tr(WTXXTW)tr(WW^TXX^TWW^T) = tr(XX^TWW^T) = tr(WW^TXX^T) = tr(W^TXX^TW)tr(WWTXXTWWT)=tr(XXTWWT)=tr(WWTXXT)=tr(WTXXTW)
且XXTXX^TXXT是已知项,不会影响结果。上式优化过程为:
min⁡W−tr(WTXXTW)s.t.WTW=I\min_W -tr(W^TXX^TW)\\ s.t. \quad W^TW = IWmin​−tr(WTXXTW)s.t.WTW=I

从最大可分性的推导

最大可分性需要最大化投影点的方差:

Var(Z)=Cov(Z,Z)=(Z−μZ)(Z−μZ)T=ZZT=WTXXTWVar(Z) = Cov(Z, Z) = (Z - \mu_Z)(Z - \mu_Z)^T = ZZ^T = W^TXX^TWVar(Z)=Cov(Z,Z)=(Z−μZ​)(Z−μZ​)T=ZZT=WTXXTW
考虑协方差矩阵Var(Z)Var(Z)Var(Z),由于WTW^TWT是正交阵,因此Var(Z)Var(Z)Var(Z)对角元素分别是对应维度的方差,其余元素为0。
因此最大可分性即为优化以下目标:
max⁡Wtr(WTXXTW)s.t.WTW=I\max_W tr(W^TXX^TW)\\ s.t. \quad W^TW = IWmax​tr(WTXXTW)s.t.WTW=I

由上可以看出,PCA的最近可重构性的推导与最大可分行的推导结果是等价的。

拉格朗日乘子法

使用拉格朗日乘子法求解上述优化问题,引入乘子λ\lambdaλ,则为求以下拉格朗日函数的极值:
L(W,λ)=tr(WTXXTW)+λ(I−WTW)L(W, \lambda) = tr(W^TXX^TW) + \lambda(I-W^TW)L(W,λ)=tr(WTXXTW)+λ(I−WTW)
对WWW求偏导令其为0:
∂L(W,λ)∂W=∂tr(WTXXTW)+λ(I−WTW)∂W\frac{\partial L(W, \lambda)}{\partial W} =\frac{\partial tr(W^TXX^TW) + \lambda(I-W^TW)}{\partial W} ∂W∂L(W,λ)​=∂W∂tr(WTXXTW)+λ(I−WTW)​
⟹XXTW=λW\implies XX^TW = \lambda W ⟹XXTW=λW
因此可见,WWW是协方差矩阵XXTXX^TXXT的特征向量,只需对XXTXX^TXXT进行特征值分解,然后选取前kkk大的特征值对应的特征向量,即为组成的WWW矩阵。

最大特征值对应的特征向量上投影点的方差最大,因此选取前k大个特征向量,其各维度投影的方差之和最大。

PCA算法步骤

PCA算法的主要步骤如下:
输入: 样本数据集X∈Rn×NX\in R^{n×N}X∈Rn×N,低维空间的维度kkk

  1. 对所有样本中心化:X←X−μX \gets X - \muX←X−μ
  2. 计算协方差矩阵:XXTXX^TXXT
  3. 对协方差矩阵XXTXX^TXXT特征值分解
  4. 选取最大的k个特征值及其对应的特征向量 {w1,w2,...,wk}\{w_1, w_2, ..., w_k\}{w1​,w2​,...,wk​}

输出: W={w1,w2,...,wk}∈Rn×kW = \{w_1, w_2, ..., w_k\} \in R^{n×k}W={w1​,w2​,...,wk​}∈Rn×k

在算法过程中,可保留均值向量μ\muμ以对数据进行复原。

奇异值分解 (SVD)

实际过程中,通常对XXX进行奇异值分解代替对协方差矩阵作特征值分解。
对于任意一个矩阵 A∈Rm×nA\in R^{m×n}A∈Rm×n, 都可分解成以下形式:
A=UΣVTA = U\Sigma V^TA=UΣVT
其中,Um×mU_{m×m}Um×m​和Vn×nV_{n×n}Vn×n​均是单位正交矩阵, Σm×n\Sigma_{m×n}Σm×n​是一个对角矩阵。(此处不再证明,可看参考资料)

考虑以下:
AAT=UΣVT(UΣVT)T=UΣΣTUTAA^T = U\Sigma V^T(U\Sigma V^T)^T = U\Sigma\Sigma^TU^TAAT=UΣVT(UΣVT)T=UΣΣTUT
ATA=(UΣVT)TUΣVT=VΣTΣVTA^TA = (U\Sigma V^T)^TU\Sigma V^T = V\Sigma^T\Sigma V^TATA=(UΣVT)TUΣVT=VΣTΣVT
并且AATAA^TAAT与ATAA^TAATA均为实对陈矩阵,因此奇异值分解的求解过程一般如下:

  1. 求AATAA^TAAT的特征值和特征向量,用单位化的特征向量构建UUU
  2. 求ATAA^TAATA的特征值和特征向量,用单位化的特征向量构建VVV
  3. 求AATAA^TAAT或ATAA^TAATA的特征值取平方根,构成Σ\SigmaΣ

SVD用于PCA:

  1. 如果取VVV的前 kkk 行作为线性变换矩阵WWW,则起到压缩行即行降维的效果。
  2. 如果取UUU的前 kkk 行作为线性变换矩阵WWW,则起到压缩列即列降维的效果。

根据样本数据的行列意义,可使用SVD的左右奇异向量分别起到去除冗余样本、降维的效果。SVD分解常用于替代PCA中的协方差分解,主要是由于计算效率的问题。相对而言,方阵的特征值分解计算效率不高,而SVD具有更高效且准确的迭代求解法,能够避免AATAA^TAAT的运算。

非线性变换降维

  • 核化线性变换
  • 流形学习
    • t-SNE
    • 等度量映射 Isomap
    • 局部线性嵌入 LLE

参考

https://zhuanlan.zhihu.com/p/29846048
https://zhuanlan.zhihu.com/p/58064462
https://www.qiujiawei.com/linear-algebra-17/

降维 ---- 主成分分析 (PCA)、奇异值分解 (SVD)相关推荐

  1. 主成分分析PCA 奇异值分解SVD

    一 特征值和特征向量 想了解PCA和SVD,首先要了解的一个概念就是特征值和特征向量.        A是矩阵,x是向量.是数.如果满足公式,则说是矩阵A的一个特征值,非零向量x为矩阵A的属于特征值的 ...

  2. sklearn学习 5.降维算法PCA和SVD

    一.概述 **1.从什么叫"维度"说开来 ** 对于数组和Series来说,维度就是功能shape返回的结果,shape中返回了几个数字,就是几维.索引以外的数 据,不分行列的叫一 ...

  3. 《菜菜的机器学习sklearn课堂》降维算法PCA和SVD

    降维算法PCA和SVD 什么是维度? sklearn中的降维算法 PCA 与 SVD 降维究竟是怎样实现的? PCA重要参数 n_components 迷你案例:高维数据的可视化 附录 PCA参数列表 ...

  4. 机器学习-Sklearn-04(降维算法PCA和SVD)

    机器学习-Sklearn-04(降维算法PCA和SVD) 学习04 1 概述 1.1 从什么叫"维度"说开来 对于数组和Series来说,维度就是功能shape返回的结果,shap ...

  5. sklearn实战之降维算法PCA与SVD

    sklearn实战系列: (1) sklearn实战之决策树 (2) sklearn实战之随机森林 (3) sklearn实战之数据预处理与特征工程 (4) sklearn实战之降维算法PCA与SVD ...

  6. svd降维 python案例_菜菜的机器学习sklearn实战-----sklearn中的降维算法PCA和SVD

    菜菜的机器学习sklearn实战-----sklearn中的降维算法PCA和SVD 概述 从什么叫维度说开来 简单讲,shape中返回了几个数字就是几维. 一张表最多就是一维 当一个数组中存在2张3行 ...

  7. 机器学习实战(十二)降维(PCA、SVD)

    目录 0. 前言 1. 主成分分析PCA(Principal Component Analysis) 2. 奇异值分解SVD(Singular Value Decomposition) 3. 低维空间 ...

  8. 画出降维后的图片_机器学习实战基础(二十三):sklearn中的降维算法PCA和SVD(四) PCA与SVD 之 PCA中的SVD...

    PCA中的SVD 1 PCA中的SVD哪里来? 细心的小伙伴可能注意到了,svd_solver是奇异值分解器的意思,为什么PCA算法下面会有有关奇异值分解的参数?不是两种算法么?我们之前曾经提到过,P ...

  9. 降维(PCA、SVD、LDA)

    通俗的解释什么是降维 一些高维度的数据,比如淘宝交易数据,为便于解释降维作用,我们在这假设有下单数,付款数,商品类别,售价四个维度,数据量上百万条,对于下单数和付款数,我们可以认为两者是线性相关的,即 ...

最新文章

  1. fastdfs上传文件_SpringBoot+FastDFS搭建分布式文件系统
  2. GWT Spring和Hibernate进入数据网格世界
  3. VSTO应用程序中加入键盘钩子
  4. Detours的作用和实例(hook、钩子)
  5. 什么是服务网格(Service Mesh)
  6. python显示邮件发送成功失败_python stmp module 163邮箱发送邮件不成功
  7. 人生苦短,我用python-- Day6 面向对象
  8. 短信营销 (php示例)
  9. 620集成显卡和mx250,残血还是满血?一招看清MX250显卡真面目
  10. css vw vh ie9,css3中calc、vw、vh、vmin、vmax 属性的应用及兼容性详解
  11. 邮箱登录名身份证号码等验证
  12. python 打开excel并在屏幕上呈现_python读取excel数据,并可视化展现
  13. 大厂面试题刷屏:一头牛重800kg,一座桥承重700kg,牛如何过桥?
  14. oracle转换全角函数,Oracle全角変換
  15. hibernate数据检索策略
  16. 作为一名网络工程师,分享下IT从业经验!
  17. 如何安装CocoaPods
  18. 新版kali如何配置IP地址?
  19. 5G QoS控制原理专题详解-基础概念(2)
  20. 我的世界java版合成表_我的世界:Java版和基岩版的5个合成表差异,知道半数,老MC无疑。...

热门文章

  1. 图数据集Planetoid御三家:Cora,CiteSeer,PubMed详解
  2. Antrea-数据流分析
  3. 月鸟的成功你不可复制
  4. 表达式求值引擎Avitor的使用
  5. 射频百科:什么是相位噪声?及其含义
  6. [2021.7.9][11 使用C++11开发一个轻量级的IoC容器(工厂模式的应用及优化)] 11.4 通过Any和闭包来擦除类型 和 创建依赖的对象
  7. C++11 Ioc--Inversion of Control控制反转
  8. 数据库01-数据库软件安装步骤详解
  9. 微信小程序+mysql实现增删改查
  10. 四套上市公司家族、股权关联数据助力公司金融深度研究