2
votes

Comment évaluer les clusters de texte HDBSCAN?

J'essaie actuellement d'utiliser HDBSCAN pour regrouper les données de films. L'objectif est de regrouper des films similaires (en fonction d'informations sur les films telles que des mots-clés, des genres, des noms d'acteurs, etc.), puis d'appliquer la LDA à chaque cluster et d'obtenir les sujets représentatifs. Cependant, j'ai du mal à évaluer les résultats (à part l'analyse visuelle, ce qui n'est pas génial à mesure que les données augmentent). Avec LDA, bien qu'il soit difficile de l'évaluer, j'utilise la mesure de cohérence. Cependant, quelqu'un a-t-il une idée sur la façon d'évaluer les clusters créés par HDBSCAN? Je n'ai pas pu trouver beaucoup d'informations à ce sujet, donc si quelqu'un a une idée, j'apprécierais beaucoup!


1 commentaires

parfois, un tracé t-sne peut être amusant à regarder. parfois, cela vous encouragera à savoir si vos caractéristiques distinguent les classes. Je dis parfois parce qu'une bonne intrigue t-sne est belle ... et les moins bonnes n'ont pas de sens.


3 Réponses :


1
votes

C'est le même problème partout dans l'apprentissage non supervisé.

Ce n'est pas supervisé, vous essayez de découvrir quelque chose de nouveau et d'intéressant. Il n'y a aucun moyen pour l'ordinateur de décider si quelque chose est réellement intéressant ou nouveau. Il peut décider et des cas triviaux où les connaissances antérieures sont déjà codées sous une forme traitable par machine, et vous pouvez calculer certaines valeurs heuristiques comme un proxy pour l'intérêt. Mais de telles mesures (y compris des mesures basées sur la densité telles que DBCV ne sont en fait pas meilleures pour juger cela que l'algorithme de clustering lui-même choisit la «meilleure» solution).

Mais en fin de compte, il n’existe aucun moyen de regarder manuellement les données et de passer aux étapes suivantes - essayez de mettre en pratique ce que vous avez appris des données. Soi-disant, vous n'êtes pas un universitaire de la tour invory en faisant cela simplement parce que vous essayez de créer une autre méthode inutile ... Alors utilisez-la, ne faites pas semblant de l'utiliser.


0 commentaires

2
votes

HDBSCAN implémente relative_validity . Il vous permettra de comparer un clustering, obtenu avec un ensemble donné d'hyperparamètres, à un autre. En général, lisez l'article sur l ' l'analyse des clusters et l' validation du cluster . Voici une bonne discussion à ce sujet avec l'auteur de la bibliothèque HDBSCAN.


0 commentaires

0
votes

Vous pouvez essayer la bibliothèque clusteval . Cette bibliothèque vous aide à trouver le nombre optimal de clusters dans votre jeu de données, également pour hdbscan. Lorsque vous avez les étiquettes de cluster, vous pouvez démarrer l'analyse d'enrichissement en utilisant hnet .

# Import library
import hnet

# Get labels
clusterlabels = results['labx']

# Compute the enrichment of the cluster labels with the dataframe df
enrich_results = hnet.enrichment(df, clusterlabels)

Exemple:

# Import library
from clusteval import clusteval
# Set the method
ce = clusteval(method='hdbscan')
# Evaluate
results = ce.fit(X)
# Make plot of the evaluation
ce.plot()
# Make scatter plot using the first two coordinates. 
ce.scatter(X)

Ainsi, à ce stade, vous avez les étiquettes de cluster détectées optimales et vous voudrez peut-être savoir s'il existe une association entre l'un des clusters avec un (groupe de) fonctionnalité (s) dans vos méta-données. L'idée est de calculer pour chaque étiquette de cluster à quelle fréquence elle est vue pour une classe particulière dans vos méta-données. Cela peut être défini avec une valeur P. Plus la valeur P est basse (inférieure à alpha = 0,05), moins il est probable que cela se produise par hasard.

results est un dict et contient les étiquettes de cluster optimales dans la clé labx . Avec hnet nous pouvons calculer l'enrichissement très facilement. Vous trouverez plus d'informations ici: https://erdogant.github.io/hnet

pip install clusteval
pip install hnet

Quand on regarde les enrich_results, il y a une colonne avec category_label . Ce sont les variables de métadonnées du dataframe df que nous avons donné en entrée. Les deuxièmes colonnes: P représente la valeur P, qui est la signification calculée du catagory_label avec la variable cible y. Dans ce cas, la variable cible y sont les étiquettes de cluster clusterlabels .

Les étiquettes cibles dans y peuvent être considérablement enrichies plusieurs fois. Cela signifie que certains y sont enrichis pour plusieurs variables dans le dataframe. Cela peut se produire parce que nous pouvons avoir besoin de mieux estimer les étiquettes du cluster ou son groupe mixte ou autre chose.

Pour plus d'informations sur l'enrichissement du cluster, cliquez ici: https://erdogant.github.io/hnet/ pages / html / Utilisez% 20Cases.html # cluster-enrichment


0 commentaires