基础算法 --- > SVD

奇异值分解(SVD)是机器学习中的重要算法,适用于降维、推荐系统和自然语言处理等领域。SVD将非方阵分解为两个正交矩阵和一个对角矩阵,其中对角矩阵的元素为奇异值。对于方阵,可以进行特征分解,找到特征值和特征向量。非方阵的特征分解则需借助SVD。SVD的奇异值在多数情况下占据总和的大部分,可用于数据压缩和PCA降维。
摘要由CSDN通过智能技术生成

奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。

奇异值分解(SVD)通俗一点讲就是将一个线性变换分解为两个线性变换,一个线性变换代表旋转,一个线性变换代表拉伸

注:SVD是将一个矩阵分解成两个正交矩阵和一个对角矩阵,我们知道正交矩阵对应的变换是旋转变换,对角矩阵对应的变换是伸缩变换。

矩阵知识

特征值和特征向量

关于特征值和特征向量的定义如下:
A x = λ x Ax = \lambda x Ax=λx

其中 A ∈ R n × n A\in R^{n\times n} ARn×n的一个矩阵,x是一个n维向量 x ∈ R n x\in R^n xRn,如果上式成立,我们则称 λ \lambda λ为矩阵A的特征值,称x为 λ \lambda λ对应的特征向量。

例子:

特征分解

如果我们求出了矩阵A的n个特征值 λ 1 ≤ λ 2 ≤ . . . λ n \lambda_1\leq \lambda_2\leq ... \lambda_n λ1λ2...λn,以及这n个特征值所对应的特征向量 { w 1 , w 2 , . . . , w n } \{ {w_1, w_2, ..., w_n\}} { w1,w2,...,wn},如果这n个特征向量线性无关,那么矩阵A就可以用下式的特征分解表示:
A = W Σ W − 1 A = W\Sigma W^{-1} A=WΣW1
其中 W = ( w 1 , w 2 , . . . , w n ) W = (w_1, w_2, ..., w_n) W=(w1,w2,...,wn) Σ = ( λ 1 . . . . . . λ n ) \Sigma =\begin{pmatrix} \lambda_1 & \\ ... & ... \\ & \lambda_n \end{pmatrix} Σ=λ1......λn
一般我们会把W的这n个特征向量标准化,即满足 ∣ ∣ w i ∣ ∣ 2 = 1 ||w_i||_2=1 wi2=1,或者说 w i T w i = 1 w^T_i w_i=1 wiTwi=1,此时W的n个特征向量为标准正交基,且满足 W T W = I W^TW=I WTW=I,即W为酉矩阵(unitary matrix)。

注意,这里进行特征分解的矩阵必须是方阵,但我们的数据常常不是方阵,对于 n × m n\times m n×m的矩阵怎么矩阵分解?SVD算法解决该类问题。

特征分解的几何意义

首先,要明确的是,一个矩阵其实就是一个线性变换,因为一个矩阵乘以一个向量后得到的向量,其实就相当于将这个向量进行了线性变换。比如说下面的一个矩阵:

[ 3 0 0 1 ] \begin{bmatrix} 3&0\\ 0 & 1 \end{bmatrix} [3001]
当我们对一个坐标变换时有:
[ 3 0 0 1 ] [ x y ] = [ 3 x y ] \begin{bmatrix} 3&0\\ 0 & 1 \end{bmatrix} \begin{bmatrix} x\\ y \end{bmatrix} = \begin{bmatrix} 3x\\ y \end{bmatrix} [3001][xy]=[3xy]
它其实对应的线性变换是下面的形式:

特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。
不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。

SVD

对于不是方阵的矩阵,需要使用SVD算法进行特征分解。我们事先定义矩阵A的SVD为:
A = U Σ V T A = U\Sigma V^T A=UΣVT
其中

  • U是一个 m × m m\times m m×m的矩阵,为酉矩阵
  • Σ \Sigma Σ是一个 m × n m\times n m×n的矩阵,除了对角线的元素以外,其余的元素均为零。其中主对角线上每个元素都称为奇异值。
  • V是一个 n × n n\times n n×n的矩阵,为酉矩阵。
    进一步有:
    A = ( U 1 U 2 ⏟ U ) ( ∑ 1 0 r × ( n − r ) 0 ( m − n ) ×
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值