Python机器学习笔记:奇异值分解(SVD)算法

完整代码及其数据,请移步小编的GitHub

传送门:请点击我

如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote

奇异值分解(Singular Value Decomposition,后面简称 SVD)是在线性代数中一种重要的矩阵分解,它不光可用在降维算法中(例如PCA算法)的特征分解,还可以用于推荐系统,以及自然语言处理等领域,在机器学习,信号处理,统计学等领域中有重要应用。

比如之前的学习的PCA,掌握了SVD原理后再去看PCA是非常简单的,因为我最近在整理学习线性代数基础,并温习了一遍特征值与特征向量,所以这里同时也温习一下SVD算法,如果想看我之前的PCA降维的文章,可以参考下面:

好了,话不多说,这里再对SVD算法做一个总结(这里总结主线是参考刘建平大佬和老师的网课视频学习,首先在这里提出感谢)

1,基变换与特征值分解

1.1 向量的表示与基变换

首先看看向量,向量可以表示为(3, 2),实际上表示线性组合:

Python机器学习笔记:奇异值分解(SVD)算法

Python机器学习笔记:奇异值分解(SVD)算法

基表示:(1, 0) 和 (0, 1) 叫做二维空间中的一组基。

一组基就确定了对向量进行表示的空间,而向量的表示就是基于这组基进行坐标表示。选定的基不同,空间自然不同,那么向量表示的坐标自然也不同。一般情况下,我们会默认传统的正交坐标系为标准的基选择,但其实对传统正交坐标系进行选择,放缩或剪切变换后得到的依然是一个坐标系。

Python机器学习笔记:奇异值分解(SVD)算法

基变换:数据与一个基做内积运算,结果作为第一个新的坐标分量,然后与第二个基做内积运算,结果作为第二个新坐标的分量。

将一组基A下的坐标转换成另一组集B下的坐标——核心思想就是将A中的基用B对应的坐标系进行表示,将该向量在A下的坐标表示变换成关于基A的线性组合,进行代换即可。

数据(3, 2)映射到基中坐标为:

Python机器学习笔记:奇异值分解(SVD)算法

Python机器学习笔记:奇异值分解(SVD)算法

1.2 特征值分解

首先回归下特征值和特征向量的定义,其定义如下:

Python机器学习笔记:奇异值分解(SVD)算法

其中A是一个 n * n 的矩阵,x 是一个 n 维向量,则我们说 λ 是矩阵A的一个特征值,而 x 是矩阵A的特征值 λ 所对应的特征向量。

求出特征值和特征向量有什么好处呢?就是我们可以将矩阵 A 特征分解。如果我们求出了矩阵 A 的 n 个特征值 λ1

Original: https://www.cnblogs.com/wj-1314/p/10304676.html
Author: 战争热诚
Title: Python机器学习笔记:奇异值分解(SVD)算法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/9587/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部