Büyük ölçekli PCA bile mümkün müdür?


10

Temel bileşen analizi '(PCA) klasik yolu bunu sütunların sıfır ortalaması olan bir giriş veri matrisinde yapmaktır (o zaman PCA "varyansı en üst düzeye çıkarabilir"). Bu sütunları ortalayarak kolayca gerçekleştirilebilir. Bununla birlikte, giriş matrisi seyrek olduğunda, ortalanmış matris artık daha seyrek olacaktır ve - eğer matris çok büyükse - artık belleğe sığmayacaktır. Depolama sorunu için algoritmik bir çözüm var mı?


5
Tam veri matrisi belleğe sığmasa bile, kovaryans veya Gram matrisinin belleğe sığması çok iyi olabilir. Bunlar PCA gerçekleştirmek için yeterlidir. Ne kadar girdi veri matrisi boyutu düşünüyorsunuz? Ayrıca bkz . Stats.stackexchange.com/questions/35185 .
amip

1
@amoeba: 500K örneğine (satır) ve 300K özelliğine (sütun) bakıyorum
Roy

Yazılım hakkında olduğu gibi, Apache Spark, uygulamanın bellek dışı verilerle uğraştığından emin olmak için spark.apache.org/docs/latest/… 'a sahiptir
Tim

Yanıtlar:


11

Evet mümkün.

Veri matrisi RAM'e sığmazsa, henüz dünyanın sonu değildir: sabit diskte depolanan verilerle çalışabilen verimli algoritmalar vardır. Bkz. Örneğin Halko ve ark., 2010, Büyük veri kümelerinin temel bileşen analizi için bir algoritma .

Bölüm 6.2'de yazarlar algoritmalarını 400k çarpı 100k veri matrisinde denediklerini ve

Mevcut kağıdın algoritması, 1.5 GB RAM ile dizüstü bilgisayar kullanarak, disk üzerinde depolanan bu veri kümesinin 150 GB'ının tümünü işlemek için 12.3 saat gerekiyordu [...].

Bunun manyetik sabit sürücülerin eski günlerinde olduğunu unutmayın; Bugün çok daha hızlı katı hal sürücüleri var, bu yüzden aynı algoritmanın çok daha hızlı çalışacağını tahmin ediyorum.

Rastgele PCA hakkında daha fazla tartışma için bu eski konuya da bakınız: Çok sayıda özellik için en iyi PCA algoritması (> 10K)? ve Halko ve ark. tarafından yapılan bu büyük 2011 incelemesi: Rastgele Yapı Bulma: Yaklaşık Matris Ayrışımlarını Oluşturmak için Olasılıksal Algoritmalar .

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.