买了一个域名如何做网站,wordpress 更改数据库密码,wordpress添加首页菜单,什么是网络营销总体环境因素前言
矩阵分解#xff08;Matrix Decomposition#xff09;是将一个矩阵分解成多个矩阵的乘积的过程#xff0c;这种分解方法在计算、机器学习和线性代数中有广泛应用。不同的分解方式可以简化计算、揭示矩阵的内在结构或提高算法的效率。
奇异值分解
奇异值分解#xf…前言
矩阵分解Matrix Decomposition是将一个矩阵分解成多个矩阵的乘积的过程这种分解方法在计算、机器学习和线性代数中有广泛应用。不同的分解方式可以简化计算、揭示矩阵的内在结构或提高算法的效率。
奇异值分解
奇异值分解Singular Value Decomposition, SVD是矩阵分解的一种重要形式它将一个任意的矩阵分解为三个矩阵的乘积从而揭示出原矩阵的内在结构。
对于任意一个m×n 的矩阵A它的奇异值分解可以表示为 其中
U 是一个 m×m 的正交矩阵称为左奇异向量矩阵。
V 是一个 n×n 的正交矩阵称为右奇异向量矩阵。
Σ 是一个 m×n 的对角矩阵其中对角线上的元素是矩阵 A 的奇异值其余元素为零。奇异值是非负实数按降序排列即 σ 1≥σ 2 ≥⋯≥σ r≥0其中σ r 是方阵的秩的根号值。
注正交矩阵Orthogonal Matrix是指一种特殊的方阵一个 n×n 的矩阵 Q 被称为正交矩阵如果它满足Q TQQQ T I其中Q T是 Q 的转置矩阵I 是n×n 的单位矩阵。
求解步骤
1.求矩阵。
2.求矩阵的特征值和特征向量正交化。
3.求奇异值特征值开方和正交矩阵。
4.求正交矩阵U。
实例
1.方阵的分解 代码实现
import torcha torch.Tensor([[3,1],[1,3]])
u,s,v torch.svd(a)
print(a)
print(u)
print(s)
print(v)
print(torch.svd(a))
运行结果
tensor([[3., 1.],[1., 3.]])
tensor([[-0.7071, -0.7071],[-0.7071, 0.7071]])
tensor([4., 2.])
tensor([[-0.7071, -0.7071],[-0.7071, 0.7071]])
torch.return_types.svd(
Utensor([[-0.7071, -0.7071],[-0.7071, 0.7071]]),
Stensor([4., 2.]),
Vtensor([[-0.7071, -0.7071],[-0.7071, 0.7071]])) 2.矩形阵的分解 代码实现
import torcha torch.Tensor([[4,0],[3,0],[0,5]])
u,s,v torch.svd(a)
print(a)
print(u)
print(s)
print(v)
print(torch.svd(a))运行结果
tensor([[4., 0.],[3., 0.],[0., 5.]])
tensor([[-0.8000, 0.0000],[-0.6000, 0.0000],[ 0.0000, -1.0000]])
tensor([5., 5.])
tensor([[-1., -0.],[-0., -1.]])
torch.return_types.svd(
Utensor([[-0.8000, 0.0000],[-0.6000, 0.0000],[ 0.0000, -1.0000]]),
Stensor([5., 5.]),
Vtensor([[-1., -0.],[-0., -1.]]))