Possible quick solution of SVD of covariance matrix of Xv, where v may change, while X does not.

136 Views Asked by At

I am current trying to work on one algorithm, that for Iteration $t$, I need to calculate the SVD of $(X\text{diag}(v^t))^T(X\text{diag}(v^t))$.

This could be very slow if $X$ is of high dimension.

However, since we can observe that $X$ never changes across iterations, is there any way that I could only calculate the SVD of $X^TX$ only once and get singular values $s$ and only deal with $s$ and $(v^t)^2$ at Iteration $t$?

If not, then is there a way that I could do this approximately?

If there is absolutely no such a solution, then why?

Thanks.

Edit after 10 days:

It seems there is no such a solution.

1

There are 1 best solutions below

2
On

Let $D= diag(v^t)$. Then, you have $(X D)^T (X D) = D^T X^T X D$. Now, if the SVD of $X$ is $U S V^T$, $X^T X = V S^T U^T U S V^T = V S^2 V^T$ where $S$ is the square matrix of the appropriate dimensions containing the squared singular values of $X$. Since $D$ is diagonal, $D^T = D$, and diagonal matrices commute with other matrices, so $D^T X^T X D = D X^T X D = D V S^2 V^T D = V D S^2 D V^T$ where $D S^2 D = D^2 S^2$ is a diagonal matrix containing the squared singular values of $S$ multiplied by the corresponding squared entries in $D$.

So, to calculate the eigendecomposition/singular value decomposition of this matrix, you simply calculate out the SVD of $X=U S V^T$. The eigenvectors/left singular vectors/right singular vectors are given by $V$. The singular values/eigenvalues are given by $d_i^2 \sigma_i^2$ where $d_i$ is the $i$-th entry in $v^t$ and $\sigma_i^2$ is the $i$-th squared singular value of $X$.