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

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

大家好,我是章北海


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


SVD 原理


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


有一个𝑚×𝑛的实数矩阵𝐴,我们想要把它分解成如下的形式:

640.png



其中𝑈和𝑉均为单位正交阵,即有和,𝑈称为左奇异矩阵,𝑉称为右奇异矩阵,Σ仅在主对角线上有值,我们称它为奇异值,其它元素均为0。

image.png


求解U, Σ, V


image.png

SVD算法



输入:样本数据


输出:左奇异矩阵,奇异值矩阵,右奇异矩阵


1 计算特征值:特征值分解,其中为原始样本数据

得到左奇异矩阵和奇异值矩阵

2 间接求部分右奇异矩阵:求

利用A=UΣ′V′可得

3 返回U, Σ′, V′,分别为左奇异矩阵,奇异值矩阵,右奇异矩阵。



Python 求解SVD


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)


>>> 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]])


# 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)


>>> 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.]])


# transform
T = U.dot(Sigma)
print(T)


>>> T
array([[-18.52157747,   6.47697214],
       [-49.81310011,   1.91182038],
       [-81.10462276,  -2.65333138]])


T = A.dot(VT.T)
print(T)


[[-18.52157747   6.47697214]
 [-49.81310011   1.91182038]
 [-81.10462276  -2.65333138]]


相关文章
|
4天前
|
人工智能
一键生成视频!用 PAI-EAS 部署 AI 视频生成模型 SVD 工作流(清晰的实例)
用 PAI-EAS 部署 AI 视频生成模型 SVD 工作流(清晰的实例)
172 2
|
4天前
|
人工智能 编解码 对象存储
一键生成视频,用 PAI-EAS 部署 AI 视频生成模型 SVD 工作流
本教程将带领大家免费领取阿里云PAI-EAS的免费试用资源,并且带领大家在 ComfyUI 环境下使用 SVD的模型,根据任何图片生成一个小短视频。
|
9月前
|
机器学习/深度学习 存储 资源调度
【机器学习实战】10分钟学会Python怎么用SVD奇异值分解进行降维分类(八)
【机器学习实战】10分钟学会Python怎么用SVD奇异值分解进行降维分类(八)
535 1
|
机器学习/深度学习 算法 Python
机器学习基础:用 Lasso 做特征选择
机器学习基础:用 Lasso 做特征选择
机器学习基础:用 Lasso 做特征选择
|
机器学习/深度学习 数据采集 算法
机器学习基础:令你事半功倍的pipeline处理机制
机器学习基础:令你事半功倍的pipeline处理机制
机器学习基础:令你事半功倍的pipeline处理机制
|
机器学习/深度学习 人工智能 资源调度
【机器学习】主成分分析(PCA)——利用奇异值分解(SVD)(理论+图解+公式推导)
【机器学习】主成分分析(PCA)——利用奇异值分解(SVD)(理论+图解+公式推导)
204 0
【机器学习】主成分分析(PCA)——利用奇异值分解(SVD)(理论+图解+公式推导)
|
机器学习/深度学习 数据采集 存储
机器学习基础
机器学习基础
107 0
|
机器学习/深度学习 算法 前端开发
机器学习实战:用 SVD 压缩图像(已上线)
机器学习实战:用 SVD 压缩图像(已上线)
机器学习实战:用 SVD 压缩图像(已上线)
|
机器学习/深度学习 数据可视化 算法
机器学习基础:可视化方式理解决策树剪枝
机器学习基础:可视化方式理解决策树剪枝
机器学习基础:可视化方式理解决策树剪枝

热门文章

最新文章