Hızlı k-10 ^ 10 puan için algoritma gibi mi?


14

10 boyutlu noktalarda k-demek kümeleme yapmak istiyorum. Yakalama: 10 ^ 10 puan var .

Sadece en büyük kümelerin merkezini ve boyutunu arıyorum (diyelim ki 10 ila 100 küme); Her noktanın hangi kümede bittiği umurumda değil. K-araçlarını kullanmak önemli değil; Ben sadece benzer bir etki arıyorum, herhangi bir yaklaşık k-araçları veya ilgili algoritma harika olurdu (minibatch-SGD anlamına gelir, ...). GMM bir anlamda k-araçları ile aynı problem olduğundan, aynı boyuttaki veriler üzerinde GMM yapmak da ilginçtir.

Bu ölçekte, verilerin alt örneklenmesi muhtemelen sonucu önemli ölçüde değiştirmez: verilerin 1 / 10000. örneğini kullanarak aynı ilk 10 kümeyi bulma olasılığı çok iyidir. Ancak o zaman bile, izlenebilir kenarın üstünde / ötesinde olan 10 ^ 6 puanlık bir problemdir.


1
Burada ücretsiz olarak indirebileceğiniz "Devasa Veri Kümelerinin Madenciliği" kitabında çeşitli algoritmalar açıklanmaktadır . Bölüm 7 "Kümeleme" bölümünü okuyun.
lanenok

Yanıtlar:


12

k- ortalamaları ortalamalara dayanır .

Kümeleri araçlar kullanarak modeller ve böylece daha fazla veri ekleyerek iyileştirme marjinaldir. Ortalama tahminin hatası 1 / sqrt (n) ile azalır; bu nedenle daha fazla veri eklemek gittikçe daha az kazanç sağlar ...

Böyle büyük veriler için stratejiler her zaman örnekleme etrafında döner:

Alt doğrusal çalışma zamanı istiyorsanız, örnekleme yapmalısınız!

Aslında, Mini-Toplu-Kmeans vb tam olarak bunu yapar: veri kümesinden tekrar tekrar örnek.

Bununla birlikte, örnekleme (özellikle tarafsız örnekleme) de tamamen ücretsiz değildir ... genellikle, verilerinizi örneklemek için doğrusal olarak okumalısınız, çünkü bireysel kayıtlara rastgele erişim elde edemezsiniz.

MacQueen'in algoritmasıyla devam ederdim. Çevrimiçi; varsayılan olarak verilerinizin üzerinden tek bir geçiş yapar (bunu yinelemek popüler olsa da). Dağıtmak kolay değil, ama sanırım verilerinizi bir SSD'den 10 kez doğrusal olarak okuyabiliyor musunuz?


MacQueen'in çevrimiçi algoritmasını bilmiyordum! Genellikle "klasik" K-araçlarıyla aynı sonuçları alır mı? Bunun yerine rezervuar örneklemesi kullanmaya ne dersiniz? Bu şekilde OP'nin birden fazla K değerinin test edilmesi gerektiğinde K-araçlarını yeniden çalıştırmak için bir örneği olur.
Victor Ma

6

Bir yan comment not olarak 10D veriler için K-araçları kullanarak bu olabilir hiçbir yerde boyutluluk laneti göre sonuna kadar. Tabii ki verilerin niteliğine göre biraz değişiyor, ancak K-Means'in boyutsallık konusunda garip davranmaya başladığı eşiği belirlemeye çalıştığımda 7D gibi bir şey aldım. 7 boyuttan sonra doğru kümeleri özlemeye başladı (verilerim iyi ayrılmış 4 Gauss dağılımına göre manuel olarak oluşturuldu ve küçük denemem için MATLAB kmeans işlevini kullandım ).


Bu mümkündür ve elbette her zaman verilere bağlıdır. Ancak, posterin 10 ^ 10 (muhtemelen bağımsız) örnekleri olduğu göz önüne alındığında, 10 boyutun burada çok büyük bir sorun olmayacağı anlaşılıyor.
Ryan J. Smith

2
Yorumunuz için teşekkürler @ RyanJ.Smith. yorumunuz benimkiyle aynı doğrultuda. Sadece bu sorunla ilgili olarak hiçbir şey görmedim. Ve örnek sayısı hakkında; ancak boyutsallık sorununda hala sıkışabileceği birçok örnek noktası vardır. Geçerli olmadığını düşündüğüm Düşük Örnek Boyutu Probleminin karşı tarafını tartıştığını düşünüyorum. Yüksek boyutlu bir veriye sahipse, düşük örneklem büyüklüğü bir sorun olacaktır, ancak bence büyük miktarda veri mutlaka bir şey ifade etmiyor.
Kasra Manshaei

10 boyut henüz çok değil.
QUIT - Anony-Mousse

1
Arkadaşımı nasıl belirliyorsunuz? Söylediğim, böyle bir soruyu cevaplamak için tasarlanmış bir deneyin sonucuydu, ancak genel olarak cevaplanamıyor! Yorumunuzda "çok" tam olarak nedir? cevabımda bahsettiğim gibi birçok koşula bağlı. bazı durumlarda 10D problemli olabilir.
Kasra Manshaei
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.