2

Je suis encore en train de faire des recherches sur l'évaluation des grappes formées à l'aide de la grappe (apprentissage non supervisé)?Comment évaluer le clustering?

J'ai essayé la googling mais les mesures que j'ai sont trop théoriques. Ce sera formidable si les gens peuvent partager les mécanismes qu'ils utilisent pour évaluer les groupes formés. Disons que j'ai un Java Cluster qui contiendra Java EE, Java ME, RMI, JVM etc., un autre cluster dit NoSQL et qui aura quelque chose comme Neo4j, OrientDB, CouchDB etc. C'est parfait et mon algorithme de clustering m'a donné le plus grappes précises. Cependant, après l'entraînement puis les tests, je pourrais avoir MySQL, Oracle sous cluster NoSQL, donc je fais juste une interprétation manuelle/visuelle, puis je réentraîne mon Algorithme ou je le peaufine pour obtenir un meilleur Clustering.

Maintenant, je veux automatiser ce processus de visualisation des clusters manuellement et avoir un système qui me donne la précision des groupes formés. Je cherche quelque chose de similaire à Precision, Recall, NDCG, Map etc utilisé dans la recherche. Mes clusters sont de longueur variable et il peut y avoir n - cluster différent formé donc la précision/rappel ne serait pas la bonne chose.

Répondre

2

Je travaille sur un projet avec Clustering et j'ai toujours la même question.

En ce moment j'utilise la bibliothèque JavaML qui a intégré plusieurs algorithmes de regroupement (dans mon cas j'utilise K-means) et cette bibliothèque a également plusieurs fonctions pour évaluer ces algorithmes.

La fonction que j'utilise pour évaluer la «qualité» de mes clusters est la somme des erreurs au carré des éléments de chaque cluster. Pour expliquer pas si mathématiquement cette méthode d'évaluation, la somme des erreurs au carré résume la distance de chaque élément de chaque groupe à leur centre de gravité respectif (en cas de K-means). Ce n'est pas une évaluation parfaite et idéale comme vous le souhaitez qui peut être meilleure que la comparaison visuelle (j'ai le même problème) mais au moins est une façon formelle d'identifier «à quel point vos grappes sont bonnes». C'est bon marché, rapide et peut vous donner une vue générale de vos clusters.

Vous pouvez également vérifier le problème 'Cluster labeling'. Ce n'est pas trivial, mais il a l'intention d'attaquer le même problème.

Je pense que la bonne réponse à votre question dépend de l'algorithme de regroupement que vous utilisez et comprendre certaines théories mathématiques ici parce que ce n'est pas un sujet facile :)

Bonne chance!

+0

Merci pour cette information. Votre message est définitivement utile. – Yavar

+0

J'espère que ça aide! Je suis impatient de savoir comment ce projet a pris fin –

1

Normalement, le regroupement est utilisé comme un algorithme d'apprentissage non supervisé et semi-supervisé. Puisque vous avez mentionné "Cependant, après l'entraînement puis les tests, je pourrais avoir MySQL, ..." Je suppose que vous utilisez un algorithme de clustering semi-supervisé pour votre application.

Vous pouvez augmenter le nombre de fonctions d'entrée (ou effectuer plusieurs expériences en augmentant le nombre de fonctions d'entrée) pour voir comment la précision de votre système change w.r.t. taille du vecteur de caractéristiques.

En outre, vous pouvez évaluer différents algorithmes de cluster et sélectionner le meilleur algorithme qui offre la meilleure précision de prédiction.

+0

Merci Upul. En fait, je travaille sur l'apprentissage non supervisé parce que les clusters ne sont pas fixés initialement et que j'ai un texte non structuré. J'ai déjà choisi un algorithme de clustering. Cependant, je veux évaluer le même algorithme de clustering par rapport au cluster qu'il produit.À titre d'exemple, disons que j'obtiens des grappes, alors quelle métrique peut être utilisée pour évaluer les grappes qui peuvent simplement me donner un pourcentage, à savoir que la précision de la grappe est de 70%. Ensuite, je peux travailler et recycler mon même algorithme pour atteindre une plus grande précision. – Yavar