Büyük bir ikili veri kümesini birkaç kategoriye kümelemek için hangi algoritmayı kullanmalıyım?


11

Büyük (650K satır * 62 sütun) ikili veri matrisi (yalnızca 0-1 girişleri) var. Matris çoğunlukla seyrek: yaklaşık% 8 doldurulur.

Bunu 5 gruba ayırmak istiyorum - 1'den 5'e kadar adlandırın. Hiyerarşik kümelemeyi denedim ve boyutu işleyemedim. Ayrıca 62 uzunluk 650K bit vektörleri göz önünde bulundurarak çekiçleme mesafesine dayalı k-ortalama kümeleme algoritması kullandım. Bunlardan hiçbiriyle uygun sonuçlar elde etmedim.

Lütfen yardım et.


Ben bir cevap olarak yazmak zorunda bu yüzden benim 1 temsilcisi b / c yorum yapamam. Jaccard Benzerliğine bakabilirsiniz. Bence python scipy'nin uygulamaları var. Jaccard ...
gobrewers14

Verilerin doğal olarak en azından bir dereceye kadar beş gruba düştüğünü varsaymak için herhangi bir neden var mı? Satır kümelemeyle gerçekten ilgileniyor musunuz, yoksa bit vektörlerinde kodlanan 62 özellik arasındaki ilişkilerle de ilgileniyor musunuz? İkincisi ise, diğer teknikler daha uygundur.
mikans

Yanıtlar:


4

Yanlış soruyu soruyorsun.

"Hangi algoritmayı" sormak yerine " uygulamanızda anlamlı bir kategori / küme nedir" sorusunu sormalısınız .

Yukarıdaki algoritmaların işe yaramadığına şaşırmadım - çok farklı kullanım durumları için tasarlanmıştır. k-ortalamalar yapar değil keyfi başka mesafelerde çalışır. Hamming mesafesiyle kullanmayın. Bunun k- anlamına gelmesinin bir nedeni vardır, sadece aritmetik ortalama anlamlı olduğunda kullanmak mantıklıdır (ki bu ikili veri için değildir).

Bunun yerine k-modlarını denemek isteyebilirsiniz, IIRC bu aslında kategorik verilerle kullanılması gereken bir varyanttır ve ikili veriler biraz kategoriktir (ancak sparisite sizi hala öldürebilir).

Ancak her şeyden önce, verilerinizi basitleştirmek için kopyaları kaldırdınız ve örneğin benzersiz / boş sütunları kaldırdınız mı?

Belki APRIORI veya benzeri yaklaşımlar da probleminiz için daha anlamlı.

Her iki durumda da, önce neye ihtiyacınız olduğunu, ardından hangi algoritmanın bu zorluğu çözebileceğini bulun. Rasgele algoritmalar deneyerek değil, veri odaklı çalışın .


Neden "Hamming mesafesiyle kullanma" açıklayabilir misiniz? Her şeyden önce Matlab'da mevcut olabilir, mantıklı olabilir.
Dror Atariah

Ortalama yüzünden. Aritmetik ortalama, çarpma mesafesi veya ikili verilerle anlamsızdır. Modu kullanın veya onun yerine medoid kullanın.
QUIT - Anony-Mousse

Sadece doğru yaptığımdan emin olmak için: matlab, çekiçleme metriğiyle birlikte k-araçlarını kullanırken centroidleri güncellerken aritmetik ortalamayı kullanır. Bu doğru mu? Bu metriği matlab'da kullanmanın doğru yolu nedir?
Dror Atariah

k-anlamına gelir k- anlamına gelir çünkü ortalamayı kullanır. Aksi takdirde, buna k-medoidler, k-modları vb. Denir. Ortalama L2 için iyidir - kare sapmaların toplamı.
ÇIKIŞ - Anony-Mousse

Yani, matlab kullanır k- vasıta metrik hamming ile birlikte; bu pek mantıklı değil.
Dror Atariah

3

Belki cevap için biraz geç kaldım, ama muhtemelen gelecekte bazı bedenler için yararlı olacaktır.

Uyarlanabilir Rezonans Teorisi, ikili sınıflandırma problemleri için iyi bir algoritmadır. ART 1'i inceleyin. Daha fazla bilgi için bölüm 19'daki ücretsiz Neural Network Design kitabında görebilirsiniz .

Bu ağ, büyük biyolojik fikri ve iyi matematik uygulamasını birleştirir. Ayrıca bu algoritmanın uygulanması kolaydır ve bu kitapta, bu sınıflandırıcının nasıl oluşturulacağı hakkında adım adım talimatlar da bulabilirsiniz.


2

İkili veri kümelemesi için klasik bir algoritma Bernoulli Mixture modelidir. Model Bayesian yöntemleri kullanılarak ve EM (Beklenti Maksimizasyonu) kullanılarak da takılabilir. Birincisi daha güçlü ama aynı zamanda daha zorken GitHub'ın her yerinde örnek python kodu bulabilirsiniz. GitHub'da modelin bir C # uygulaması var (kısıtlayıcı bir lisansı olan Infer.NET kullanıyor!).

Model oldukça basit. İlk önce bir veri noktasının ait olduğu kümeyi örnekleyin. Ardından, veri kümenizdeki boyutlara sahip olduğunuz kadar Bernoullis'ten bağımsız olarak örnek alın. Bunun küme verilen ikili değerlerin koşullu bağımsızlığını ima ettiğini unutmayın!

Bayesian ayarında, önceki küme atamaları bir Dirichlet dağılımıdır. Bazı kümelerin diğerlerinden daha büyük olduğuna inanıyorsanız, öncelikler koymanız gereken yer burasıdır. Her küme için, her Bernoulli dağıtımı için önceden bir Beta dağıtımı belirtmelisiniz. Tipik olarak bu önceki Beta (1,1) veya üniformdur. Son olarak, veriler verildiğinde küme atamalarını rastgele başlatmayı unutmayın. Bu simetriyi bozar ve örnekleyici takılmaz.

Bayesian ortamında BMM modelinin birkaç harika özelliği vardır:

  1. Çevrimiçi kümeleme (veriler akış olarak gelebilir)

  2. Model eksik boyutları çıkarmak için kullanılabilir

Birincisi, veri kümesi çok büyük olduğunda ve bir makinenin RAM'ına uymadığında çok kullanışlıdır. İkincisi, eksik veri ithalatı görevlerinin her türünde kullanılabilir. ikili MNIST görüntüsünün eksik yarısını ima eder.

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.