奇异值分解与最小二乘问题

来源:互联网 发布:如何当淘宝模特 编辑:程序博客网 时间:2024/06/03 10:52

  很多线性回归器的损失函数为均方误差:

loss=Xwy22

  求解模型参数,需要最小化损失函数:
minXwy22

XRmn,wRn,yRm

  该类问题分为三种情况:
  1.m=n且X为非奇异矩阵,这时Xw=y有唯一解:w=X1y
  2.m>n,即约束个数大于方程个数,此时Xw=y无解,该类问题称为超定问题。
  3.m<n,即约束个数小于方程个数,此时Xw=y有无穷解该类问题称为欠定问题

  在机器学习中,绝大部分问题都是样本数大于特征数,对应于超定问题,并且一般情况下为非一致方程,此时方程无解(一致方程的超定问题是有解的,通过求解广义逆矩阵),因此转向求解最小二乘问题,即最小化Xwy22,将其转化为矩阵形式,求导,另导数为0,可以解得:

w=(XTX)1XTy

推导见:线性最小二乘求解
  这种求解方式有几个问题:
1. 涉及到n*n维矩阵的求逆运算,实际使用中计算量巨大。
2. XTX可能不可逆,这个可以用l2正则或者求解伪逆的形式解决。

SVD奇异值分解

  不同于特征值分解使用的情景受限,对于任意一个矩阵ARmn,都可以分解为:

svd(A)=[U][S][VT]

  其中:URmmSRmnVRnn
  U的列向量为A的左奇异向量,也即AAT的特征向量;VT的列向量为A的右奇异向量,也即ATA的特征向量,S[Σ0]Σ为对角矩阵,其值为矩阵A的奇异值σ,即AAT的特征值λ=σ2UVT都是正交矩阵。
  证明:
AAT=USVT(USVT)T=US(VTV)STUT=U(SST)UT
(AAT)U=Σ¯U
ATA

  再来看最小二乘问题:
Xwy22=U[Σ0]VTwb=[Σ0]VTxUy

  U可以拆解为[Un,Umn],因此上式:
=[Σ0]VTw[Un,Umn]Ty
=[ΣVTwUTnUTmny]
=ΣVTwUTny+UTmnyUTmny

  也即当ΣVTwUTny=0 时上式取等号,此时Xwy22取最小值,解得:
w=(ΣVT)1UTny=VΣ1UTny

  按照SVD的方式必有解,这里Σ是对角矩阵,求逆很简单,UV都是正交矩阵,因此转置与其逆矩阵相等。
  通常情况下Σ是按照奇异值由大到小排列的,且衰减的特别快,一般前10%的奇异值之和就占到了总和的95%以上,因此我们可以将小于某个阈值的的奇异值及其对应的左右奇异向量全部舍弃掉,进而进一步的进行矩阵规模的缩减,在sklearn中就是采用的这种方式,只不过在求解Σ的逆矩阵时,阈值=1e-15,多用了一个alpha参数,Σ1=ΣΣ+alpha


  特别地,对于齐次方程的超定问题:

minXw

  我们有:
Xw=wT(XTX)w

   假设wXTX的特征值,约束w=1,上式化简为:
minXw=minλ2w=minλ2

  因此我们需要求解的w即是XTX最小特征值对应的特征向量,对X进行svd,根据前面的理论,我们只需找到S中最小的特征值对应于V的特征向量即是w的值。