aihot  2017-10-11 22:22:22  机器学习 |   查看评论   

  所以我们就找到了一组正交基,经过A变换之后仍然是正交的。

  接下来我们将其单位化,因为:

 

  所以:

 

  单位化:

 

  可得:

 

  接下来:

 

 

  从而:

 

  即得:

SVD分解公式

  SVD的核心原理,就是任意一个M*N的矩阵A,都能被拆分成M*M的正交阵U、M*N的对角阵Σ、N*N的正交阵V'的乘积。VA'A的特征向量矩阵,ΣA'A的奇异值矩阵,至于U,每个Ui都是由A*Vi并单位化(除以对应奇异值)后得出的。

  而且如果A不满秩,那利用矩阵分块乘法就能对式子进行化简,就能找到A对应的满秩分解,A=XYX是M*K,Y是K*N,K为A的秩。

  前面讲了原理,下面讲SVD的应用,其实SVD除了基础应用之外还有拓展出来的RSVD与SVD++,这里不讲。

  SVD的第一个用途是用来简化数据(或者讲去除噪声),前面说的满秩分解实际上就是将M*N的Σ对角阵中对角线上的零元素分块出来与UV'K列/行之后的元素相乘使其总结果为零,这样就只剩下了M*K的X和K*N的Y。这样既然有些维度可以因为对应奇异值为零被完全去掉而不影响结果,那么我们也可以将一些对应奇异值小的维度去掉,只保留拥有高奇异值的维度,从而减少了大量维度但只损失很少的信息。

  SVD的第二个用途是在自然语言处理中,我在《数学之美》这本书上读到。我们用A矩阵来描述成千上万篇文章和几十上百万个词的关联性,A里面每一列是一篇文章,每一行代表一个词,对应位置上是这个词的加权词频(比如TF-IDF值),然后我们对A进行奇异值分解,分成这样:A=XBY,这里和前面的:A=XY的关联性在于,两式的X相同,第二式的Y等于第一式中的BYX是M*K,B是K*K,Y是K*N。

  
 

除特别注明外,本站所有文章均为 人工智能学习网 原创,转载请注明出处来自浅谈机器学习基础(下)

留言与评论(共有 0 条评论)
   
验证码: