SVD dari matriks data setelah proyeksi ortogonal ke subruang


9

Katakanlah saya dapat mengetahui SVD dari beberapa matriks : X = USV ^ TX

X=USVT

Jika saya memiliki matriks ortogonal A (yaitu, A adalah persegi dan memiliki kolom ortonormal), maka SVD XA adalah

XA=USWT
mana W=ATV .

Tetapi dapatkah dikatakan tentang SVD XB jika B memiliki kolom ortonormal tetapi tidak harus persegi? Dengan kata lain, jika SVD XB adalah XB=DEFT , dapatkah matriks D , E , atau F ditulis dalam istilah SVD X dan B ?


Pembaruan: @whuber menunjukkan bahwa saya dapat memperluas B menjadi ortogonal dengan menambahkan kolom ortonormal sampai B adalah persegi. Sebut ini ortogonal matriks B~ .

B~=[B;B]

Saya tahu SVD adalah (lihat di atas). Tapi sekarang aku berjuang untuk melihat apakah ada cara yang saya dapat menulis SVD dari dalam hal SVD dari .XB~US(B~TV)TXBXB~


Sebagai contoh, itu bukan kasus bahwa SVD , yang kita miliki jika kita tahu adalah bujur sangkar. Ini karena bukan matriks persegi, yang harus benar dari SVD. masih memiliki kolom ortonormal. XB=US(BTV)TBBTVBTV
mobeets

3
B dapat diperpanjang dengan menyatukan kolom ortonormal tambahan ke dalam matriks ortogonal (misalnya, gunakan proses Gram-Schmidt), sehingga mengurangi pertanyaan Anda menjadi kasus pertama.
whuber

1
Keren, terima kasih @whuber. Jadi katakanlah adalah versi orthogonalized . Akankah mengetahui SVD memberi tahu saya sesuatu tentang SVD ? BBXBXB
mobeets

Tuliskan dan Anda akan melihat betapa sederhana dan jelasnya hubungan itu.
whuber

@whuber Aku tidak bisa melihatnya ... Inilah yang saya coba: Biarkan . Kemudian . B=[B;B]XB=[XB;XB]=US(BTV)T=US([BTBT]V)T=US[BTVBTV]T
mobeets

Jawaban:


3

Dalam SVD , di mana adalah matriks , adalah matriks ortogonal .X=USVXn×pVp×p

Misalkan adalah ortogonal matriks: yaitu, . MembiarkanBp×qBB=1q

(1)SVB=TDW

menjadi SVD dari . Jadi, menurut definisi, adalah matriks , adalah matriks diagonal dimensi , dan adalah matriks ortogonal.SVBTp×qDqWq×q

Menghitung

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

Karena , memiliki kolom ortonormal. Karena dan adalah bagian dari SVD, maka menurut definisi adalah diagonal dengan entri non-negatif dan adalah matriks ortogonal. Akibatnya, persamaan memberikan SVD . Persamaan menunjukkan bagaimana SVD ini terkait dengan yang dan .(UT)(UT)=T(UU)T=TT=1qUTDWDWq×q(2)XB(1)XB


1
Terima kasih atas jawabannya. Meskipun tampaknya seperti ini adalah cara untuk menemukan SVD dari melalui komputasi SVD dari , sebagai lawan hanya menggunakan SVD dari . Saya berharap tahu jika ada cara untuk menemukan SVD tanpa harus menghitung SVD tambahan, seperti yang mungkin terjadi ketika adalah persegi. XBSVBXXBB
mobeets

3

Untuk matriks dengan kolom ortonormal (tapi tidak persegi), saya ingin cara untuk menemukan sebuah SVD dari dalam hal SVD dari .BXBX=USVT

Seperti yang disarankan oleh @whuber, langkah pertama menuju menemukan SVD adalah menambahkan kolom ke untuk membuatnya menjadi persegi (dan dengan demikian ortogonal). Sebut matriks ini , dan biarkan menjadi jumlah kolom . Kemudian karena adalah orthogonal, jika adalah SVD dari , maka adalah SVD dari .XBBB~=[B;B]kBB~X=USVTXXB~=US(B~TV)TXB~

Karena dapat diperoleh dari dengan menjatuhkan kolom terakhir , masalah asli saya sekarang berkurang menjadi sebagai berikut: Mengingat SVD dari matriks , apakah ada cara untuk menemukan SVD dari , di mana adalah matriks yang dihasilkan dari menjatuhkan kolom terakhir ? (Di sini saya memiliki dan .)XBXB~kY=DEFTY=DEFTYkYY=XB~Y=XB

Masalah ini disebut sebagai "downdating the SVD", dan secara umum, tampaknya ada banyak pendekatan untuk melakukan ini. Satu pendekatan yang relevan ditemukan di sini , dan lebih banyak diskusi di sini .

Tapi secara umum, mengingat bahwa algoritma untuk downdating SVD muncul untuk menjadi bidang penelitian aktif, saya menyimpulkan bahwa tidak ada sederhana cara untuk menemukan SVD dari diberikan hanya SVD dari .XBX


1
+1. Saya pikir Anda mengidentifikasi masalah dengan benar: tidak ada cara "sederhana". Saya menemukan ini agak intuitif jika Anda mempertimbangkan contoh mainan sederhana: misalnya awan data 2D memanjang ke arah diagonal. Dua vektor tunggal asli adalah diagonal. Mengalikan matriks data dengan matriks ortogonal persegi hanya memutar seluruh awan, sehingga vektor singular tetap sama, hingga rotasi. Tetapi memproyeksikan cloud data ke eg garis horizontal (1D subruang) akan berubah bentuk seluruhnya; sekarang satu-satunya vektor adalah horisontal. Vektor tunggal baru tidak terkait dengan yang lama.
amoeba

Itu penjelasan intuitif yang bagus tentang perbedaannya. Pada awalnya saya merasa sangat mengecewakan bahwa mungkin ada hubungan yang sederhana untuk matriks ortogonal tetapi kemudian tidak lagi begitu Anda menghapus hanya satu kolom dari matriks itu. Tapi itu semua masuk akal sekarang. Terima kasih!
mobeets

Saya setuju. Ketika saya pertama kali membaca posting Anda, saya berpikir: pertanyaan yang sangat naif! :-) jelas kita hanya perlu memutar vektor singular (dengan matriks "extended" menjadi matriks rotasi, seperti yang ditulis whuber) dan kemudian menjatuhkan beberapa (sesuai dengan bagian "extended"). Tapi ini tentu saja salah.
amoeba
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.