Minimum küme boyutu kısıtlaması ile kümeleme (k-araçları veya başka türlü)


14

Kareler (WSS) grup içi toplamını en aza indirmek için birimleri kümeleri halinde kümelemem gerekiyor , ancak kümelerin her birinin en az m birimi içermesini sağlamalıyım . R'nin kümeleme işlevlerinden herhangi biri , minimum küme boyutu kısıtlamasına tabi k kümeleri içinde kümelemeye izin veriyorsa herhangi bir fikir var mı? kmeans () boyut sınırlama seçeneği sunmuyor gibi görünüyor.kmk

Yanıtlar:


6

EM Kümelemeyi Kullanma

EM kümelemede, algoritma verilere uyacak şekilde bir ilk küme modelini yinelemeli olarak daraltır ve bir kümede bir veri noktasının var olma olasılığını belirler. Olasılıksal model verilere uyduğunda algoritma işlemi sonlandırır. Uygunluğu belirlemek için kullanılan işlev, modele verilen verilerin log olabilirliğidir.

İşlem sırasında boş kümeler oluşturulursa veya kümelerin bir veya daha fazlasının üyeliği belirli bir eşiğin altına düşerse, düşük popülasyona sahip kümeler yeni noktalarda yeniden oluşturulur ve EM algoritması yeniden çalıştırılır.


Teşekkürler, Marianna. Ben daha az (tipik olarak haksız) parametrik modellere dayanan ama kesinlikle içine bakacak bir çözümü tercih ederim.
Cyrus S

4

Bence sadece k araçlarının küme boyutları için bir test ile bir if döngüsünün parçası olarak çalıştırılması meselesi, yani k kümesindeki k sayımı - aynı zamanda k araçlarının aynı verilerdeki her çalışma için farklı sonuçlar vereceğini unutmayın. muhtemelen "en iyi" sonucu çıkarmak için bir döngünün parçası olarak çalıştırıyor olmalısınız


2
Teşekkürler, Alex. Bununla ilgili bir sorun görüyorum: döngüler üzerinden üretilen çözümler hiçbir zaman kısıtlamayı karşılamıyorsa? Bu, k araçları küme boyutu kısıtlaması olmadan çalışacak şekilde ayarlanmışsa olabilir. Bundan kaçınan bir çözüm isterdim. (Uygulamanın doğası öyle ki gerçekten kümelerin minimum boyutta olmasını sağlamalıyım.)
Cyrus S

4

Bu sorun bu makalede ele alınmıştır:

Bradley, PS, KP Bennett ve Ayhan Demiriz. "Kısıtlı k-kümeleme anlamına gelir." Microsoft Research, Redmond (2000) : 1-8.

Python'da algoritmanın bir uygulaması var .


Bu mükemmel, teşekkürler! rPythonR komut dosyasından eriştiğim bu uygulamaya bir arabirim oluşturmak için paketi R'de kullandım.
Michael Ohlrogge

@MichaelOhlrogge, bu python paketi R formunu çağırmak için yazdığınız arayüzde bir yerde (github?) Bir örneğiniz var mı? Teşekkürler!
Matifou

Üzgünüm, eski koduma baktım ama artık bulamadım.
Michael Ohlrogge

1

Veri kümeniz ne kadar büyük? Belki hiyerarşik bir kümeleme çalıştırmayı deneyebilir ve sonra dendrogramınıza bağlı olarak hangi kümelerin tutulacağına karar verebilirsiniz.

Veri kümeniz çok büyükse, her iki kümeleme yöntemini de birleştirebilirsiniz: hiyerarşik olmayan bir ilk kümeleme ve ardından hiyerarşik olmayan analizdeki grupları kullanarak hiyerarşik bir kümeleme. Bu yaklaşımın bir örneğini Martínez-Pastor ve ark. (2005)


Teşekkürler, Manuel. Bu aslında çok ilginç bir olasılık gibi geliyor. Hiyerarşik bölümlemenin, algoritmanın doğrudan boyut kısıtı altında en uygun küme bölümlemesine ulaşmasını engelleyecek bazı kısıtlamalar getirip getirmeyeceğini düşünmem gerekiyor. Ancak sezgisel olarak, bunun işe yarayabileceğini görebiliyorum.
Cyrus S

0

Bu, küme atama adımını (EM'de E) bir Minimum Maliyet Akışı (MCF) doğrusal ağ optimizasyonu sorunu olarak formüle ederek değiştirerek elde edilebilir.

Google'ın Yöneylem Araştırması araçlarının hızlı bir C ++ uygulaması olan SimpleMinCostFlow'u kullanan bir python paketi yazdım . Standart bir scikit-yalın API'sı vardır.

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.