Collaborative Filtering 协同过滤小结 part-2:SVD

来源:互联网 发布:照片缩小软件手机 编辑:程序博客网 时间:2024/06/13 13:00

  接下来介绍下SVD

基于SVD方法的CF

  SVD-CF是应用最广也最成功的协同过滤方法,现在对SVD介绍下。

基本SVD方法

  1) 已知矩阵An,m,如何最大限度地保留信息地近似估计。
  Singular Value Decomposition给出了一种矩阵分解的方法。
  

An,m=Un,nΣn,nVTm,n

  Σ=diag(σ1,σ2,σ3,...,σn); σ1σ2σ3...σrσr+1=...=σn=0
  2) 正交性质:V1=VT; UTU=VTV=I;U1=UT;
  正交矩阵映射保持距离不变,所以是一个保距映射
  从分解可以理解为,任何一个点,都可以由同维度内两个正交系的乘积表示。
  3) F-2阶范数:||A||2F=[nij|ai,j|2]=σ21+σ22+σ23+...+σ2r
  若
A^=Un,kΣk,kVTm,k
  则
minrank(B)=k||AB||2F=||AA^||2F=σ2k+1+σ2k+2+,...,+σ2n
  (上面这个是理解SVD在工程中寻优方法的关键。构造k秩的矩阵B,使得满足最小化F-2阶范数||AB||2F,则可以逼近于A^。)
  那么,我们可以取top-K秩,来估计矩阵A。
  取top-K秩,还可以实现降噪取主要部分的功能。
  
  ## 与特征值的关系 ##
  U的列向量是AAT的特向。
  V的列向量是ATA的特向。

直观理解SVD

  换个角度,理解下SVD分解。
  1) 对矩阵An,m,可以看做是m维空间内的一个线性变换。
  选择同空间内一组正交的单位基底{vi}
  则可以通过线性变换A,将{vi}投射到另外一组基底表示的空间去,得{Avi}
  若令投射空间的单位基底为{ui},则有
  

Avi=σiuiσiσi=|Avi|

  2) 任意向量x由基底{vi}表示如下:x=ri=1<vi,xi>vi
  经过A线性变换后:
  Ax=Ari=1<vi,xi>vi
    =ri=1A<vi,xi>vi
    =ri=1AvTixivi
    =ri=1vTixiAvi
    =ri=1vTixiσiui
    =ri=1uiσivTixi
  可以得到:A=U[σ]VT
  A[v1,v2,...,vk]=[σ1u1,σ2u2,...,σk,uk]
  此时,只知道v是正交的,两边同乘以VT,也可以得到A=U[σ]VT
  
A=U[σ]VT

  3) ui之间是什么关系呢?
  <Avi,Avk>=(Avi)T(Avk)=vTiAT(Avk)=<vi,ATAvk>
  notice 若取viATA的特征向量。对称矩阵的不同非零特值的特向是正交的。
  则上式=vTiATAvk=vTiλkvk=λkvTivk=0
  由投射关系可得:
  <Avi,Avk>=<σiui,σkuk>=(σiui)T(σkuk)=σiσk<ui,uk>
  所以<ui,uk>=0,即{ui}也是正交的,在vATA的特向时。
  所以σi=|Avi|=λi;:|Avi|2F=k(λivi,k)2=λivTivi
  且A可以表示为:
  
A=U[λ]VT

  于是我们可以找到两组正交基底,满足条件,what a happy life。
  对其中一组基底{v} 经过线性变换A,投射到新的正交基底下,表示为λivi,其中 λATA的特值。
  

Avi=λiui

  
λATAvATAuAAT

  到此表明:任意的矩阵A可以分解成三个矩阵,V表示ori-domain内的一组标准正交基,λ表示vu中的对应向量之间的数量关系(拉伸了多少倍),U表示经过A线性变换后,co-domain内的一组标准正交基。

reference

  1. Using Linear Algebra for Intelligent Information Retrieval
  2. http://charleshm.github.io/2016/03/Singularly-Valuable-Decomposition/
  3. http://www.ams.org/samplings/feature-column/fcarc-svd
  4. http://blog.sciencenet.cn/blog-696950-699432.html
1 0
原创粉丝点击