四 大数据分析之 SVD理论

来源:互联网 发布:淘宝网四海认证钓具 编辑:程序博客网 时间:2024/05/08 15:53

一 SVD的数学模型

      设有样本数据X=(xij)np;i=1...p,j=1...nxijR ; n为样本数,p是样本的观察指标数目。将样本数据中的一行也就是一个观察样本看成是P维空间的一个点,n个样本也就是P维空间中的n点.

     矩阵X有如下分解:X=UΣVt,其中URnn,VRpp,ΣRnp,vij=0,ij,并且S,D均为正交阵。

1.1 SVD与PCA的关系

     事实上,只要找到H=XtX的特征向量矩阵V,令Y=XVt,则有YtY=ΛΛ的非对角线元素全为零,即Y个各列之间正交,只需要将Y的每列进行单位化就可以得到单位正交阵的p个列,补齐其余n-p列得到单位正交阵U,即Y=UVt,因此有X=UΣVt成立。

     首先,令 H=XtX,根据SVD分解,有H=UΣtVtVΣUt=UΣtΣUt=UtΛU。可见,U是H的特征向量矩阵,特征值为λi=σ2ii

     其次,令 H=XXt,根据SVD分解,有H=VΣΣtVt=VtΛV。可见,V是H的特征向量矩阵,特征值根为λi=σ2ii

由此知道任意的实数矩阵X,  对称阵XXtXtX有相同的非零特征值,他们的特征向量矩阵,对应于SVD分解的U和V。

1.2 最优化方法看SVD

      用u⃗ ,v⃗ ,λ逼近X,建立如下最优化方法:

min(Q(X,u⃗ ,v⃗ ,λ))=min(i=1nj=1p(xijλuivj)2)st.ni=1u2ipj=1v2i=1=1

运用拉格朗日方法,可以得到下面的方程组:
u⃗ tXv⃗ Xv⃗ Xtu⃗ =λ=λu⃗ =λv⃗ (1)

由(1)可以得到,XXtu⃗ =λXv⃗ =λ2u⃗ ,  容易看到u⃗ XXt的特征向量。

假设有两组解满足(1)式,分别为u⃗ 1,v⃗ 1,λ1,u⃗ 2,v⃗ 2,λ2,且有λ21λ22则有:

u⃗ t1XXtu⃗ 2=λ21u⃗ t1u⃗ 2=λ22u⃗ t1u⃗ 2
,则必有u⃗ t1u⃗ 2=0,同理还有v⃗ t1v⃗ 2=0
满足(1)式的所有解,构成了X的SVD分解。

1.3 SVD分解算法

事实上(1)给出了一个迭代算法求解SVD;基本步骤如下:

  1. 初始化v⃗ =(1,1,1)t,  λ1=0,指定一个比较小的数值e,e>0

  2. 计算Xv⃗ =u⃗ ,  u⃗ =u⃗ /|u⃗ |

  3. 计算v⃗ =Xtu⃗ ,  λ2=|v⃗ |,  v⃗ =v⃗ /λ2

  4. 计算 判断|λ2λ1|<e,为真,返回(λ2,u⃗ ,v⃗ ),否则λ1λ2跳转到第2步。

上面给出的分解SVD算法,只给出了一组解,为了求得剩余的解,只需要将X做如下的变换:

X:=Xλu⃗ v⃗ t
然后按照上面的算法再计算即可,

下面验证第二组解满足(1)式:

事实上,假设两轮计算得到了两组解:(λ1,u⃗ 1,v⃗ 1),(λ2,u⃗ 2,v⃗ 2),先验证若:λ21λ22u⃗ 1,u⃗ 2正交。

Xtλ1v⃗ 1u⃗ t1u⃗ 1=Xtu⃗ 1λ1v⃗ 1=0

所以有:
0=u⃗ t2(Xλ1u⃗ 1v⃗ t1)(Xtλ1v⃗ 1u⃗ t1)u⃗ 1=λ22u⃗ t2u⃗ 1

可见:u⃗ t2u⃗ 1=0,同样,还有:v⃗ t2v⃗ 1=0,所以有:

λ2=u⃗ t2(Xλ1u⃗ 1v⃗ t1)v⃗ 2=u⃗ t2Xv⃗ 2λ1u⃗ t2u⃗ 1v⃗ t1v⃗ 2=u⃗ t2Xv⃗ 2λ2v⃗ 2=(Xλ1u⃗ 1v⃗ t1)tu⃗ 2=Xtu⃗ 2λ2u⃗ 2=(Xλ1u⃗ 1v⃗ t1)v⃗ 2=Xv⃗ 2

可见:(λ1,u⃗ 1,v⃗ 1),(λ2,u⃗ 2,v⃗ 2)都是X的SVD分解的特征。

事实上,可以通过计算H=XtX,然后用上面的办法求解H的特征分解,算法可以进一步优化。但是当H或者X数据量特别大的时候,需要进行并行加速。上述算法可以进行并行运算,只需要对X进行分块即可。

二 、SVD的应用

     SVD分解的应用十分广泛,在数据压缩,推荐,经济结构分析等等方面,并且在应用方面与因子分析、对应分析方法极为相似。

2.1 数据压缩

     在大数据时代,存在大型数值矩阵,比如客户与购买的商品关系矩阵,网名点击网站数据等等,样本数据量为np,而样本矩阵的秩R(X)=r,则SVD分解之后的去掉零后只剩(n+p+1)r个数据需要存储。这是还是无损压缩。

     假设n=100105,p=105,r=103,则存储原始数据量为1012,而通过SVD分解后,存储数据量为(100105+105+1)1031010,所需存储空间缩小两个数量级。

     除此之外,参照PCA(主成分分析),可将特征值从大到小排列,取方差和占比前80%的特征分量,还可以进一步压缩数据,降低噪音。

2.2 缺失值估计,商品推荐

     在很多时候,X是稀疏矩阵,比如若X的每行代表某人购买不同商品数量或者金额的样本数据。将样本中缺失的数据视为潜在的消费需求,那么估计样本中缺失数据的值,就可以用来做商品推荐。
      1.2节中讨论了二乘法逼近样本的最优化方法,并且从中给出了SVD分解的算法,现在稍微修改一下该方法,在此之前定义一个函数:

s(x)={01x=0x0

然后定义极值函数:
min(Q(X,u⃗ ,v⃗ ,λ))=min(i=1nj=1p[s(xij)(xijλuivj)2])st.ni=1u2ipj=1v2i=1=1

极小化目标函数Q(X,u⃗ ,v⃗ ,λ),可以得到一组解(λ,u⃗ ,v⃗ ),具体求解算法类似于 1.2节中介绍的SVD
分解的迭代算法,对于某个缺失值xij,只需要计算λuivj,就估计得到某人对某种商品的潜在需求,从而进行推荐。

2.3 代替因子分析和对应分析

      未加指明时默认SVD分解中V的对角线元素是是左上到右下,按照元素平方从大到小排列的。
      假定大家熟悉因子分析(不懂的自行补脑^_^),因子分析分为R型因子分析和Q型因子分析,对于同一组样本,将两种分析结合起来,就是对应分析。

2.3.1 简单介绍因子分析模型

      因子分析主要思想是将观测指标或者观测样本视为某些隐藏的因素叠加而来的。比如样本矩阵X的p个指标,分别记为x⃗ i,i=1..px⃗ i是X的第i列。假设有r个隐藏因子记为Fj,j=1..r,建立如下模型:

x⃗ i=ui+aikFk+ei,i=1...p,k=1...r,eiN(0,ε),i=1pa2ik=1

ei噪音,aij是指标x⃗ i在隐藏因子Fj上的得分,并且要求cov(Fi,Fj)=0,ij
表述成矩阵形式,就有:
X=(x⃗ 1,x⃗ 2,...,x⃗ p)=U+(F1,F2...Fr)A+e=U+FA+e,ARrp

2.3.2 对比因子分析模型与SVD模型

     对照这个模型,重新审视SVD,假定X的值为k,选择r满足r<k。记u⃗ ii=1...ku⃗ i是U的第i列,对应v⃗ ii=1...kv⃗ ti是V的第i列,σii=1...kσiΣ的第i个对角线元素。重新用普分解的方式可以将X表示为

X=i=1kσiu⃗ iv⃗ ti=i=1rσiu⃗ iv⃗ ti+i=r+1kσiu⃗ iv⃗ ti

e=ki=r+1σiu⃗ iv⃗ ti
对照R型因子分析,记F=(σ1u⃗ 1,σ2u⃗ 2,...,σru⃗ r)=SV

模型比较总结如下:

A=V^t=(v⃗ 1,v⃗ 2,...v⃗ r)t,有FA=ri=1σiu⃗ iv⃗ ti,有X=FA+e,于是:

1、对应于因子分析中的因子得分pi=1a2ik=1,有v⃗ tiv⃗ i=1

2、对应于因子分析中的cov(Fi,Fj)=0,有

σiσju⃗ tiu⃗ j={0u2iififiji=j

3、对应于eiN(0,ε),有(ki=r+1σiu⃗ i)t(ki=r+1σiu⃗ i)=ki=r+1σ2i=ε

2.4分析总结

1.      可以看出,除了中心化的要求外,SVD分解与因子分析严格对应,而且SVD集R型和Q型分析两种分析于一体,是接近于对应分析的一种分析方案。
2.      更进一步,参照普分解理论,参考因子分析,对于某个样本的某个指标值xij,可以将SVD解理为:

xij=k=1rσkuikvkj+εij,i=1...n,j=1..p

3.      σk代表第k个隐藏因子的对指标得分的基准权重;uik代表第i个样本值对应第k个因子的得分;vkj代表第j个指标对应第k个因子的得分,绝对值较小特征值代表的隐藏因子视为噪音。

2.3.3分析总结

1.      可以看出,除了中心化的要求外,SVD分解与因子分析严格对应,而且SVD集R型和Q型分析两种分析于一体,是接近于对应分析的一种分析方案。
2.      更进一步,参照普分解理论,参考因子分析,对于某个样本的某个指标值xij,可以将SVD解理为:

xij=k=1rσkuikvkj+εij,i=1...n,j=1..p

3.      σk代表第k个隐藏因子的对指标得分的基准权重;uik代表第i个样本值对应第k个因子的得分;vkj代表第j个指标对应第k个因子的得分,绝对值较小特征值代表的隐藏因子视为噪音。

原创粉丝点击