机器学习 | SVD矩阵分解算法,对矩阵做拆分,然后呢?

本文介绍了SVD(奇异值分解)算法,这是一种线性代数方法,用于矩阵拆分和信息提取。SVD在机器学习中应用于推荐系统、搜索引擎和数据压缩等领域。文章详细阐述了SVD的数学推导、用途,并指出其与PCA算法的关系。最后,展示了使用numpy库实现SVD的代码示例。
摘要由CSDN通过智能技术生成

本文始发于个人公众号:TechFlow,原创不易,求个关注


今天是机器学习专题第28篇文章,我们来聊聊SVD算法。

SVD的英文全称是Singular Value Decomposition,翻译过来是奇异值分解。这其实是一种线性代数算法,用来对矩阵进行拆分。拆分之后可以提取出关键信息,从而降低原数据的规模。因此广泛利用在各个领域当中,例如信号处理、金融领域、统计领域。在机器学习当中也有很多领域用到了这个算法,比如推荐系统、搜索引擎以及数据压缩等等。


SVD简介


我们假设原始数据集矩阵D是一个mxn的矩阵,那么利用SVD算法,我们可以将它分解成三个部分:

D = U Σ V T D = U \Sigma V^T D=UΣVT

这三个矩阵当中U是一个m x n的矩阵, Σ \Sigma Σ是一个m x n的对角矩阵,除了对角元素全为0,对角元素为该矩阵的奇异值。V是一个n x n的矩阵。U和V都是酉矩阵,即满足 U T U = I , V T V = I U^TU = I, V^T V = I UTU=I,VTV=I。也就是它乘上它的转置等于单位对角矩阵。

我们可以看下下图,从直观上感知一下这三个矩阵。

下面我们来简单推导一下SVD的求解过程,看起来很复杂,概念也不少,但是真正求解起来却并不难。会需要用到矩阵特征值分解的相关概念,如果不熟悉的同学可以先看下线性代数专题相关内容做个回顾:

线性代数精华——矩阵的特征值与特征向量

首先,如果我们计算 A T A A^TA ATA可以得到一个n x n的方阵。对于方阵我们可以对它进行特征分解,假设得到特征值是 λ i \lambda_i λi,特征向量是 v i v_i vi,代入特征值的性质可以得到:

( A T A ) v i = λ i v i (A^TA)v_i = \lambda_i v_i (ATA)vi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值