Uh... it has been some time since I read Funk's blog entry on this nor have
I read the code you reference, but isn't it typical for such incremental
solvers to put the singular values with U or V? Suppose that we really get
matrices X and Y instead of the orthonormal matrices U and V such that
(U d1) (V d2)^T = X Y^T
where d = d1 d2 is the diagonal matrix with the singular values. To get d
back, we just do this:
d1 = sqrt(X^T X)
d2 = sqrt(Y^T Y)
d = d1 d2
Similarly, if we really do get a singular decomposition, we can use the
original matrix to compute the singular values:
A = U d V^T
d = U^T A V
On Wed, Mar 2, 2011 at 3:52 PM, Chris Schilling <chris@cellixis.com> wrote:
> Hey Ted,
>
> I finally had time to get back to this. This is definitely bringing back
> some memories :) I hope you have room for (hopefully) one more question.
>
> So, I have been studying Simon Funk's incremental SVD approach (this is
> implemented in ExpectationMaximizationSVDFactorizer). In this method, the
> singular values are folded in to the left and right matrices:
>
> A = U * sqrt(d) * sqrt(d) * VT = U' * V'T
>
> So, in this case, inverse(V'T) = V * d^1/2
>
> Whatever the case, my question is the same: given U' and V'T, I am failing
> to see an elegant (i.e. trivial) solution to extracting the singular values.
> I was hoping you could help me out.
>
> Thanks again,
> Chris
>
> On Feb 25, 2011, at 2:29 PM, Ted Dunning wrote:
>
> Yes. That affects things. The key is that inverse(diag(d_1 ... d_n)) =
> diag(1/d_1 ... 1/d_n)
>
> that means that inverse(D V') = V inverse(D). If you have X' = DV' you
> need to compute inverse(X') = X D^2
>
> On Fri, Feb 25, 2011 at 1:25 PM, Chris Schilling <chris@cellixis.com>wrote:
>
>> One more linear algebra question. So, does this still hold when the
>> diag(d) matrix is multiplied through the right hand side? Is that an affect
>> I should worry about when trying to compute u?
>
>
>
>
