Tekil değer ayrışmasını (SVD) hesaplamak için etkili algoritmalar nelerdir?


17

Wikipedia makale temel bileşen analizi devletler bu

X T X matrisini oluşturmak zorunda kalmadan SVD'sini hesaplamak için verimli algoritmalar mevcuttur , bu nedenle SVD'nin hesaplanması artık sadece bir avuç bileşen gerekli olmadıkça bir veri matrisinden temel bileşenler analizini hesaplamanın standart yoludur.XXTX

Birisi bana makalenin bahsettiği etkili algoritmaların neler olduğunu söyleyebilir mi? Hiçbir referans verilmemiştir (bu hesaplama yöntemini öneren bir makaleye URL veya atıf yapmak iyi olur).


4
Tekil değer ayrıştırma algoritması üzerinde yapılan bir Google araması, alakalı bilgileri vurgulamada iyi bir iş çıkarır.
whuber

1
PCA için SVD'den önce ortalamayı kaldırmayı unutmayın!
Memming

Lanczos SVD'yi deneyin!
ciri

Yanıtlar:


12

SVD'nin hesaplanmasının arkasındaki ana at, QR algoritmasıdır . Genel bir by- N matris A'nın tekil değer ayrışmasını hesaplamak için birçok farklı algoritma olduğunu söylemiştik . Burada bulunan konuyla ilgili (Intel'in MKL belgelerinden) büyük bir şema şöyledir:MNAenter image description here

Kullanım durumunuza bağlı olarak gördüğünüz gibi farklı yaklaşımlar vardır (rutin adlandırma kuralları burada bulunabilir ). Çünkü, örneğin, bir Hanehalkı indiriminin bir Givens rotasyonundan daha pahalı olabileceği matris formları vardır (QR elde etmenin iki "açık" yolunu adlandırmak için). Konuyla ilgili standart bir referans Golub ve Van Kredisi Matris Hesaplamalarıdır (en azından 3. baskıyı kullanmanızı öneririm). Ben de Å buldum. Björck'in En Küçük Kareler İçin Sayısal Yöntemleri Bu konuda çok iyi bir kaynak; SVD kitabın ana odak noktası olmasa da, kitabın kullanımını bağlamsallaştırmaya yardımcı olur.

Sana vermek gerekirse bir konudur üzerinde genel danışmanlık kendi SVD algoritmaları yazmaya kalkma başarıyla zaten Sayısal Lineer Cebir Doğum sınıfların bir çift almış sürece ve ne yaptığınızı biliyorum. Kulağa karşı sezgisel geldiğini biliyorum ama gerçekten, yanlış gidebilecek bir ton şey var ve (en iyi değilse) en uygun olmayan uygulamalarla (yanlış değilse) bitiyorsunuz. Bu konuda bazı çok iyi ücretsiz suitler (örn. Eigen , Armadillo ve Trilinos birkaç isim.)


XA

1
MNAXTX

2
Evet, yanılmışım: QR sadece kare matrislerle sınırlı değil. +1, bu arada. Bu soru, pca etiketi ile en çok oylanan cevapsız sorulardan biriydi , bu yüzden sonunda cevaplandığını görmek güzel.
amoeba, Reinstate Monica

Cevabınız çok çeşitli yinelemeli algoritmalardan bahsetmiyor. Amaçlı mıydı? Birisi yinelemeli SVD algoritmaları hakkında bir soru sordu, bkz. Kesik SVD'yi hesaplamak için hangi hızlı algoritmalar var? ve bazı genel bakış sağlamaya çalışırken bir cevap gönderdim. Belki de en azından cevaplarımızı birbirine bağlamalıyız. Ve QR algoritmaları ve yinelemeli algoritmalar hakkında biraz tartışarak sizinkini genişletmeniz kesinlikle harika olurdu.
amip: Reinstate Monica

Hayır, kazara oldu. Gönderinizde kendi sorunuzu cevapladınız; kesik SVD esasen kesik öz-bileşimlerdir (bakınız örneğin ARPACK ). Bazı ince farklılıklar var ama onlar iyi ; bazı yazılımlar (örn. svdsMATLAB'lar eigs) , kesilmiş SVD işlevlerini kesilmiş özdeğiştirme ( ) rutinleri için bir sarıcı olarak kullanmak kadar ileri gider .
usεr11852 diyor Reinstate Monic
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.