Orthogonal Procrustes Problem

学习

Posted by simplex on April 25, 2021

Orthogonal Procrustes Problem

https://blog.csdn.net/itnerd/article/details/104598742

你pad上ITQ那边也记了一遍

目标问题

\[min || A\Omega - B||^2\\ s.t. \Omega^T\Omega = I\]

\(A, B \in R^{n\times m}\) 代求\(\Omega \in R^{n\times n}\)为正交阵

\[||A\Omega - B||^2 = tr((A\Omega - B)^T(A\Omega - B))\] \[=tr((\Omega^TA^TA\Omega)) - tr(B^TA\Omega)-tr(\Omega^TA^TB) + tr(B^TB)\] \[=tr((\Omega\Omega^TA^TA)) - 2tr(B^TA\Omega) + tr(B^TB)\] \[=tr(A^TA) - - 2tr(B^TA\Omega) + tr(B^TB)\]

所以原问题等价于

原问题 \(\iff max tr(B^TA\Omega)\\ s.t. \Omega^T\Omega = I\)

令\(C = B^TA对C做 svd:U\Sigma V^T = C\),

则 \(tr(B^TA\Omega) = tr(U\Sigma V^T \Omega) \\ =tr(\Sigma V^T \Omega U)\\ =tr(\Sigma Z) (Z = V^T \Omega U)\\ =\Sigma_{i, j}\sigma_{ij}z_{ij}\\ =\Sigma_{i}\sigma_{ii}z_{ii}\\ \leqslant \Sigma_{i}\sigma_{ii}\)

取等号的条件为:Z的对角元为1

令\(Z =I = V^T\Omega U\)则有

\[\Omega = VU^T\]

主要用到的东西就是矩阵trace中转置的各种变化,

看起来不是很难嘛(flag语言