奇异值分解 SVD 的数学解释

奇异值分解(Singular Value Decomposition,SVD)是一种矩阵分解(Matrix Decomposition)的方法。除此之外,矩阵分解还有很多方法,例如特征分解(Eigendecomposition)、LU分解(LU decomposition)、QR分解(QR decomposition)和极分解(Polar decomposition)等。这篇文章主要说下奇异值分解,这个方法在机器学习的一些算法里占有重要地位。

相关概念

参考自维基百科。

  • 正交矩阵:若一个方阵其行与列皆为正交的单位向量,则该矩阵为正交矩阵,且该矩阵的转置和其逆相等。两个向量正交的意思是两个向量的内积为 0
  • 正定矩阵:如果对于所有的非零实系数向量 zz,都有 zTAz>0z^TAz>0,则称矩阵 AA 是正定的。正定矩阵的行列式必然大于 0, 所有特征值也必然 > 0。相对应的,半正定矩阵的行列式必然 ≥ 0。

定义

下面引用 SVD 在维基百科中的定义

In linear algebra, the singular value decomposition (SVD) is a factorization of a real or complex matrix. It is the generalization of the eigendecomposition of a positive semidefinite normal matrix (for example, a symmetric matrix with positive eigenvalues) to any m×n m\times n matrix via an extension of polar decomposition.

也就是说 SVD 是线代中对于实数矩阵和复数矩阵的分解,将特征分解从 半正定矩阵 推广到任意 m×n m\times n 矩阵。

注意:本篇文章内如未作说明矩阵均指实数矩阵。

求解

举例

假设

那么可以计算得到

接下来就是求这个矩阵的特征值和特征向量了

Numpy 实现

Python 中可以使用 numpy 包的 linalg.svd() 来求解 SVD。

import numpy as np

A = np.array([[2, 4], [1, 3], [0, 0], [0, 0]])
print(np.linalg.svd(A))

输出

(array([[-0.81741556, -0.57604844,  0.        ,  0.        ],
        [-0.57604844,  0.81741556,  0.        ,  0.        ],
        [ 0.        ,  0.        ,  1.        ,  0.        ],
        [ 0.        ,  0.        ,  0.        ,  1.        ]]),
 array([ 5.4649857 ,  0.36596619]),
 array([[-0.40455358, -0.9145143 ],
        [-0.9145143 ,  0.40455358]]))

END

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数值分析与有限元编程

Jacobi方法求实对称阵的特征值

Jacobi方法用于求实对称阵的全部特征值、特征向量。对于实对称阵 A,必有正交阵 Q ,使 QT A Q = Λ 其中Λ是对角阵,其主对角线元素λii是A的特...

2736
来自专栏Python数据科学

【Kaggle入门级竞赛top5%排名经验分享】— 建模篇

上一篇是数据挖掘的前戏,主要目的是认识数据特征、判断特征重要性、观察数据异常,掌握数据间联系。本篇将继续上一篇分析进行数据挖掘建模部分。

691
来自专栏PPV课数据科学社区

【算法】PCA算法

小编邀请您,先思考: 1 PCA算法的原理是什么? 2 PCA算法有什么应用? 主成分分析(PCA)是一种基于变量协方差矩阵对数据进行压缩降维、去噪的有效方法,...

2744
来自专栏Echo is learning

因子分析

1226
来自专栏AI2ML人工智能to机器学习

Love Plus 矩阵

我们“拉近似”里面提到了数学应用之神Laplace, 并且讲述了他对分布的近似, 之前也在“概率估值的光滑(Smoothing)”提到Laplace研究过太阳升...

783
来自专栏数据结构与算法

卡特兰数入门

简介 卡特兰数是组合数学中的一种常见数列 它的前几项为: 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58...

3044
来自专栏算法修养

FZU 1063 三维扫描(三维连通块)

Accept: 415    Submit: 1291 Time Limit: 1000 mSec    Memory Limit : 32768 KB  ...

3298
来自专栏机器学习算法原理与实践

BIRCH聚类算法原理

    在K-Means聚类算法原理中,我们讲到了K-Means和Mini Batch K-Means的聚类原理。这里我们再来看看另外一种常见的聚类算法BIRC...

701
来自专栏杨熹的专栏

PCA 的数学原理和可视化效果

本文结构: 什么是 PCA 数学原理 可视化效果 ---- 1. 什么是 PCA PCA (principal component analysis, 主成分分...

3539
来自专栏机器学习算法与Python学习

机器学习(34)之BIRCH层次聚类详解

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 前言 在K-Means算法(机器学习...

3235

扫码关注云+社区