机器学习(十五)SVD(特征值分解和奇异值分解的区别)


首先从意义上理解:

数学解释:https://blog.csdn.net/u010099080/article/details/68060274

相关概念

参考自维基百科。

  • 正交矩阵:若一个方阵其行与列皆为正交的单位向量,则该矩阵为正交矩阵,且该矩阵的转置和其逆相等。两个向量正交的意思是两个向量的内积为 0
  • 正定矩阵:如果对于所有的非零实系数向量 zz,都有 zTAz>0zTAz>0,则称矩阵 AA 是正定的。正定矩阵的行列式必然大于 0, 所有特征值也必然 > 0。相对应的,半正定矩阵的行列式必然 ≥ 0。

作者:赵文和
链接:https://www.zhihu.com/question/19666954/answer/54788626
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

首先,矩阵可以认为是一种线性变换,而且这种线性变换的作用效果与基的选择有关。

以Ax = b为例,x是m维向量,b是n维向量,m,n可以相等也可以不相等,表示矩阵可以将一个向量线性变换到另一个向量,这样一个线性变换的作用可以包含旋转缩放投影三种类型的效应。

奇异值分解正是对线性变换这三种效应的一个析构。
A=\mu \Sigma \sigma ^{T}\mu\sigma是两组正交单位向量,\Sigma是对角阵,表示奇异值,它表示我们找到了\mu\sigma这样两组基,A矩阵的作用是将一个向量从\sigma这组正交基向量的空间旋转\mu这组正交基向量空间,并对每个方向进行了一定的缩放,缩放因子就是各个奇异值。如果\sigma维度比\mu大,则表示还进行了投影。可以说奇异值分解将一个矩阵原本混合在一起的三种作用效果,分解出来了。

特征值分解其实是对旋转缩放两种效应的归并。(有投影效应的矩阵不是方阵,没有特征值)
特征值,特征向量由Ax=\lambdax得到,它表示如果一个向量v处于A的特征向量方向,那么Av对v的线性变换作用只是一个缩放。也就是说,求特征向量和特征值的过程,我们找到了这样一组基,在这组基下,矩阵的作用效果仅仅是存粹的缩放。对于实对称矩阵,特征向量正交,我们可以将特征向量式子写成A=x\lambda x^{T},这样就和奇异值分解类似了,就是A矩阵将一个向量从x这组基的空间旋转到x这组基的空间,并在每个方向进行了缩放,由于前后都是x,就是没有旋转或者理解为旋转了0度。

总结一下,特征值分解和奇异值分解都是给一个矩阵(线性变换)找一组特殊的基,特征值分解找到了特征向量这组基,在这组基下该线性变换只有缩放效果。而奇异值分解则是找到另一组基,这组基下线性变换的旋转、缩放、投影三种功能独立地展示出来了。我感觉特征值分解其实是一种找特殊角度,让旋转效果不显露出来,所以并不是所有矩阵都能找到这样巧妙的角度。仅有缩放效果,表示、计算的时候都更方便,这样的基很多时候不再正交了,又限制了一些应用。


链接:奇异值分解

链接:https://blog.csdn.net/Dark_Scope/article/details/53150883

一开始说到隐约记得当时时间PCA的时候用到了SVD,但通过上面的推到我们发现需要的是特征值分解,这又是怎么回事呢? 
首先来看SVD的解释:奇异值分解

X=UΣV,X=UΣV∗, 
其中U是m×m阶酉矩阵;Σ是m×n阶非负实数对角矩阵;而V*,即V的共轭转置,是n×n阶酉矩阵。这样的分解就称作X的奇异值分解

并且:

在矩阵M的奇异值分解中 
X=UΣV,X=UΣV∗, 
1. VV的列(columns)组成一套对 XX的正交”输入”或”分析”的基向量。这些向量是 XTXXTX的特征向量。 
2. UU的列(columns)组成一套对 XX的正交”输出”的基向量。这些向量是XXTXXT的特征向量。 
3. ΣΣ对角线上的元素是奇异值,可视为是在输入与输出间进行的标量的”膨胀控制”。这些是XXTXXTXTXXTX的特征值的非零平方根,并与U和V的行向量相对应。


特征值用来描述方阵,可看做是从一个空间到自身的映射,这也表现在了名字eigenvalue中。奇异值可以描述长方阵或奇异矩阵,可看做是从一个空间到另一个空间的映射。

特征值和奇异值都可用于分解矩阵,分解式长得像。两种分解的关系可以看下面的维基链接[1](知乎没法打公式)。因为这种关系


特征值用来描述方阵,可看做是从一个空间到自身的映射,这也表现在了名字eigenvalue中。奇异值可以描述长方阵或奇异矩阵,可看做是从一个空间到另一个空间的映射。

特征值和奇异值都可用于分解矩阵,分解式长得像。两种分解的关系可以看下面的维基链接[1](知乎没法打公式)。因为这种关系



作者:匿名用户
链接:https://www.zhihu.com/question/19666954/answer/12581983
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



  • 18
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
在Python中,可以使用NumPy库的svd函数进行奇异值分解。使用该函数,可以将一个矩阵分解为三个矩阵:左奇异矩阵U,奇异值矩阵S和右奇异矩阵V的转置。 奇异值分解是一种在机器学习领域广泛应用的算法。它不仅可以用于降维算法中的特征分解,还可以应用于推荐系统、自然语言处理等领域。奇异值分解的原理是将一个矩阵分解为三个矩阵的乘积,其中奇异值矩阵Σ只有主对角线上有非零元素,其余元素均为零。 在Python中,奇异值分解可以通过调用NumPy库的svd函数来实现。该函数接受一个矩阵作为输入,并返回三个矩阵:左奇异矩阵U、奇异值矩阵S和右奇异矩阵V的转置。其中,奇异值矩阵S是一个对角矩阵,对角线上的元素就是矩阵的奇异值。 可以使用NumPy库的svd函数来实现奇异值分解,如下所示: import numpy as np def svd(M): u, s, v = np.linalg.svd(M) return u, s, v 其中,M是一个numpy矩阵,函数返回左奇异矩阵U、奇异值矩阵S和右奇异矩阵V的转置。可以根据需要使用这些矩阵进行进一步的计算和分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【SVD奇异值分解)】详解及python-Numpy实现](https://blog.csdn.net/weixin_43821215/article/details/126003959)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值