Mam pół-małą macierz funkcji binarnych o wymiarze 250k x 100. Każdy wiersz to użytkownik, a kolumny to binarne „tagi” niektórych zachowań użytkownika, np. „Like_cats”.
user 1 2 3 4 5 ...
-------------------------
A 1 0 1 0 1
B 0 1 0 1 0
C 1 0 0 1 0
Chciałbym dopasować użytkowników do 5-10 klastrów i przeanalizować obciążenia, aby zobaczyć, czy potrafię interpretować grupy zachowań użytkowników. Wydaje się, że istnieje wiele metod dopasowywania klastrów do danych binarnych - co naszym zdaniem może być najlepszą strategią dla tych danych?
PCA
Tworzenie macierzy podobieństwa Jaccard , dopasowanie hierarchicznego klastra, a następnie użycie górnych „węzłów”.
Mediany K.
K-medoidy
Proximus ?
Agnieszka
Do tej pory odnosiłem pewne sukcesy w stosowaniu klastrowania hierarchicznego, ale tak naprawdę nie jestem pewien, czy jest to najlepsza droga…
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)
źródło
Odpowiedzi:
Jednym z możliwych podejść jest utajona analiza klas.
Weźmy następujący rozkład prawdopodobieństwa, w którym A, B i C mogą przyjąć wartości 1 lub 0.
Gdyby były one od siebie niezależne, spodziewalibyśmy się:
Po wyeliminowaniu tej możliwości możemy postawić hipotezę, że jakakolwiek zaobserwowana zależność jest spowodowana grupowaniem wartości w innych, nieobserwowanych podgrupach. Aby przetestować ten pomysł, możemy oszacować następujący model:
Jednak próba zidentyfikowania znaczących wzorców w 100 zmiennych z 5-10 grupami prawdopodobnie będzie wymagać zmniejszenia tej listy przed oszacowaniem modelu, co jest dość trudnym tematem samo w sobie ( REF ).
źródło
W rzeczywistości częste wyszukiwanie zestawów przedmiotów może być lepszym wyborem niż grupowanie takich danych.
Zwykły zestaw algorytmów zorientowanych na wektor nie ma większego sensu. Na przykład środki K wytwarzają środki, które nie są już binarne.
źródło