Regroupement d'une matrice binaire

22

J'ai une matrice semi-petite de caractéristiques binaires de dimension 250k x 100. Chaque ligne est un utilisateur et les colonnes sont des "balises" binaires d'un certain comportement d'utilisateur, par exemple "likes_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

Je voudrais adapter les utilisateurs en 5 à 10 clusters et analyser les chargements pour voir si je peux interpréter des groupes de comportements d'utilisateurs. Il semble y avoir quelques approches pour ajuster les clusters sur des données binaires - quelle est, selon nous, la meilleure stratégie pour ces données?

  • PCA

  • Création d'une matrice de similarité Jaccard , ajustement d'un cluster hiérarchique, puis utilisation des «nœuds» supérieurs.

  • K-médianes

  • K-medoids

  • Proximus ?

  • Agnès

Jusqu'à présent, j'ai réussi à utiliser le clustering hiérarchique, mais je ne suis vraiment pas sûr que ce soit la meilleure solution.

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)

entrez la description de l'image ici

wije
la source
1
Pour les données volumineuses (de nombreux nœuds) et de grande dimension, il peut également être utile d'essayer un algorithme de regroupement de graphes (en utilisant par exemple la similitude tanimoto et des méthodes telles que le regroupement de Louvain, RNSC, mcl). Je doute que votre type de données génère des grappes significatives (cela peut très bien être le cas), mais ces doutes concernent le clustering en général, pas spécifiquement un type particulier de clustering. L'ACP est définitivement quelque chose à essayer.
micans
6
Pour être honnête, je suis surpris que cette question ait attiré un peu d'attention. Pourquoi en est-il ainsi? Pour moi, cela ressemble à une question extrêmement intéressante.
Dror Atariah

Réponses:

9

L'analyse des classes latentes est une approche possible.

Prenez la distribution de probabilité suivante où A, B et C peuvent prendre des valeurs de 1 ou 0.

P(UNEje,Bj,Ck)

Si ceux-ci étaient indépendants les uns des autres, alors nous nous attendrions à voir:

P(UNEje,Bj,Ck)=P(UNEje)P(Bj)P(Ck)

Une fois cette possibilité éliminée, nous pourrions émettre l'hypothèse que toute dépendance observée est due à des regroupements de valeurs dans des sous-groupes autrement non observés. Pour tester cette idée, nous pouvons estimer le modèle suivant:

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

Où est une variable catégorielle latente avec niveaux. Vous spécifiez et les paramètres du modèle (probabilités marginales d'appartenance à une classe et probabilités spécifiques à une classe pour chaque variable) peuvent être estimés via la maximisation des attentes.Xnn

En pratique, vous pouvez estimer plusieurs modèles, avec , et "choisir" le meilleur modèle basé sur la théorie, les indices d'ajustement basés sur la vraisemblance et la qualité de la classification (qui peut être évaluée en calculant les probabilités postérieures d'appartenance à la classe pour les observations).5ndix

Cependant, essayer d'identifier des modèles significatifs dans 100 variables avec 5 à 10 groupes nécessitera probablement de réduire cette liste avant d'estimer le modèle, qui est un sujet assez délicat en soi ( REF ).

DL Dahly
la source
Génial, intéressant. Selon vous, quel est l'avantage d'utiliser cette technique par rapport aux autres?
wije
Un avantage est que le clustering est flou, vous permettant de tenir compte de l'incertitude dans les affectations de classe suivantes. Un autre est que c'est une méthode basée sur un modèle. vous obtenez des indices d'ajustement basés sur la vraisemblance qui peuvent aider à guider la sélection du modèle. Bien sûr, cela se fait au détriment des hypothèses de distribution ... Je suis sûr que d'autres méthodes valides auront leurs propres compromis.
DL Dahly
5

En fait, l' exploration fréquente d'éléments peut être un meilleur choix que le clustering sur de telles données.

L'ensemble d'algorithmes vectoriels habituels n'a pas beaucoup de sens. Par exemple, K-means produira des moyennes qui ne sont plus binaires.

Anony-Mousse -Reinstate Monica
la source
Est-il judicieux d'utiliser des éléments fréquents même si je souhaite regrouper les utilisateurs plutôt que les balises (colonnes)?
wije
1
À mon humble avis, oui. Mais pour des raisons évidentes, les règles d'association ne sont pas un partitionnement strict de l'ensemble de données. Un utilisateur peut être membre de plus d'un "ensemble d'éléments fréquents". C'est-à-dire qu'un utilisateur peut être à la fois un fan de chat et un fan de chien; ces deux groupes ne sont pas forcés d'être disjoints.
Anony-Mousse -Reinstate Monica
Quelle IMHO est vraiment bonne. Supposer que chaque utilisateur est membre d'exactement un cluster me semble trop naïf.
Anony-Mousse -Reinstate Monica