深度学习基础:线性代数(2)_奇异值分解及numpy、scipy实现

奇异值分解的意义

除了特征分解外,还有另一种分解的方法,称为奇异值分解(SVD),它可以将矩阵分解成奇异值奇异向量。相对特征分解来说,奇异值分解的应用更加广泛,每个实数矩阵都有一个奇异值分解,但不一定有特征分解。例如:非方阵的矩阵没有特征分解,但有奇异值分解。

奇异值分解

将矩阵分解成三个矩阵的乘积:

$$A = UDV^T$$

其中$A$是一个$m \times n$的矩阵,$U$是一个$m \times m$的矩阵,$D$是一个$m \times n$的矩阵,而$V$是一个$n \times n$的矩阵。而且$U$和$V$是正交矩阵,$D$是对角矩阵。

矩阵$D$对角线上的元素被称为矩阵$A$的奇异值,矩阵$U$的列向量称为左奇异向量,矩阵$V$的列向量称为右奇异向量

奇异值和奇异向量的含义

矩阵$A$的左奇异向量是$AA^T$的特征向量,矩阵$A$的右奇异向量是$A^TA$的特征向量,$A$的非零奇异值是矩阵$AA^T$或$A^TA$的特征值的平方根。

Python实现

Numpy

import numpy as np

A = np.array([[1,2,3,4],
            [5,6,7,8],
            [9,10,11,12]])
# 返回三个矩阵
np.linalg.svd(A)

Scipy

import numpy as np
import scipy as sp
from scipy import linalg

A = np.array([[1,2,3,4],
            [5,6,7,8],
            [9,10,11,12]])
# 返回奇异值
print(linalg.svdvals(A))
# 返回三个矩阵
print(linalg.svd(A))
上一篇 深度学习基础:线性代数(1)_特征分解及numpy、scipy实现
下一篇 深度学习基础:线性代数(3)_逆矩阵与伪逆矩阵
目录
文章列表
1 7个IntelliJ IDEA必备插件,提高编码效率
7个IntelliJ IDEA必备插件,提高编码效率
2
React Native学习之开源Tab导航组件react-native-tab-navigator
React Native学习之开源Tab导航组件react-native-tab-navigator
3
使用Docker部署Spring Cloud项目
使用Docker部署Spring Cloud项目
4
推荐几个基于Spring Boot开发的CMS系统
推荐几个基于Spring Boot开发的CMS系统
5
Android接入Firebase推送不执行onMessageReceived方法
Android接入Firebase推送不执行onMessageReceived方法
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。