欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习相关——svd分解 -ag凯发k8国际

发布时间:2024/10/8 编程问答 0 豆豆
ag凯发k8国际 收集整理的这篇文章主要介绍了 机器学习相关——svd分解 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

前面写了个简单的线性代数系列文章,目的就是让大家在接触svd分解前,先了解回忆一下线性代数的基本知识,有助于大家理解svd分解。不至于一下被大量的线性代数操作搞晕。这次终于开始正题——svd的介绍了。

所谓svd,就是要把矩阵进行如下转换:a = usvt

the columns of u are the eigenvectors of the aat matrix and the columns of v are the eigenvectors of the ata matrix. vt is the transpose of v and s is a diagonal matrix. by definition the nondiagonal elements of diagonal matrices are zero. the diagonal elements of s are a special kind of values of the original matrix. these are termed the singular values of a.


1 the frobenius norm

一个矩阵所有元素的平方和再开方称为这个矩阵的frobenius norm。特殊情况下,行矩阵的frobenius norm为该向量的长度

2 计算a转置 a*at at*a

 

3 计算s

  在svd中,将aat的特征值从大到小排列,并开方,得到的就是奇异值。

  比如上图中,特征值为40,10.因此奇异值为6.32,3.16。矩阵的奇异值有如下特性:

  a 矩阵的奇异值乘积等于矩阵行列式的值 6.32*3.16 = 20 = |a|

  b 矩阵a的 frobenius norm等于奇异值的平方和的开方

  总结一下计算s的步骤:1 计算at 和ata;2 计算ata的特征值,排序并开方。

  由此可以得到s,下面来看如何计算 u,vt

4  计算v和vt

  利用ata的特征值来计算特征向量

 

  既然刚才提到v就是特征向量的组合,那么

5 计算u

  a = usvt

  av = usvtv = us

  avs-1 = uss-1

  u = avs-1

  

  


6 计算svd

可以看出,svd可以对矩阵进行分解重建。

7 降维的svd

  如果我们只保留前k个最大的奇异值,前k列个u,前k行个v,相当于将数据中占比不大的噪音进行过滤,这样既可以有效地对数据进行泛化,又起到了降维减少运算量的目的。是不是很奇妙?

8 实际用途 

 我们实际的工作中,经常会用到这种降维方法。包括现在非常火的推荐问题,以及lsi问题都对svd有着广泛的应用。

 举个最常用的例子,在文本挖掘中:a就是 t (term) 行 d (document) 列的矩阵,每列是一篇文章,每行是一个单词,每个单元格的当前单词在当前文章里的出现次数。 u 是一个 t 行 r 列 的矩阵, v 是一个 r 行 d 列 的矩阵, s 是一个 r 行 r 列的对角矩阵。这里 r 的大小是 a的秩。那么u和v中分别是a的奇异向量,而s是a的奇异值。aa'的正交单位特征向量组成u,特征值组成s's,a'a的正交单位特征向量组成v,特征值(与aa'相同)组成ss'。

希望大家细细体会,多多交流,一起进步。

转载于:https://www.cnblogs.com/luchen927/archive/2012/01/19/2321934.html

总结

以上是ag凯发k8国际为你收集整理的机器学习相关——svd分解的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

网站地图