使用SVD来求解优化问题最优值
假设我们想要求解如下问题:
R∗=Rargmaxi=1∑nqiTRpi=i=1∑ntr(QTRP)ii=tr(QTRP)
令H≜i=1∑npiqiT,于是问题变成求解如下最优值:
R∗=Rargmax tr(QTRP)=tr(RPQT)=tr(RH)
现在,如果H的SVD分解为,H=UΛVT,可以证明
R∗=VUT
一定是该优化问题的最优解。
现在证明一个引理:
引理1:对于任意的正定矩阵AAT,对于任意的正交矩阵B,则有
Tr(AAT)≥Tr(BAAT)
证明:令ai是A的第i列,于是
Tr(BAAt)=Tr(AtBA)=i∑ait(Bai)
根据Cauchy–Schwarz_inequality,
aiT(Bai)≤(aiTai)(aiTBTBai)=aiTai
因为B是正交矩阵,所以BTB=E.因此
Tr(BAAT)⩽i∑aiTai=Tr(AAT)
证毕。
现设
X=VUT (这是正交矩阵,XTX=UVTVUT=E)
于是
XH=VUTUΛVT=VΛVT
因此XH是一个对称而且正定的矩阵,根据Cholesky分解,XH一定可以分解成AAT的形式,于是根据上述引理,对于任意的正交矩阵B,这样的对称正定矩阵一定满足公式:
Tr(XH)≥Tr(BXH)
于是,Tr(XH)一定是最优值,因为任意的变换都会使得该它减少。这个东西告诉我们,只要我们能够对H进行SVD分解,那么我们一定能够找到一个最优的X使得Tr(XH)最大。
使用SVD来求解PCA
如上图,PCA本质上就是求解方差的特征向量,而这个特征向量其实就是图中里面的V。
参考资料
Arun, K. Somani, Thomas S. Huang, and Steven D. Blostein. “Least-squares fitting of two 3-D point sets.” IEEE Transactions on pattern analysis and machine intelligence 5 (1987): 698-700.
https://zhuanlan.zhihu.com/p/35893884
An easy introduction to unsupervised learning with 4 basic techniques