Yerden tasarruf sağlayan kümeleme


9

Gördüğüm çoğu kümeleme algoritması, daha büyük veri kümelerinde sorunlu hale gelen tüm noktalar arasında bire bir mesafeler oluşturmakla başlar. Bunu yapmayan var mı? Yoksa bir çeşit kısmi / yaklaşık / kademeli yaklaşımda mı?

Hangi kümeleme algoritması / uygulaması O (n ^ 2) alanından daha az yer kaplıyor?

Algoritmaların bir listesi ve bir yerde Zaman ve Mekan gereksinimleri var mı?


2
Belki de hareketli pencere tipi kümeleme (örneğin SaTScan, satscan.org ) gereksinimlerinizi karşılayabilir. Bu özel program mekansal / zamansal veriler içindir, bu yüzden daha yüksek boyutlar için değildir, ama belki size bazı fikirler veya bir başlangıç ​​yeri verebilir.
Andy W

Yanıtlar:


5

K-Ortalamalar ve Ortalama Kaydırma ham örnek tanımlayıcıları kullanır (bir afinite matrisini önceden hesaplamaya gerek yoktur).

Aksi takdirde, spektral kümeleme veya güç yineleme kümelemesi için, k en yakın komşuları afinite matrisinin (bir miktar mesafe veya afinite metriği için) seyrek bir matris temsilini (örn. Sıkıştırılmış Seyrek Satırlar) kullanabilirsiniz. K küçükse (5 veya 10 diyelim). Alanda çok etkili bir gösterim elde edersiniz (çift kesinlikli kayar nokta değerleri için 2 * n_samples * k * 8 bayt).


2

Bazı kümeleme algoritmaları uzamsal dizin yapılarını kullanabilir. Bu, örneğin DBSCAN ve OPTICS'in çalışmasına izin verirO(nlogn) zaman (dizin izin verdiği sürece O(logn) sorguları).

Açıkçası, bu karmaşıklıkta çalışan bir algoritma, O(n2) mesafe matrisi.

Tek bağlantılı ve tam bağlantılı hiyerarşik kümeleme gibi bazı algoritmalar için optimize edilmiş algoritmalar vardır (SLINK, CLINK). Çoğu insan, alabildikleri ve uygulaması kolay olan her şeyi kullanıyor. Hiyerarşik kümelemenin saf bir şekilde uygulanması kolaydır.n bir n2 mesafe matrisi ( O(n3) algoritması ...).

Kümeleme algoritmalarını karşılaştıran tam bir listenin farkında değilim. Sonuçta muhtemelen 100'den fazla kümeleme algoritması var. Örneğin, en az bir düzine k-ortalama varyantı vardır. Ayrıca, bellek karmaşıklığının yanı sıra çalışma zamanı karmaşıklığı da vardır; ortalama ve en kötü durum vardır. Çok büyük uygulama farklılıkları vardır (örneğin yukarıda belirtilen tek link; ve indeks kullanmayan DBSCAN uygulamaları veO(n2)ve tam depolamaya gerek yokken n×nmesafe matrisi, yine de tüm çift mesafeleri hesaplamaları gerekir). Ayrıca tonlarca parametre var. K-araçları için,kkritik. Hemen hemen her algoritma için, mesafe fonksiyonu büyük bir fark yaratır (birçok uygulama sadece Öklid mesafesine izin verir ...). Ve pahalı mesafe işlevlerine ulaştığınızda (Öklid gibi önemsiz şeylerin ötesinde), mesafe hesaplamalarının sayısı hızlı bir şekilde ana kısım olabilir. Böylece, toplam işlem sayısı ile gereken mesafe hesaplaması sayısı arasında ayrım yapmanız gerekir. Yani içinde bir algoritmaO(n2) operasyonlar sadece O(n) mesafe hesaplamaları bir algoritmadan daha iyi performans gösterebilir. O(nlogn) her ikisinde de, mesafe fonksiyonları gerçekten pahalı olduğunda (örneğin, mesafe fonksiyonunun kendisi O(n)).


çok iyi cevap.
MonsterMMORPG

1

İyi soru. En yakın 3 komşu için bir saman adam yöntemi, her veri noktasının Nsample komşularını örnekleyerek en yakın 3'ü örneklemektir. Önemsiz olsa da, bunu birkaç Nsample değeri için çalıştırmak size sinyal / gürültü oranı, yakın / arka plan gürültüsü hakkında fikir verecektir. kolayca için çizilen sizin veri. Ek bir numara, komşuların komşularını kontrol etmek, bunlardan herhangi birinin doğrudan komşulardan daha yakın olup olmadığını görmek. Ayrıca, giriş verileri zaten karıştırılmışsa, bloklar halinde örnekleme yapın, aksi takdirde önbellek çöker.

(Eklendi): R'deki fastcluster'a bakın ve SciPy v0.11'e inanıyorum.
Metin için bkz. Google-all-pairs-similarity-search .

Tekrarlama, "Kümeleme ile başarı elde etmede uygun bir benzerlik ölçüsü, kümeleme algoritması seçiminden çok daha önemlidir" - seçim-kümeleme yöntemi .

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.