前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >机器学习基础:奇异值分解(SVD)

机器学习基础:奇异值分解(SVD)

作者头像
统计学家
发布于 2022-05-26 06:57:32
发布于 2022-05-26 06:57:32
65500
代码可运行
举报
运行总次数:0
代码可运行

大家好,我是章北海

废话少说,极简介绍奇异值分解(SVD)

SVD 原理

奇异值分解(Singular Value Decomposition)是线性代数中一种重要的矩阵分解,也是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。

Python 求解SVD

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from numpy import array
from numpy import diag
from numpy import zeros
from scipy.linalg import svd
# define a matrix
A = array([
 [1,2,3,4,5,6,7,8,9,10],
 [11,12,13,14,15,16,17,18,19,20],
 [21,22,23,24,25,26,27,28,29,30]])
print(A)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> A
array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],
       [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
       [21, 22, 23, 24, 25, 26, 27, 28, 29, 30]])
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Singular-value decomposition
U, s, VT = svd(A)
# create m x n Sigma matrix
Sigma = zeros((A.shape[0], A.shape[1]))
# populate Sigma with n x n diagonal matrix
Sigma[:A.shape[0], :A.shape[0]] = diag(s)
# select
n_elements = 2
Sigma = Sigma[:, :n_elements]
VT = VT[:n_elements, :]
# reconstruct
B = U.dot(Sigma.dot(VT))
print(B)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> B
array([[ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.],
       [11., 12., 13., 14., 15., 16., 17., 18., 19., 20.],
       [21., 22., 23., 24., 25., 26., 27., 28., 29., 30.]])
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# transform
T = U.dot(Sigma)
print(T)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> T
array([[-18.52157747,   6.47697214],
       [-49.81310011,   1.91182038],
       [-81.10462276,  -2.65333138]])
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
T = A.dot(VT.T)
print(T)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[-18.52157747   6.47697214]
 [-49.81310011   1.91182038]
 [-81.10462276  -2.65333138]]

参考: https://www.cnblogs.com/pinard/p/6251584.html https://www.cnblogs.com/endlesscoding/p/10033527.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于奇异值分解(SVD)的图片压缩实践
数字图片在计算机中是以矩阵形式存储的。所以可以通过矩阵理论和矩阵算法对数字图像进行分析和处理。本文通过对图片进行SVD压缩,对不同的参数下的压缩效果进行对比。
Michael阿明
2020/07/13
2.4K0
奇异值分解(Singular Value Decomposition,SVD)
Am×n=UΣVTUUT=ImVVT=InΣ=diag(σ1,σ2,...,σp)σ1≥σ2≥...≥σp≥0p=min⁡(m,n)A_{m \times n} = U \Sigma V^T\\ UU^T=I_m\\ VV^T=I_n\\ \Sigma=diag(\sigma_1,\sigma_2,...,\sigma_p) \\ \sigma_1\ge \sigma_2 \ge...\ge\sigma_p \ge0\\ p=\min(m,n)Am×n​=UΣVTUUT=Im​VVT=In​Σ=diag(σ1​,σ2​,...,σp​)σ1​≥σ2​≥...≥σp​≥0p=min(m,n)
Michael阿明
2020/07/13
1.4K0
数据科学中必须知道的5个关于奇异值分解(SVD)的应用
这听起来是不是很熟悉?我经常听到我大学的熟人抱怨他们花了很多时间的代数方程在现实世界中基本没用。
磐创AI
2019/08/29
6.2K0
数据科学中必须知道的5个关于奇异值分解(SVD)的应用
30分钟学会SVD矩阵分解
SVD(Singular Value Decomposition)奇异值分解分解是机器学习中最重要的矩阵分解方法。
lyhue1991
2020/07/20
2.2K0
30分钟学会SVD矩阵分解
机器学习笔记之矩阵分解 SVD奇异值分解
奇异值分解(singular value decomposition)是线性代数中一种重要的矩阵分解,在生物信息学、信号处理、金融学、统计学等领域有重要应用,SVD都是提取信息的强度工具。
Jetpropelledsnake21
2021/03/04
1.4K0
机器学习笔记之矩阵分解 SVD奇异值分解
复现经典:《统计学习方法》​第17章 潜在语义分析
为输入,其中每一行对应一个单词,每一列对应一个文本,每一个元素表示单词在文本中的频数或权值(如TF-IDF)
黄博的机器学习圈子
2020/06/09
6580
复现经典:《统计学习方法》第15章 奇异值分解
本章代码来源:https://github.com/hktxt/Learn-Statistical-Learning-Method
黄博的机器学习圈子
2020/06/09
3650
简单易学的机器学习算法——SVD奇异值分解
一、SVD奇异值分解的定义 image.png 二、SVD奇异值分解与特征值分解的关系     特征值分解与SVD奇异值分解的目的都是提取一个矩阵最重要的特征。然而,特征值分解只适用于方阵,而SVD奇
felixzhao
2018/03/15
9170
简单易学的机器学习算法——SVD奇异值分解
算法系列-----矩阵(九)-------------矩阵SVD---奇异值分解
这个概念如果不懂,我觉得去维基百科看看最好, 地址:http://zh.wikipedia.org/wiki/奇异值分解 我这里也是引用别人的测试,调用了别人的包,给大家看看 /************************************************************************* * Compilation: javac -classpath .:jama.jar SVD.java * Execution: java -classpath .:j
wust小吴
2022/03/04
3600
NumPy之:多维数组中的线性代数
多维数据的线性代数通常被用在图像处理的图形变换中,本文将会使用一个图像的例子进行说明。
程序那些事
2021/07/29
1.9K0
Using truncated SVD to reduce dimensionality使用截断奇异值进行降维
Truncated Singular Value Decomposition (SVD) is a matrix factorization technique that factors a matrix M into the three matrices U, Σ, and V. This is very similar to PCA, excepting that the factorization for SVD is done on the data matrix, whereas for PCA, the factorization is done on the covariance matrix. Typically, SVD is used under the hood to find the principle components of a matrix.
到不了的都叫做远方
2019/11/03
2.4K0
入门 | 奇异值分解简介:从原理到基础机器学习应用
选自machinelearningmastery 作者:Jason Brownlee 机器之心编译 参与:Panda 矩阵分解在机器学习应用中的重要性无需多言。本文对适用范围很广的奇异值分解方法进行了介绍,并通过代码演示说明了其工作方式、计算方法及其常见的几种基础应用。 矩阵分解也叫矩阵因子分解,涉及到用给定矩阵的组成元素描述该矩阵。 奇异值分解(SVD)可能是最著名和使用最广泛的矩阵分解方法。所有矩阵都有一种 SVD 方法,这使得其比特征分解(eigendecomposition)等其它方法更加稳定。因此
机器之心
2018/05/09
1.5K0
入门 | 奇异值分解简介:从原理到基础机器学习应用
【生物信息学】奇异值分解(SVD)
SVD分解核心思想是通过降低矩阵的秩来提取出最重要的信息,实现数据的降维和去噪。
Qomolangma
2024/07/30
2180
【生物信息学】奇异值分解(SVD)
【技术分享】奇异值分解
  在了解特征值分解之后,我们知道,矩阵A不一定是方阵。为了得到方阵,可以将矩阵A的转置乘以该矩阵。从而可以得到公式:
腾讯云TI平台
2020/03/25
8880
机器学习虾扯蛋之SVD奇异值分解No.48
机器学习说难不难,说简单也不简单。跟着小蕉有饭吃。 今天分享的是机器学习里面一个寻找主要成分的算法,SVD (Singularly Valuable Decomposition) 奇异值分解。 首先寻
大蕉
2018/02/05
7290
机器学习虾扯蛋之SVD奇异值分解No.48
数据降维:特征值分解和奇异值分解的实战分析
《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来! 01 — 回顾 这几天推送了关于机器学习数据预处理之降维算法,介绍了通过降维提取数据的主成分的背景,特征值分解法,奇异值分解法的相关原理。 现在我们再回顾下这些问题,首先,提取主成分的必要性,从数字信号的角度分析,主成分时方差较大,称为信号,而噪声是方差较小的;极限讲,如果100个样本点都汇集成一个点,也就是方差为0,那么不就相当于我们手上有1个
double
2018/04/02
1.6K0
数据降维:特征值分解和奇异值分解的实战分析
奇异值分解 SVD 的数学解释
本文介绍了奇异值分解(SVD)在机器学习和深度学习领域中的应用,包括图像压缩、去噪、降维等方面。SVD是一种矩阵分解方法,能够将矩阵分解为三个矩阵的乘积,从而可以用于计算图像压缩、去噪、降维等任务中的奇异值。同时,SVD也可以用于深度学习中的特征值分解,从而帮助机器学习算法更好地理解数据。
Alan Lee
2018/01/02
1.5K0
奇异值分解 SVD 的数学解释
机器学习Python实现 SVD 分解
其实SVD意义就是利用特征空间的转换进行数据的映射,后面将专门介绍SVD的基础概念,先给出python,这里先给出一个简单的矩阵,表示用户和物品之间的关系
py3study
2020/01/10
1.3K0
奇异值分解(SVD)原理与在降维中的应用
    奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。本文就对SVD的原理做一个总结,并讨论在在PCA降维算法中是如何运用运用SVD的。
刘建平Pinard
2018/08/14
6900
奇异值分解(SVD)原理与在降维中的应用
【机器学习】在向量的流光中,揽数理星河为衣,以线性代数为钥,轻启机器学习黎明的瑰丽诗章
在正式踏入机器学习的实战领域前,我们需要为自己筑起一座坚实的数学地基。 对于零基础的学习者而言,数学听起来也许陌生甚至有点“吓人”。然而,不必惧怕:本篇文章将带你从最直观的概念出发,帮助你理解和掌握线性代数这门支撑机器学习大厦的重要支柱。
半截诗
2025/01/09
1690
推荐阅读
相关推荐
基于奇异值分解(SVD)的图片压缩实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验