2016-02-29 3 views
0

Je dois diviser les points de données en points similaires ("bons" points) et tous les autres ("mauvais" points).Les données du cluster sont bonnes ou mauvaises

Il ressemble à une sorte de problème de regroupement et que dois-je faire:

Je suppose qu'il ya au moins deux points « bons ».

  1. Trouver la distance par paire entre tous les types de points.
  2. Trouver la distance minimale (minDist).
  3. Faire un regroupement hiérarchique pour tous les points.
  4. Faire une coupe à la hauteur de 5 * minDist.
  5. Dites que tous les points appartenant à la même grappe que la paire minDist et sous cette coupe appartiennent au "bon" cluster souhaité.

Et cela fonctionne plutôt bien, mais s'il y a deux points qui sont très proches les uns des autres. minDist est très petit et cette coupe 5 * minDist est aussi petite => seulement ces 2 points sont dans le "bon" cluster désiré.

Je pense que ce soit, je dois changer cette approche tout à fait et voici la question numéro 1:

[1] « ? Quelles méthodes existent pour séparer des points similaires de tout le monde »

Ou j'ai besoin de modifier cette minDist 5 * pour une autre fonction de minDist. Et la question est:

[2] "Que puis-je choisir comme alternative raisonnable à 5 * minDist?"

Vladimir

Répondre

0

Au lieu de faire le regroupement, vous voulez faire détection des valeurs aberrantes.

Il existe des dizaines d'algorithmes pour cela (voir ELKI pour une grande collection). Des méthodes très simples peuvent résoudre votre problème:

  1. Le nombre de voisins dans le rayon r. Si + i < seuil, le point est un aberrant.

  2. Distance au k voisin le plus proche. Choisissez k> 1 pour éviter ces 2 groupes d'éléments que vous voyez.

De plus, le clustering DBSCAN peut fonctionner pour vous. Considérons tous les clusters pour être bon, et seulement bruit être mauvais!