看书和bilibili的视频都很难找到关于SVD的形象化解释,好在
https://www.youtube.com/watch?v=P5mlg91as1cwww.youtube.com这个视频做到了,最近正好还在看这个哥哥的图算法课程
先说SVD的概念,公式:
其中:
![facac09d9042fd9aa52f154c5b860467.png](https://i-blog.csdnimg.cn/blog_migrate/07146b5f74780edb97deb4ac8ac9d6cd.jpeg)
接下去是一个图形分解例子,可以有两种表达方式:
![6b2afd819b7303a92e52262ad8378f48.png](https://i-blog.csdnimg.cn/blog_migrate/b035551b12a61b8e1f5d15540a17926c.jpeg)
![b713937e4267a17c388e91b8dd1324b5.png](https://i-blog.csdnimg.cn/blog_migrate/03a8ebee28dcb8f26272ba48fb8bbbd1.jpeg)
一些SVD 的性质:
总可以找到实数矩阵A的奇异值分解式子,并且:
1.
2.
3.
![b52a488fb3b778943eb18a329701c196.png](https://i-blog.csdnimg.cn/blog_migrate/a8ab2361e76707723033ca8ffdaf7ff7.jpeg)
通过例子来理解
接下去就是一个UserToMovice的例子,个人觉得非常直观,易于理解
行代表用户,列代表电影,数字代表评分
![dbb453ef72c8f2c14fb71c3c0ac5b148.png](https://i-blog.csdnimg.cn/blog_migrate/2a532078f4d95cbc27fc7d92b5863a22.jpeg)
可以看到,矩阵的左上角和右下角可以呈现出2个团,左上角的可以理解成sifi电影section,右下角可以理解成是romance 。
我们对这个矩阵进行奇异值分解,就可以得到如下结果:
我们怎么理解这些呢?
![b555d9503b684837f595dbf28a61220a.png](https://i-blog.csdnimg.cn/blog_migrate/52d3730167413da764abbfba398389c9.jpeg)
U矩阵可以理解为,用户到电影类型的矩阵,第一列和第二列我们可以分别理解为sici concept和 romance concept.(第三个特征值较小我们就先忽略不计),可以进一步理解为,前四个用户对于sici 的表现较强,后三个用户对于romance 电影的表现较强
同理可以理解sigma矩阵
![28e2030bc0f9b34abf63fdd32f2d10ec.png](https://i-blog.csdnimg.cn/blog_migrate/808930ca7b6b80e9db77c9e50ad81c4e.jpeg)
V可以理解为是电影到概念的相似矩阵,(前三个电影与sicix相关性较高。)
![62969fa86ab65721db821d85cb96ad02.png](https://i-blog.csdnimg.cn/blog_migrate/01de0560d592489c20e712dbd0231636.jpeg)
![44a26660e23cdb866d106257d707780a.png](https://i-blog.csdnimg.cn/blog_migrate/4b92d052239ce35ff79da1795b61f1a2.jpeg)
SVD用于降维
- SVD可以找到均方误差最小的坐标将数据点投射上去(MAE既视感。。。)
![5bf59ff42816360ab38f3dcb63801b93.png](https://i-blog.csdnimg.cn/blog_migrate/859312d55374e6de1e40638dfe6516bd.jpeg)
用刚刚用户电影评分作为例子的话
![77fcae5432b898ca477a90d680d147bc.png](https://i-blog.csdnimg.cn/blog_migrate/e23b5f832cb3bb5900726867faffe8b5.jpeg)
我们特征值中,第一个值可以理解成方差最大的坐标轴,第二个会稍稍一些
![8662f339a2951a7d0404ed4aae191593.png](https://i-blog.csdnimg.cn/blog_migrate/c851aa1548e7fe7e18035e099a3b2049.jpeg)
对于左半部分U*Sigma<我们可以理解为,这个式子给出了在转换坐标轴上的投影.
![0340ad4695d8329b481c6bfe27f3cd7d.png](https://i-blog.csdnimg.cn/blog_migrate/182fc3ebb486ef794fe719691d22b93d.jpeg)
那么对于数据的维度降维到底是怎么做到的呢?
对于不显著的特征值,将其变为0,于是就得到了一个原矩阵的近似矩阵
![84ddafd7db674e9d7322a4cd5e6f1eb4.png](https://i-blog.csdnimg.cn/blog_migrate/d237308fe2f67576addbb3038c321f64.jpeg)
![cc1613c864a5e2cee3f886a397131def.png](https://i-blog.csdnimg.cn/blog_migrate/36a74f8c335d2184caac9475bb49d098.jpeg)
可以用Frobenius来判断近似的好坏程度
![3fc7b524272093ec416e8246b04bf7ab.png](https://i-blog.csdnimg.cn/blog_migrate/ec5509bffd42cd3eab529901248c71a0.jpeg)
![456df95f5b0d2ba2b55f5cf377b936e6.png](https://i-blog.csdnimg.cn/blog_migrate/51457783fa2d3597c1ac088e47f860f7.jpeg)
![ce27b40c052cad1a9f3a83f6b33d9e4c.png](https://i-blog.csdnimg.cn/blog_migrate/9cae30931ceb56d00d51ec7ce4c773f2.jpeg)
结论与Case Study
最后是一个刚刚影评用户关系矩阵的例子,我们怎么使用SVD呢?
比如我们一个很喜欢Matrix,我们怎么知道和他相似的其他人呢?
![6f87c66a262b1db1bf1d76aa5665b20a.png](https://i-blog.csdnimg.cn/blog_migrate/99c6f723c2dce46add4e80bd33aaf94d.jpeg)
![016c9ed3974051ae5fca5dbc371bab0b.png](https://i-blog.csdnimg.cn/blog_migrate/ab52a867f4519126e93fd9cae5328757.jpeg)
可以发现2个用户在原矩阵的相似度为0,但是在特征矩阵上特征相似度变高了
![6206bece8992f2a06e2a25851d3da118.png](https://i-blog.csdnimg.cn/blog_migrate/8ca3fcb7082f5f53f39f613758a94ef4.jpeg)
![8af3ef1aa87b22b2e6f4179a316d01aa.png](https://i-blog.csdnimg.cn/blog_migrate/ddb6306bcc817ce65904b4d09400e995.jpeg)
![df97e73f0e6c4f9adb380ae5b3fd28b5.png](https://i-blog.csdnimg.cn/blog_migrate/095b2a34561d94b6f9059354b8a8bf5b.jpeg)
最后,奇异值分解与特征分解的区别:
![c63a21d2b8d823cab009bd31c7eb8581.png](https://i-blog.csdnimg.cn/blog_migrate/73676b32444479889b7800cfd40c6fa3.jpeg)
最后总结了SVD的几个缺点:
- 可解释性较差,不是所有解释性都像电影类型这么好分类
- 不是稀疏的,稀疏的输入会被密集表达
![fa9ffa38b7b4726998dedb52e89c3936.png](https://i-blog.csdnimg.cn/blog_migrate/8ec2ddf6d5dda80edead9830f570d823.jpeg)