必威体育Betway必威体育官网
当前位置:首页 > IT技术

PCA和SVD傻傻分不清楚?

时间:2019-10-31 18:45:44来源:IT技术作者:seo实验室小编阅读:85次「手机版」
 

svd

c以前学习PCA和SVD的时候都是分开学的,也只是记住了求解方法,对于原理理解一直处于懵圈状态,查看了别人的解释,也尝试自己总结一下。如果哪里理解错了,那就gg了

​​PCA(Principal component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。现在我们将数据抽象为一组向量x" role="presentation" style="position: relative;">x,数据集表示X={x1,x2,...,xn}" role="presentation" style="position: relative;">X={x1,x2,...,xn}, 对于数据X" role="presentation" style="position: relative;">X,去中心化后得到的矩阵X~" role="presentation" style="position: relative;">X~,则协方差矩阵∑=X~TX~" role="presentation" style="position: relative;">=X~TX~

首先看一下PCA求解步骤:

1. 求协方差矩阵 ∑" role="presentation" style="position: relative;">

2. 计算 ∑" role="presentation" style="position: relative;"> 的特征值和特征向量,将特征值从大到小排列,前k个特征值对应的特征向量为 P" role="presentation" style="position: relative;">P

3. 降维后的数据为 X~m×nPn×k=A~m×k" role="presentation" style="position: relative;">X~m×nPn×k=A~m×k

这里写图片描述

数据在 w" role="presentation" style="position: relative;">w 方向上的投影为 z=wTx" role="presentation" style="position: relative;">z=wTx,我们希望数据点在新的空间中保留最大的差异性即方差最大,所以:

希望 var(z)=wT∑w" role="presentation" style="position: relative;">var(z)=wTw 最大化,其中 ∑=cov(x)" role="presentation" style="position: relative;">=cov(x)||w||=1" role="presentation" style="position: relative;">||w||=1。 根据拉格朗日:

maxw wT∑w−α(wTw−1)" role="presentation" style="position: relative;">maxwwTwα(wTw1)

关于 w" role="presentation" style="position: relative;">w 求导得:

2∑−2αw=0⇒∑w=αw" role="presentation" style="position: relative;">22αw=0w=αw 其中α" role="presentation" style="position: relative;">α 就是特征值, w" role="presentation" style="position: relative;">w 就是特征向量。

所以只需对协方差矩阵 ∑" role="presentation" style="position: relative;"> 进行特征值分解,将求得的特征值排序:λ1≥λ2≥…≥λn,再取前k个特征值对应的特征向量构成W=(w1,w2,...,wk)" role="presentation" style="position: relative;">W=(w1,w2,...,wk),就是主成分分析的解。

SVD(Singular Value Decomposition),奇异值分解,是一个能适用于任意的矩阵的一种分解的方法。

定义:

Mm×n=Um×m∑m×nVn×nT" role="presentation" style="position: relative;">Mm×n=Um×mm×nVn×nT,

其中,U" role="presentation" style="position: relative;">UV" role="presentation" style="position: relative;">V为正交矩阵,∑" role="presentation" style="position: relative;">只有对角元素而且对角元素是从大到小排列的,这些对角元素称为奇异值。

在几何中,我们可以把矩阵看做空间上的线性变换。奇异值分解的几何含义是:对于任何的一个矩阵,我们都能找到一组坐标轴,它是由原来的坐标轴通过旋转和缩放得到的。奇异值的含义是:这组变换后新的坐标轴的长度。

盗用一张图吧

对于一个二维矩阵,总能找到一组标准正交基v1" role="presentation" style="position: relative;">v1v2" role="presentation" style="position: relative;">v2,使Mv1" role="presentation" style="position: relative;">Mv1Mv2" role="presentation" style="position: relative;">Mv2正交,用u1" role="presentation" style="position: relative;">u1u2" role="presentation" style="position: relative;">u2表示Mv1" role="presentation" style="position: relative;">Mv1Mv2" role="presentation" style="position: relative;">Mv2的方向。这样M" role="presentation" style="position: relative;">M就从一组标准正交基用另一组标准正交基表示。

Mv1" role="presentation" style="position: relative;">Mv1的长度为||Mv1||=σ1" role="presentation" style="position: relative;">||Mv1||=σ1||Mv2||=σ2" role="presentation" style="position: relative;">||Mv2||=σ2

则: Mv1=σ1u1" role="presentation" style="position: relative;">Mv1=σ1u1, Mv2=σ1u2" role="presentation" style="position: relative;">Mv2=σ1u2

一个向量x" role="presentation" style="position: relative;">x,在v1" role="presentation" style="position: relative;">v1v2" role="presentation" style="position: relative;">v2这组标准正交基中表示为x=(v1Tx)v1+(v2Tx)v2" role="presentation" style="position: relative;">x=(v1Tx)v1+(v2Tx)v2,其中(v1Tx)" role="presentation" style="position: relative;">(v1Tx)为投影长度。

从而:

Mx=(v1Tx)Mv1+(v2Tx)Mv2=(v1Tx)σ1u1+(v2Tx)σ2u2" role="presentation" style="position: relative;">Mx=(v1Tx)Mv1+(v2Tx)Mv2=(v1Tx)σ1u1+(v2Tx)σ2u2

所以:

M=u1σ1v1T+u2σ2v2T=U∑VT" role="presentation" style="position: relative;">M=u1σ1v1T+u2σ2v2T=UVT

矩阵M" role="presentation" style="position: relative;">M的作用是将一个向量从V" role="presentation" style="position: relative;">V这组正交向量空间中旋转到U" role="presentation" style="position: relative;">U空间,并按照∑" role="presentation" style="position: relative;">在各个方向上做了缩放,缩放倍数就是奇异值。

性质:

1. U,V" role="presentation" style="position: relative;">U,V都是标准正交矩阵,即UTU=E" role="presentation" style="position: relative;">UTU=EVTV=E" role="presentation" style="position: relative;">VTV=E

2. MTM=V∑2VT" role="presentation" style="position: relative;">MTM=V2VTMMT=U∑2UT" role="presentation" style="position: relative;">MMT=U2UT

即,V" role="presentation" style="position: relative;">VMTM" role="presentation" style="position: relative;">MTM的特征向量,即U" role="presentation" style="position: relative;">UMMT" role="presentation" style="position: relative;">MMT的特征向量,奇异值的平方σ2" role="presentation" style="position: relative;">σ2MTM" role="presentation" style="position: relative;">MTMMMT" role="presentation" style="position: relative;">MMT的特征值

3. 将奇异值从大到小排列,前k个奇异值近似描述矩阵Mm×n≈Um×k∑k×kVk×nT" role="presentation" style="position: relative;">Mm×nUm×kk×kVk×nT

现在来看一下SVD和PCA的关系。

我们讲到要用PCA降维,需要找到样本协方差矩阵X~TX~" role="presentation" style="position: relative;">X~TX~的最大的k个特征向量,然后用这最大的k个特征向量张成的矩阵来做低维投影降维。

注意,SVD也可以得到协方差矩阵X~TX~" role="presentation" style="position: relative;">X~TX~最大的k个特征向量张成的矩阵。

但是SVD有个好处,有一些SVD的实现算法可以不求先求出协方差矩阵,也能求出右奇异矩阵V" role="presentation" style="position: relative;">V。也就是说,PCA算法可以不用做特征分解,而是做SVD来完成。这也是为什么很多工具包中PCA算法的背后真正的实现是用的SVD,而不是我们认为的暴力特征分解。

另一方面,注意到PCA仅仅使用了我们SVD的右奇异矩阵,没有使用左奇异矩阵。而左奇异矩阵可以用于行数的压缩,右奇异矩阵可以用于列数,也就是PCA降维。

所以,有了SVD就可以得到两个方向的PCA。

文章最后发布于: 2018-04-06 16:30:36

相关阅读

win10中wpcap.dll丢失的解决办法(解决Proteus中与网络

解决Proteus中与网络类仿真相关的模块报错问题,如ENC28J60。 使用windump时,提示wpcap.dll丢失。 下载win10pcap.msi安装。 网址:htt

PCA 以及 SPCA

本文主要为PCA(principal component analysis)的学习记录以及SPCA(sparse principal component analysis)的学习记录 因为关于PCA

奇异值分解(SVD)原理详解

一、奇异值与特征值基础知识:   特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法。两者有着很紧密的关系,我在接下

超好理解的PCA 特征选择

一、PCA简介1. 相关背景 主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量

PCA

一,引言 降维是对数据高维度特征的一种预处理方法。降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现

分享到:

栏目导航

推荐阅读

热门阅读