机器学习算法:奇异值分解SVD

一、奇异值分解SVD讲解

1、奇异值分解SVD介绍

奇异值分解SVD(Singular Value Decomposition)是线性代数中一种非常重要的矩阵分解方法。在SVD中,一个m×n的矩阵A可以被分解为三个矩阵的乘积:

(1)左奇异向量(U)

U 是一个 m×m 的矩阵。U的列向量是矩阵A作用下输入空间的正交基。矩阵A作用于这些向量后,会沿着这些基的方向进行拉伸或压缩。U矩阵确保了变换前后保持列空间的正交性,相当于在输入空间进行了一个正交旋转。

(2)奇异值(Σ)

Σ 是一个 m×n 的对角矩阵,对角线上的元素是非负实数,称为矩阵A的奇异值,记作σ_1, σ_2, ..., σ_min(m,n),按照非递减顺序排列。非对角元素都是0。对角线上的非零元素σ_i表示矩阵A在不同方向上的拉伸因子。大值的σ_i对应于矩阵的主要特征或最重要的方向,而小值的σ_i对应于次要特征或噪声。

(3)右奇异向量(V)

V 是一个 n×n矩阵,V的列向量是矩阵A作用后输出空间的正交基。

奇异值分解在多个领域都有广泛的应用,例如:

- 数据压缩和降维:通过保留最大的几个奇异值和对应的奇异向量,可以近似重构矩阵,常用于主成分分析(PCA)和图像压缩。

- 矩阵求逆和求解线性方程组:奇异值分解可以用来稳定地计算矩阵的逆,尤其当矩阵接近奇异或病态时。

- 机器学习:SVD在推荐系统中用于协同过滤算法。

- 信号处理:用于信号的谱分析和滤波。

2、矩阵U求解

因为矩阵A是一个m x n矩阵,A^T是一个n x m的矩阵,所以将A和A的转置相乘,会得到一个m x m的方阵, 这时可以进行特征分解,得到特征向量和特征值,如下所示:

 通过计算可以得到(A^T)(A)的m个特征值对应的m个特征向量U。

3、矩阵V求解

因为A^T是一个n x m的矩阵,矩阵A是一个m x n矩阵,所以将A的转置和A相乘,会得到一个n x n的方阵, 这时可以进行特征分解,得到特征向量和特征值,如下所示:

4、矩阵Σ求解

利用特征值矩阵等于奇异值矩阵的平方,可以求出每个奇异值:

5、奇异值SVD求解的案例

设矩阵A = [

[1,  2],

[3,  4]

]

试求其SVD。

步骤-1:计算(A^T)*A

分析各个矩阵的维度:A为2 x 2维度 ;A^T为2x2维度;(A^T)*A2x2维度;为Σ为2x2维度;U为2x2维度;V^T2x2维度。

import numpy as np

# 定义两个矩阵

AT = np.array([[1, 3], [2,4]])

A  = np.array([[1, 2], [3,4]])

# 使用numpy的dot函数进行矩阵乘法

ATA = np.dot(AT, A)

print(ATA)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字化与智能化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值