Question:
Approches de clustering déterministes
geotheory
2016-04-06 19:06:30 UTC
view on stackexchange narkive permalink

J'ai besoin d'une méthode de clustering déterministe [dans le sens - robuste aux méthodes d'entrée initiale / graines initiales] pour regrouper les valeurs dans des distributions qui pourraient être aléatoires, normales ou log-normales. Google affiche principalement des k-means, ce qui n'est pas déterministe. La correction des entrées stochastiques (par exemple set.seed de R) est moins souhaitable que les méthodes qui renvoient toujours des résultats identiques pour un ensemble particulier, donc je peux commencer à comprendre et prédire leur comportement . Une telle méthode de clustering existe-t-elle?

On ne sait pas quelles sont vos données et que voulez-vous que votre algorithme «déterministe» fasse?En outre, chacune des méthodes qui utilise des nombres aléatoires est déterministe compte tenu de la graine.De nombreux algorithmes vous permettront d'utiliser vos propres valeurs de départ (au lieu de valeurs aléatoires), mais dans de nombreux cas, l'utilisation de valeurs de départ aléatoires différentes vous permet d'empêcher l'algorithme de renvoyer de faux résultats ...
Merci Tim, je pense que vos points sont déjà traités dans ma question.
Je ne connais pas assez le sujet pour vraiment donner une réponse formelle, mais je sais qu'il y a des recherches en cours dans [clustering convexe] (http://arxiv.org/pdf/1304.0499.pdf) qui devraient être une réponseà votre question: en rendant la fonction objectif convexe, vous assurez un minimum global sans autre minimum local.Mais c'est à peu près tout ce que je sais pour le moment.
D'accord avec @CliffAB ici.Le clustering convexe est la voie à suivre.Il a été développé exactement pour ce cas - que tant que vous utilisez la même valeur du paramètre de réglage, vous retournez les mêmes clusters EXACT.Je crois que c'est ce à quoi vous faisiez allusion lorsque vous dites «déterministe» (ce qui serait plus adéquatement appelé _reproductible_).Vous devriez vérifier ce package R: [CVXcluster] (https://cran.r-project.org/web/packages/cvxclustr/cvxclustr.pdf) et ses références.
Je suis d'accord avec Tim pour dire qu'il serait utile d'en savoir un peu plus sur le problème.Lorsque vous dites «déterministe», voulez-vous dire que les mêmes choses se retrouvent dans des grappes à chaque fois, ou qu'elles se retrouvent exactement dans le même numéro de grappe?Le nombre de clusters est-il fixe ou non?Lorsque vous dites "prédire leur comportement", essayez-vous vraiment de trouver une méthode supervisée qui utilise les nombres de grappes comme cible?Ou autre chose?
Est-ce également pour un ensemble fixe de données d'entraînement / de test?Parce que même avec des algorithmes complètement déterministes, si vos données d'entraînement varient entre les tentatives, les clusters le seront probablement aussi.Si les données d'entraînement * sont * fixes, quel est le problème avec l'utilisation d'une graine aléatoire fixe?
Je me suis contenté de "gaz neural" à la fin - par ex.`cclust :: cclust (..., méthode = 'névralgies')`
@naught101, Dites-vous que l'utilisation d'une graine aléatoire fixe fait du clustering de base k-means (algorithme non déterministe) un algorithme déterministe ?.Cela signifie que l'exécution de l'algorithme plusieurs fois sur les mêmes données donnerait les mêmes résultats.
@anu, en supposant la même implémentation, alors oui, sauf si je manque quelque chose.Que ce soit un fait utile ou non, je ne sais pas.
Quatre réponses:
Has QUIT--Anony-Mousse
2016-04-07 02:42:36 UTC
view on stackexchange narkive permalink

Le clustering agglomératif hiérarchique est déterministe, sauf pour les distances liées lorsque n'utilise pas de liaison simple.

DBSCAN est déterministe, sauf pour la permutation de l'ensemble de données dans de rares cas.

k-means est déterministe sauf pour l'initialisation. Vous pouvez initialiser avec les k premiers objets, alors c'est aussi déterministe.

PAM comme k-means.

... mais il y a probablement 100 algorithmes de clustering supplémentaires!

Pourriez-vous donner plus de détails sur votre réponse?Dans ma compréhension, le clustering de base k-means est basé sur un algorithme non déterministe.Cela signifie que l'exécution de l'algorithme plusieurs fois sur les mêmes données peut donner des résultats différents.
Sauf pour l'initialisation, comme je l'ai écrit ci-dessus, elle est déterministe.Revérifier.
oui, mais tout l'algorithme est non déterministe!L'initialisation fait partie de l'algorithme k-means!il devrait donc être de nature non déterministe!
Il n'y a pas de «k-moyens».L'algorithme de MacQueen (qui a inventé le nom k-means) * est * entièrement déterministe, car il utilise les k premiers points comme graines.
rcpinto
2016-04-06 21:15:52 UTC
view on stackexchange narkive permalink

Je peux vous orienter vers un algorithme et une famille d'algorithmes:

  • L'algorithme s'appelle IGMM (Incremental Gaussian Mixture Model). Il est robuste (mais pas insensible) à la commande. Mais lorsque les données arrivent dans le même ordre, elles donnent toujours le même résultat.
  • Une famille d'algorithmes de clustering qui satisfait vos conditions est le clustering spectral. Ce sont des algorithmes par lots et vous donneront les mêmes résultats pour les mêmes ensembles de données, même avec un ordre différent.

EDIT: aussi, il existe des méthodes d'initialisation déterministe des clusters K-Means, comme comme celui-ci.

Tim
2016-04-06 20:07:37 UTC
view on stackexchange narkive permalink

Tous les algorithmes, par définition, sont déterministes compte tenu de leurs entrées. Tout algorithme qui utilise des nombres pseudo-aléatoires est déterministe étant donné la valeur de départ.

K-signifie, que vous avez utilisé comme exemple, commence par des centres de gravité de cluster choisis au hasard afin de trouver les meilleurs. Outre l'initialisation, l'algorithme est totalement déterministe, car vous pouvez vous assurer de regarder son pseudo-code:

enter image description here

Rien ne vous interdit de commencer avec des centres de gravité non aléatoires. Nous utilisons des centres de gravité aléatoires afin de nous assurer que des points de départ mal choisis ne nous conduiront pas à de mauvais résultats. La même chose avec d'autres algorithmes "aléatoires": vous pouvez les utiliser de manière "déterministe", mais dans la plupart des cas, ce n'est pas une bonne chose à faire.

Dans le cas de k-means, l'algorithme minimise de manière déterministe la somme des carrés intra-cluster pour trouver la solution de clustering optimale. Malheureusement, il est sensible à la façon dont l'algorithme a été initialisé. Dans la plupart des cas, les problèmes de clustering n'ont pas de solutions claires, à cause de cela, nous voulons souvent utiliser des procédures aléatoires pour les renforcer.

Imaginez que vous ayez utilisé un algorithme de clustering hiérarchique déterministe . Imaginez qu'il parcourt vos données de manière séquentielle, à partir de la première observation. Que se passerait-il si le premier cas était une valeur aberrante? D'un autre côté, si vous l'initialisez plusieurs fois à des points aléatoires, la procédure sera moins sujette à des problèmes de données.

De plus, si vous exécutez plusieurs fois un algorithme non "déterministe" puis utilisez la majorité voter pour choisir pour chaque cas la classe qui apparaît le plus souvent parmi les résultats, puis la sortie finale sera également très déterministe.

Bien que ce soit une déclaration vraie, cela ne semble pas répondre à la question du PO: ils sont intéressés par des méthodes de cluster robustes aux valeurs initiales (dans la limite du raisonnable, bien sûr).Notez également que les algorithmes qui ne sont définitivement pas considérés comme "déterministes" (c'est-à-dire MCMC) donneraient des réponses identiques si la graine était définie avant l'exécution.
Si la spécification des centres de gravité de départ rendrait le processus déterministe, cela pourrait aider.Mais un problème que j'ai avec kmeans est qu'il se débat avec par exempledistributions de journaux: je pourrais avoir 50% des valeurs `1` que je veux vraiment en tant que cluster unique, mais kmeans combine généralement ce groupe avec des valeurs beaucoup plus élevées parce que l'extrémité supérieure est si loin.Je suppose que je pourrais essayer de prendre le journal de l'ensemble avec l'exposant `fn (max (x))`, et regrouper les résultats.
@geotheory: Je ne vois aucune raison pour laquelle l'utilisation d'une méthode robuste aux valeurs initiales aiderait ce problème?Cela semble être un problème orthogonal.
@geotheory comment imagineriez-vous un algorithme déterministe pour aider dans un tel cas?Je ne vois aucune raison pour laquelle cela changerait quoi que ce soit.
@Tim J'ai juste besoin de la méthode pour reproduire de manière fiable les mêmes résultats en fonction de ses entrées, et non en définissant la graine.Mes tests utilisant `set.seed` ont donné des résultats assez variables.
Les résultats @geotheory obtenus en utilisant les mêmes graines doivent ** toujours ** être les mêmes.Vous devez avoir une sorte de bogue dans votre code si ce n'est pas le cas.
@Tim Je parle de la variabilité des résultats de différents modèles de semences.Si vous obtenez des résultats aussi différents pour les mêmes données, comment pouvez-vous être sûr que l'utilisation des résultats d'un clustering particulier est quelque chose qui s'approche de l'optimum?
@geotheory dans de nombreux cas, s'il n'y a pas de bogue dans le code, une grande variabilité des résultats suggérerait que l'algorithme avait des problèmes pour converger vers la solution véritablement optimale.Mais l'algorithme «déterministe» n'est pas un remède ici: l'algorithme qui renverrait la même mauvaise solution à chaque fois est-il meilleur que celui qui renvoie à chaque fois différentes mauvaises solutions (ou qui renvoie une solution valide avec une certaine probabilité)?C'est ** exactement ** le cas où la randomisation aide à diagnostiquer et à prévenir les problèmes ...
@Tim Je suis sûr que tout est correct du point de vue de la rigueur statistique.Je suis juste à la recherche d'un outil en qui je peux avoir confiance (c'est-à-dire prédire) pour pouvoir le contourner!
@geotheory vous pouvez faire confiance à tous les principaux algorithmes.Le problème de la prévisibilité est de choisir la méthode appropriée pour vos données - ici le fait qu'elle soit "déterministe" n'a rien à voir!Tout l'argument est que l'algorithme déterministe peut vous donner une fausse impression de «fiabilité» ici ... Si tel est * le * problème, je vous encourage à poser une nouvelle question concernant l'algorithme approprié pour vos données particulières, qui correspond à votreobjectifs (vous auriez besoin de décrire vos données plus en détail pour cela).
Je pense que vous inférez que ma priorité pour une méthode déterministe est parce que je la considère plus fiable.Ce n'est pas le cas.Je recherche simplement quelque chose de compréhensible / prévisible, qui exclut les méthodes stochastiques.
@geotheory mais par ex.k-means n'est de toute façon pas stochastique - il est initialisé avec des centroïdes aléatoires, mais après cela, tout est déterministe.C'est pourquoi je vous suggère de vérifier ce qui est exactement randomisé dans ces algorithmes et pourquoi.
@Tim, Je n'ai pas compris votre définition de l'algorithme déterministe et non déterministe (il devrait être holistique n'est-ce pas ?, Comment pouvez-vous dire que laisser la partie d'initialisation aléatoire de l'algorithme est déterministe, je pense que l'initialisation si une partie de laalgorithme lui-même)?dans ma compréhension, le clustering de base k-means est basé sur un algorithme non déterministe.Cela signifie que l'exécution de l'algorithme plusieurs fois sur les mêmes données pourrait donner des résultats différents et c'est vrai aussi!Veuillez fournir une ressource citable pour votre déclaration, ce sera utile!
@Tim, ici, est 1 [source] (https://www.denovosoftware.com/site/manual/cluster_analysis2.htm) sur beaucoup pour votre référence!
@anu, le problème était qu'OP n'aimait pas les sorties non déterministes des algorithmes de clustering.La réponse est que rien ne vous interdit une initialisation non aléatoire qui conduira à des sorties déterministes.La déclaration est assez explicite.
Mike Hunter
2016-06-21 16:32:02 UTC
view on stackexchange narkive permalink

Si je devais réinterpréter votre description de «déterministe», cela me paraîtrait plus comme une analyse de cluster longitudinale et «confirmatoire» - à l'exception importante que vous n'avez pas explicitement intégré les considérations de séries chronologiques dans votre modèle. Les méthodes de regroupement de confirmation sont déployées une fois que l'on estime que «l'espace» qu'elles sont censées décrire a été suffisamment bien compris pour éviter le besoin d'approches exploratoires. La cladistique basée sur la spéciation en est un exemple.

Les solutions de cluster longitudinal reçoivent enfin l'attention qu'elles méritent dans la littérature. À ma connaissance, les premiers travaux remontent aux années 80 avec les algorithmes à trois modes de Pieter Kroonenberg. Mais il y a beaucoup de recherches récentes intéressantes qui impliquent des chaînes de markov cachées, par exemple, les articles de Steve Scott ou l'article de thèse d'Oded Netzer utilisant tous deux des HMM, des approches théoriques de l'information hiérarchiques et non basées sur le moment telles que le clustering de distribution de permutation d'Andreas Brandmaier ainsi que les chapitres. consacré aux algorithmes de clustering longitudinal dans le livre Data Clustering d'Aggarwal et Reddy.

L'élément clé à garder à l'esprit avec toutes ces approches emprunte à la conceptualisation par Kroonenborg d'une matrice multimode dans la mesure où vous ne pouvez pas faire bouger tous les modes en même temps. Cela signifie que la dernière chose à faire est de réinitialiser l'algorithme avec chaque nouvel ensemble de données. Vous voulez plutôt "corriger", par exemple, deux des trois modes, permettant au troisième mode de varier dans une sorte de "conception" expérimentale. De cette manière, vous pouvez étudier plus attentivement l'impact de la dynamique du changement sur un créneau donné dans vos données.

Cette approche est recommandée quel que soit l'algorithme utilisé.

* EDIT * En fait, je me trompe sur le fait que le travail de Kroonenberg est le plus ancien en mode 3 une analyse. Ledyard Tucker a probablement écrit l'article original en 1966, Quelques notes mathématiques sur l'analyse factorielle à trois modes .



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...