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 BBBXBXB
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(BTV)T=US([BTBT]V)T=US[BTVBTV]T
mobeets

Respostas:


3

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

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

(1)SVB=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 × qSVBTp×qDqWq×q

Calcular

(2)XB=(USV)B=U(SVB)=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(UU)T=TT=1qUTDWDWq×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. XBSVBXXBB
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]kBB~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=DEFT K Y Y = X ~ B Y ' = X BYkYY=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.