2013-02-24 5 views
6

J'ai besoin de trouver des classes de noms d'origine naturelle en fonction de leur distribution avec différentes préposition (comme agentive, instrumental, temps, lieu, etc.). J'ai essayé d'utiliser k-means clustering mais de moins en moins d'aide, ça ne fonctionnait pas bien, il y avait beaucoup de chevauchement sur les classes que je cherchais (probablement à cause de la forme non-globulaire des classes et de l'initialisation aléatoire dans k-means).Estimation de paramètre dans DBSCAN

Je travaille actuellement sur l'utilisation de DBSCAN, mais j'ai de la difficulté à comprendre la valeur epsilon et la valeur des mini-points dans cet algorithme de clustering. Puis-je utiliser des valeurs aléatoires ou dois-je les calculer? Quelqu'un peut-il aider. Particulièrement avec epsilon, au moins comment le calculer si j'en ai besoin.

Répondre

6

Utilisez votre connaissances de domaine pour choisir les paramètres. Epsilon est un rayon. Vous pouvez considérer cela comme une taille de cluster minimale. Il est évident que les valeurs aléatoires ne fonctionneront pas très bien. En tant qu'heuristique, vous pouvez essayer de regarder un tracé de distance k; mais ce n'est pas automatique non plus.

La première chose à faire est de choisir une bonne fonction de distance pour vos données. Et effectuez une normalisation appropriée.

Comme pour "minPts" cela dépend encore une fois de vos données et besoins. Un utilisateur peut vouloir une valeur très différente d'une autre. Et bien sûr, minPts et Epsilon sont couplés. Si vous doublez epsilon, vous devrez grossièrement augmenter vos minPts de 2^d (pour la distance euclidienne, car c'est ainsi que le volume d'une hypersphère augmente!)

Si vous voulez beaucoup de petites et fines grappes détaillées, choisissez un minpts faible. Si vous voulez des clusters plus grands et moins nombreux (et plus de bruit), utilisez un minpts plus grand. Si vous ne voulez pas du tout de clusters, choisissez des miniatures plus grandes que la taille de votre jeu de données ...

+0

Je ne serai pas en mesure de vous dire les paramètres ici. Vous devez * expérimenter *. Mais sérieusement, d'abord essayer de comprendre comment mesurer la similarité. Un résultat de clustering DBSCAN sera toujours aussi bon que votre fonction de similarité. –

+0

Je suppose une structure hiérarchique dans mes données, avec 3 classes majeures. J'ai environ 32K points avec 15 dimensions. Mon point de données: nom, compte (prep1)/compte total d'un nom, compte (prep2)/total ....... compte (prep15)/total. J'utilise la fonction de distance euclidienne, je n'en ai pas encore essayé d'autres. Que voulez-vous dire par normalisation, comment je suis censé normaliser les données, j'ai déjà normalisé les distributions par fréquence totale d'un nom donné. Encore une question, c'est à propos de k-means, puis-je choisir centroid avant main, comme je peux deviner les prototypes de chaque classe étant donné mes connaissances du domaine. – Riyaz