SVD de uma matriz de dados após uma projeção ortogonal em um subespaço


8

Digamos que eu possa conhecer o SVD de alguma matriz :X = U S V TX

X=USVT

Se eu tenho uma matriz ortogonal (ou seja, é quadrada e tem colunas ortonormais), o SVD de éA X AAAXA

XA=USWT
onde .W=ATV

Mas algo pode ser dito sobre o SVD do se tiver colunas ortonormais, mas não for necessariamente quadrado? Em outras palavras, se o SVD de é , as matrizes , ou ser escritas em termos do SVD de e ?B X B X B = D E F T D E F X BXBBXBXB=DEFTDEFXB


Atualização: @whuber sugere que eu possa estender para ser ortogonal adicionando colunas ortonormais até ficar quadrado. Chame esse ortogonal matriz .B ˜ BBBB~

B~=[B;B⊥]

Eu sei que o SVD do é (veja acima). Mas agora eu estou lutando para ver se há uma maneira que eu posso escrever o SVD de em termos da SVD de . U S ( ˜ B T V ) T X B X ˜ BXB~US(B~TV)TXBXB~


Por exemplo, não é o caso do SVD de , que é o que temos se soubermos que é quadrado. Isso ocorre porque não é uma matriz quadrada, o que teria que ser verdade no SVD. ainda tem colunas ortonormais. B B T V B T VXB=US(BTV)TBBTVBTV
— mobeets

3
B pode ser prolongado juntando colunas ortonormais adicionais em uma matriz ortogonal (use o processo de Gram-Schmidt, por exemplo), reduzindo assim sua pergunta ao primeiro caso.
— whuber

1
Legal, obrigado @whuber. Então diga é a versão ortogonalizados de . Saber o SVD do me diz algo sobre o SVD do ? B X B ′ X BB′BXB′XB
— mobeets

Escreva e você verá como o relacionamento é simples e claro.
— whuber

@ whuber Eu não consigo ver direito ... Aqui está o que eu tentei: Let . Então . X B ′ = [ X B ; X B ⊥ ] = U S ( B ′ T V ) T = U S ( [ B T B T ⊥ ] V ) T = U S [ B T V B T ⊥ V ] TB′=[B;B⊥]XB′=[XB;XB⊥]=US(B′TV)T=US([BTB⊥T]V)T=US[BTVB⊥TV]T
— mobeets

Respostas:


3

No SVD , onde é uma matriz , é uma matriz ortogonal . X n × p V p × pX=USV′Xn×pVp×p

Suponha que é uma matriz ortogonal : ou seja, . Deixeip × q B ′ B = 1 qBp×qB′B=1q

(1)SV′B=TDW′

ser um SVD de . Assim, por definição, é uma matriz , é uma matriz diagonal da dimensão e é uma matriz ortogonal .T p × q D q W q × qSV′BTp×qDqWq×q

Calcular

(2)XB=(USV′)B=U(SV′B)=U(TDW′)=(UT)D(W′).

Como , possui colunas ortonormais. Como e fazem parte de um SVD, então, por definição, é diagonal com entradas não negativas e é uma matriz ortogonal . Consequentemente, a equação fornece um SVD de . A equação mostra como este SVD está relacionado com o de e .(UT)′(UT)=T′(U′U)T=T′T=1qUTDW′DWq×q(2)XB(1)XB


1
Obrigado pela resposta. Embora parece que esta é uma maneira de encontrar a SVD de via computação da SVD de , em vez de usar apenas o SVD de . Eu esperava saber se existe uma maneira de encontrar o SVD do sem precisar calcular SVDs adicionais, como é possível quando é quadrado. XBSV′BXXBB
— Mobets #

3

Para uma matriz com colunas ortonormais (mas não quadrado), gostaria uma forma de encontrar um SVD de em termos do SVD .BXBX=USVT

Conforme sugerido por @whuber, um primeiro passo para encontrar o SVD do é adicionar colunas a para torná-lo quadrado (e, portanto, ortogonal). Chame essa matriz e seja o número de colunas de . Em seguida, porque é ortogonal, se é um SVD de , então é um SVD de .B ˜ B = [ B ; B ⊥ ] k B ⊥ ~ B X = L S V T X X ~ B = L S ( ~ B T V ) T X ~ BXBBB~=[B;B⊥]kB⊥B~X=USVTXXB~=US(B~TV)TXB~

Como o pode ser obtido do , descartando as últimas colunas, meu problema original agora se reduz ao seguinte: Dado o SVD de uma matriz , existe uma maneira de encontrar o SVD de , onde é a matriz resultante da queda das últimas colunas de ? (Aqui eu tenho e .)X ~ B k Y = D E F T Y ' = D ' E ' M ' TXBXB~kY=DEFTY′=D′E′F′T K Y Y = X ~ B Y ' = X BY′kYY=XB~Y′=XB

Esse problema é conhecido como "downdating the SVD" e, em geral, parece haver muitas abordagens para fazer isso. Uma abordagem relevante é encontrada aqui e mais discussão aqui .

Mas, em geral, uma vez que os algoritmos para downdating a SVD parecem ser uma área de pesquisa ativa, estou concluindo que não há uma simples maneira de encontrar a SVD de dada apenas a SVD de .XXBX


1
+1. Acho que você identificou o problema corretamente: não há uma maneira "simples". Acho bastante intuitivo se você considerar um exemplo simples de brinquedo: por exemplo, uma nuvem de dados 2D alongada na direção diagonal. Os dois vetores singulares originais são diagonais. A multiplicação da matriz de dados por uma matriz ortogonal quadrada simplesmente gira a nuvem inteira, para que os vetores singulares permaneçam os mesmos, até a rotação. Mas projetar a nuvem de dados para, por exemplo, a linha horizontal (subespaços 1D) mudará totalmente de forma; agora o único vetor singular é horizontal. Novos vetores singulares não têm relação com os antigos.
— Ameba

Essa é uma ótima explicação intuitiva da diferença. No começo, eu achava bastante perturbador o fato de haver uma relação tão simples para matrizes ortogonais, mas não mais quando você remove apenas uma única coluna dessa matriz. Mas tudo faz sentido agora. Obrigado!
— mobeets

Concordo. Quando li seu post pela primeira vez, pensei: que pergunta ingênua! :-) claramente é preciso simplesmente girar os vetores singulares (com uma matriz "estendida" para ser uma matriz de rotação, como escreveu whuber) e depois soltar alguns deles (correspondendo à parte "estendida"). Mas isso está errado.
— Ameba 25/10
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.