Comment puis-je tester si mon clustering de données binaires est significatif


12

Je fais des analyses de panier mon ensemble de données est un ensemble de vecteurs de transaction, avec les articles que les produits sont achetés.

Lors de l'application de k-means sur les transactions, j'obtiendrai toujours un résultat. Une matrice aléatoire montrerait probablement aussi quelques grappes.

Existe-t-il un moyen de tester si le clustering que je trouve est significatif, ou cela peut très bien être une coïncidence. Si oui, comment puis-je le faire.

Réponses:


14

Concernant l'analyse du panier, je pense que l'objectif principal est d'individualiser les combinaisons de produits les plus fréquemment achetées par les clients. Ils association rulesreprésentent ici la méthodologie la plus naturelle (en fait, ils ont été développés à cet effet). L'analyse des combinaisons de produits achetés par les clients et du nombre de répétitions de ces combinaisons conduit à une règle du type «si condition, puis résultat» avec une mesure d'intérêt correspondante. Vous pouvez également envisager Log-linear modelsafin d'étudier les associations entre les variables considérées.

Maintenant, en ce qui concerne le clustering, voici quelques informations qui peuvent être utiles:

Considérons d'abord Variable clustering. Le regroupement de variables est utilisé pour évaluer la colinéarité, la redondance et pour séparer les variables en grappes qui peuvent être notées comme une seule variable, entraînant ainsi une réduction des données. Recherchez la varclusfonction (package Hmisc en R)

Évaluation de la stabilité en cluster: fonction clusterboot{R package fpc}

Statistiques basées sur la distance pour la validation de cluster: fonction cluster.stats{R package fpc}

Comme l'a mentionné mbq, utilisez les largeurs de silhouette pour évaluer le meilleur nombre de grappes. Regardez ça . Concernant les largeurs de silhouette, voir aussi la fonction optsil .

Estimer le nombre de grappes dans un ensemble de données via la statistique de l' écart

Pour calculer les indices de dissimilarité et les mesures de distance, voir dsvdis et vegdist

L'algorithme de clustering EM peut décider du nombre de clusters à créer par validation croisée (si vous ne pouvez pas spécifier a priori le nombre de clusters à générer). Bien que l'algorithme EM soit garanti de converger vers un maximum, il s'agit d'un maximum local et peut ne pas nécessairement être le même que le maximum global. Pour une meilleure chance d'obtenir le maximum global, toute la procédure doit être répétée plusieurs fois, avec des suppositions initiales différentes pour les valeurs des paramètres. Le chiffre global de vraisemblance logarithmique peut être utilisé pour comparer les différentes configurations finales obtenues: il suffit de choisir le plus grand des maxima locaux . Vous pouvez trouver une implémentation du clustering EM dans le projet open-source WEKA

C'est aussi un lien intéressant.

Recherche également ici pourFinding the Right Number of Clusters in k-Means and EM Clustering: v-Fold Cross-Validation

Enfin, vous pouvez explorer les résultats du clustering en utilisant clusterfly


8

Il s'agit d'une méthode utilisant Monte Carlo pour montrer si un résultat est correct.

Notre hypothèse nulle H_0 est que notre ensemble de données n'a pas de regroupement intéressant. Notre hypothèse alternative H_1 est que notre ensemble de données contient un regroupement intéressant.

Par la présente, nous considérons comme intéressant, plus intéressant que la structure de clustering d'un jeu de données aléatoire avec les mêmes marges de ligne et de colonne. Bien sûr, d'autres contraintes pourraient être choisies, mais des contraintes lâches rendront notre résultat trop général et des contraintes étroites fixeront le clustering à beaucoup, rendant ainsi notre résultat insignifiant automatiquement. Les marges, comme nous le verrons, sont un bon choix en raison des méthodes existantes pour randomiser avec elle.

Définissons comme statistique de test l'erreur de clustering (distance au carré dans le cluster), T de Π_0. La valeur de notre jeu de données d'origine est t .

Nous ne savons rien de cette distribution, sauf que nous pouvons en tirer des échantillons. Ce qui en fait un bon candidat pour Monte-Carlo.

Maintenant, nous tirons n (iid) des échantillons aléatoires de Π_0 et calculons la valeur p empirique avec la formule p_emp = 1 / (n + 1) * (Σ_i = 1-n I (t_i> = t) + 1)

L'échantillonnage aléatoire peut être effectué par randomisation par échange. En termes simples, un carré est recherché avec sur deux coins opposés un 1 et sur les deux autres coins un 0. Ensuite, les coins sont inversés. Cela permet de conserver les marges des colonnes et des lignes. La procédure est répétée suffisamment de fois jusqu'à ce que l'ensemble de données soit suffisamment randomisé (cela prendra quelques expériences). Plus d'informations à ce sujet peuvent être trouvées dans Évaluation des résultats de l'exploration de données via la randomisation par swap par Gionis et. Al.

Une méthode consiste à définir la distribution de vos données et à prendre l'erreur de clustering comme statistique de test t.

Par exemple, si nous considérons tous les ensembles de données avec les mêmes marges de ligne et de colonne comme étant notre distribution de données, nous pouvons prendre n matrices aléatoires Xi à partir de cette distribution et calculer l'erreur de clustering pour eux. Ensuite, nous pouvons calculer la valeur p impériale par la formule


4

Il y a quelque chose comme la silhouette , qui définit dans une certaine mesure la statistique qui détermine la qualité du cluster (par exemple, elle est utilisée pour optimiser k). Maintenant, un Monte Carlo possible se déroulerait comme suit: vous générez beaucoup de jeux de données aléatoires similaires à votre original (par exemple en mélangeant les valeurs entre les lignes de chaque colonne), cluster et obtenez une distribution de la silhouette moyenne qui peut ensuite être utilisée pour tester la signification de silhouette en données réelles. J'administre toujours que je n'ai jamais essayé cette idée.


1
Cela me rappelle une affiche que j'ai vue à la conférence Human Brain Mapping 2010. Tom Nichols a utilisé le bootstrap paramétrique pour évaluer la stabilité de la corrélation et de la silhouette cophénétiques dans le clustering hiérarchique, mais voir son affiche: j.mp/9yXObA .
chl

@chl Merci; en effet, récemment, j'ai vu des choses similaires faites dans mon laboratoire; le résultat était que les clusters ne sont pas significatifs cependant: - /

Je suis d'accord que cela ressemble à du bootstrap.
Vass

(FYI: interprétation de la valeur de la silhouette ). Notez également que la valeur de la silhouette n'est pas définie pour le cluster k = 1, nous ne pouvons donc pas comparer l'hypothèse k = 1 (c'est-à-dire que l'ensemble de données n'est pas groupé) par rapport à k> 1 (l'ensemble de données est groupé) en utilisant la valeur de silhouette.
Franck Dernoncourt
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.