J'ai besoin de quelques suggestions pour la méthode de clustering (classification non supervisée) pour un projet de conseil. Je recherche une méthode qui, espérons-le, possède les propriétés suivantes:
Le sujet de mon étude a trois propriétés. L'une est représentée par une matrice de distance (non euclidienne) et les deux autres sont sous forme de vecteurs dans l'espace euclidien. La matrice de distance provient de séquences et peut prendre la forme d'un pourcentage de dissimilarité ou d'une autre mesure de distance de séquences. L'algorithme devrait pouvoir prendre les deux vecteurs dans l'espace euclidien et la distance non euclidienne en entrée. Par exemple, les K-medoids peuvent fonctionner avec une matrice de distance mais pas les K-means.
Je voudrais que l'algorithme sélectionne automatiquement le nombre de clusters et le poids de trois propriétés (avec connaissances et contraintes préalables).
J'ai des informations sur des «centres de clusters» précédemment identifiés. Je voudrais l'incorporer en tant que valeurs antérieures ou initiales.
En tant que statisticien, je préférerais que la méthode ait une fonction de probabilité ou de perte claire.
La chose la plus proche à laquelle je peux penser est l'ajustement d'un modèle de mélange dans le cadre bayésien en utilisant MCMC à saut inversé pour déterminer le nombre de clusters. Les vecteurs dans R ^ d peuvent être facilement formulés en une vraisemblance normale, mais la façon de traiter la matrice de distance n'est pas claire pour moi. Je peux restreindre la moyenne de la probabilité normale d'être à chacune des observations pour faire fonctionner le MCMC, mais cela n'a pas de signification mathématique / statistique claire.
Quelqu'un a-t-il de l'expérience avec un problème similaire? Les suggestions de références seront très appréciées!
la source
Réponses:
Je pense que l'utilisation d'un critère MAP / Bayésien en combinaison avec un mélange de gaussiens est un choix judicieux. Points
Vous objecterez bien sûr que les MOG nécessitent des données d'entrée euclidiennes . La réponse est de trouver un ensemble de points qui donnent naissance à la matrice de distance qui vous est donnée. Un exemple de technique pour cela est la mise à l'échelle multidimensionnelle:argmin{Xje}∑i , j( | |Xje-Xj||2-réje j)2 où réje j est la distance du point je pointer j .
la source
J'ai traité un problème pour ma thèse où je devais faire un clustering sur un ensemble de données pour lequel je n'avais qu'une matrice de similitude (= distance inverse). Bien que je convienne à 100% qu'une technique bayésienne serait la meilleure, je suis allé avec un modèle discriminant appelé Symmetric Convex Coding ( lien ). Je me souviens que cela fonctionnait très bien.
Sur le front bayésien, vous pourriez peut-être envisager quelque chose de similaire au clustering, mais non? Je pense dans le sens de l'allocation de Dirichlet latente - un algorithme vraiment merveilleux. Entièrement génératif, développé dans le contexte de la modélisation du contenu des sujets dans les corpus de documents texte. Mais il trouve de nombreuses applications dans d'autres types de problèmes d'apprentissage automatique non supervisés. Bien sûr, la fonction de distance n'y est même pas pertinente ...
la source
DBSCAN fonctionne sans connaître à l'avance le nombre de clusters et peut appliquer une large gamme de métriques de distance.
la source
Vous pouvez utiliser la propagation d'affinité ou une meilleure propagation d'affinité adaptative. Voici le lien Wikipédia .
Il y a deux avantages principaux pour votre cas et un autre troisième qui, je pense, est un avantage mais peut ne pas être important pour vous.
Vous ne fournissez pas le nombre de clusters. Le nombre final de clusters dépend de la valeur de préférence et des valeurs de la matrice de similitude. La façon la plus simple de travailler avec les valeurs de préférence est soit d'utiliser la valeur minimale de la matrice de similitude (qui n'est pas nulle) pour obtenir le plus petit nombre de clusters, puis essayez par exemple le maximum pour le plus de clusters possible et continuez avec la médiane valeur et ainsi de suite ... OU Utilisez l'algorithme de propagation d'affinité adaptative et ayez la préférence déterminée par l'algorithme.
Vous pouvez fournir n'importe quelle mesure de similitude que vous pouvez trouver ou prendre l'inverse d'une mesure de distance (peut-être éviter de diviser par zéro lorsque vous faites cela).
3. (point supplémentaire) L'algorithme choisit un exemplaire représentant chaque cluster et les exemples qui lui appartiennent. Cela signifie que l'algorithme ne vous donne pas une moyenne arbitraire mais un point de données réel. Cependant, vous pouvez toujours calculer des moyennes plus tard bien sûr. ET cela signifie également que l'algorithme n'utilise pas de moyennes intermittentes!
Logiciel: Il existe plusieurs packages répertoriés pour Java, Python et R sur la page Wikipedia. Si vous aimez MATLAB, comme moi, alors voici une implémentation.
la source