İkili bir matrisin kümelenmesi


22

250k x 100 boyutunda ikili özelliklerin yarı küçük bir matrisine sahibim. Her satır bir kullanıcıdır ve sütunlar bazı kullanıcı davranışlarının örneğin "likes_cats" gibi ikili "etiketleri" dir.

user  1   2   3   4   5  ...
-------------------------
A     1   0   1   0   1
B     0   1   0   1   0
C     1   0   0   1   0

Kullanıcıları 5-10 kümeye sığdırmak ve kullanıcı davranışı gruplarını yorumlayıp yorumlayamayacağımı görmek için yükleri analiz etmek istiyorum. İkili verilere kümeleri yerleştirmek için oldukça az sayıda yaklaşım olduğu görülüyor - bu veriler için en iyi strateji ne olabilir?

  • PCA

  • Bir Jaccard Benzerliği matrisi yapmak, hiyerarşik bir kümeye uymak ve sonra üst "düğümleri" kullanmak.

  • K-medyan

  • K-medoids

  • Proximus ?

  • Agnes

Şimdiye kadar hiyerarşik kümelemeyi kullanmakta bazı başarılar elde ettim, fakat bunun en iyi yol olduğundan emin değilim.

tags = read.csv("~/tags.csv")
d = dist(tags, method = "binary")
hc = hclust(d, method="ward")
plot(hc)
cluster.means = aggregate(tags,by=list(cutree(hc, k = 6)), mean)

görüntü tanımını buraya girin


1
Büyük (birçok düğüm) ve yüksek boyutlu veriler için, bir grafik kümeleme algoritması denemek de faydalı olabilir (örneğin tanimoto benzerliği ve Louvain kümeleme, RNSC, mcl gibi yöntemler kullanılarak). Veri türünüzün anlamlı kümeler üretip üretmeyeceği konusunda şüphelerim var (elbette çok iyi olabilir), ancak bu şüpheler genel olarak kümelemeyle ilgilidir, özellikle de belirli bir kümelenme türü ile değil. PCA kesinlikle denenecek bir şey.
mikan

6
Dürüst olmak gerekirse, bu sorunun biraz dikkat çekmesine şaşırdım. Neden bu kadar? Bana göre, bu son derece ilginç bir soru gibi geliyor.
Dror Atariah,

Yanıtlar:


9

Gizli sınıf analizi, olası bir yaklaşımdır.

A, B ve C'nin 1 veya 0 değerlerini alabileceği olasılık dağılımını alın.

P(birben,Bj,Ck)

Bunlar birbirinden bağımsız olsaydı, şunu görmeyi beklerdik:

P(birben,Bj,Ck)=P(birben)P(Bj)P(Ck)

Bu olasılık ortadan kalktıktan sonra, gözlemlenen herhangi bir bağımlılığın, gözlemlenmemiş alt gruplarda kümelenen değerlerden kaynaklandığı varsayılabilir. Bu fikri test etmek için aşağıdaki modeli tahmin edebiliriz:

P(birben,Bj,Ck)=P(Xn)P(birben|Xn)P(Bj|Xn)P(Ck|Xn)

Xnn

5n10

Bununla birlikte, 5-10 gruba sahip 100 değişkende anlamlı kalıpları tanımlamaya çalışmak muhtemelen kendi başına yeterince zor bir konu olan modeli tahmin etmeden önce bu listenin azaltılmasını gerektirecektir ( REF ).


Harika, ilginç. Bu tekniği diğerlerinden daha iyi kullanmanın faydası ne dersiniz?
wije

Bir avantaj, kümelemenin bulanık olması ve herhangi bir sonraki sınıf ödevlerinde belirsizliği hesaba katmanıza izin vermesidir. Diğeri ise model tabanlı bir yöntem olması. Model seçimine rehberlik edebilecek olasılık tabanlı uyum göstergeleri elde edersiniz. Bu elbette dağıtım varsayımlarında bulunma pahasına gelir ... Diğer geçerli yöntemlerin kendi travmalarına sahip olacağına eminim.
DL Dahly,

5

Aslında, sık madde kümesi madenciliği , bu tür veriler üzerinde kümelemeden daha iyi bir seçim olabilir.

Her zamanki vektör odaklı algoritmalar kümesi pek bir anlam ifade etmiyor. Örneğin K-araçları, artık ikili olmayan araçlar üretecektir.


Etiketleri (sütunları) kullanmak yerine kullanıcıları kümelemek istesem de sık kullanılan öğeleri kullanmak mantıklı mıdır?
wije

1
IMHO evet. Ancak bariz nedenlerden ötürü, birleşme kuralları veri setinin kesin bir bölümlemesi değildir. Bir kullanıcı birden fazla "sık öge setinin" bir üyesi olabilir. Bir kullanıcı hem bir kedi hayranı hem de köpek hayranı olabilir; Bu iki grup ayrık olmaya zorlanmaz.
Anony-Mousse -Reinstate Monica,

Hangi IMHO aslında iyidir. Her kullanıcının tam olarak bir kümenin üyesi olduğunu farz etmek bana aşırı derecede saf geliyor.
Anony-Mousse -Reinstate Monica
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.