2020-10-10

随机奇异值分解:

问题描述:

矩阵分解是解决许多机器学习问题的强大工具,广泛应用于数据压缩、降维和稀疏学习等领域。在许多情况下,为了用低秩结构近似一个数据矩阵,奇异值分解(SVD)常常被证明是最佳选择。然而,对大数据矩阵(如8k×10k矩阵)精确有效的奇异值分解在计算上具有挑战性。为了解决这种情况下的奇异值分解问题,应用随机线性代数方法发展了许多算法。其中最重要的一种算法是随机奇异值分解算法,该算法对于分解任何秩较低的大矩阵都是非常有效的。

SVD公式:

在这里插入图片描述

其中矩阵U和V分别由左奇异向量和右奇异向量组成。Σ是奇异值的对角矩阵。
example


import numpy as np

A = np.array([[1, 3, 2],
              [5, 3, 1],
              [3, 4, 5]])
u, s, v = np.linalg.svd(A, full_matrices = 0)
print('Left singular vectors:')
print(u)
print()
print('Singular values:')
print(s)
print()
print('Right singular vectors:')
print(v)
print()

Left singular vectors:

[[-0.37421754 0.28475648 -0.88253894]
[-0.56470638 -0.82485997 -0.02669705]
[-0.7355732 0.48838486 0.46948087]]

Singular values:
[9.34265841 3.24497827 1.08850813]

Right singular vectors:
[[-0.57847229 -0.61642675 -0.53421706]
[-0.73171177 0.10269066 0.67383419]
[ 0.36051032 -0.78068732 0.51045041]]

In this case, the singular values are
9.3427, 3.2450, and 1.0885.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值