Choisir eps et minpts pour DBSCAN (R)?
J'ai été à la recherche d'une réponse à cette question depuis un certain temps, alors j'espère que quelqu'un pourra m'aider. Je suis l'aide de dbscan de la fpc de la bibliothèque dans R. Par exemple, je suis à la recherche à la USArrests ensemble de données et je suis à l'aide de dbscan comme suit:
library(fpc)
ds <- dbscan(USArrests,eps=20)
Choix d'eps était simplement par essai et erreur dans ce cas. Cependant, je me demande si il existe une fonction ou un code permettant d'automatiser le choix de la meilleure eps/minpts. Je sais que certains livres recommandent la production d'une parcelle de la kième triés distance de son plus proche voisin. Qui est, l'axe x représente les "Points triés en fonction de la distance à kth plus proche voisin" et l'axe des y représente le "kth voisin le plus proche de la distance".
Ce type de graphique est utile pour aider à choisir une valeur appropriée pour l'eps et minpts. J'espère avoir fourni assez d'informations pour que quelqu'un m'aider. Je voulais poster une photo de ce que je voulais dire mais je suis encore un débutant ne peut donc pas poster une image pour l'instant.
source d'informationauteur Belinda Chiera
Vous devez vous connecter pour publier un commentaire.
Il n'existe pas de façon de choisir minPts. Cela dépend de ce que vous voulez trouver. Un faible minPts signifie qu'il va construire plus de grappes de bruit, afin de ne pas les choisir trop petit.
Pour epsilon, il y a différents aspects. De nouveau se résume à choisir ce qui fonctionne sur ce ensemble de données et ce minPts et ce fonction de distance et ce de normalisation. Vous pouvez essayer de faire un knn distance de l'histogramme et de choisir un "genou", mais il n'est peut-être visible à l'un ou à plusieurs.
OPTIQUE est un successeur de DBSCAN qui n'a pas besoin du paramètre epsilon (sauf pour des raisons de performances avec l'indice de soutien, voir Wikipedia). C'est beaucoup plus agréable, mais je crois que c'est une douleur à mettre en œuvre dans R, parce qu'il faut avancée structures de données (idéalement, un index des données de l'arbre pour l'accélération et une pouvant être mis à jour tas pour la file d'attente de priorité), et R est tout au sujet des opérations matricielles.
Naïvement, on peut imaginer l'OPTIQUE de le faire toutes les valeurs de Epsilon dans le même temps, et de mettre les résultats dans un cluster de la hiérarchie.
La première chose que vous devez vérifier cependant - et à peu près indépendante de tout algorithme de clustering que vous allez utiliser - assurez-vous d'avoir une durée de fonction de distance appropriée et la normalisation des données. Si votre distance dégénère, pas algorithme de clustering fonctionne.
Commun et populaire de la gestion de l'epsilon paramètre de DBSCAN est de calculer un k-distance de la parcelle de votre jeu de données. Essentiellement, vous devez calculer les k-plus proches voisins (k-NN) pour chaque point de données pour comprendre ce qu'est la distribution de la densité de vos données, pour les différents k. le KNN est très pratique car il est non-paramétrique de la méthode. Une fois que vous choisissez un minPTS (qui dépend fortement de vos données), vous fixer k à cette valeur. Ensuite, vous utilisez comme epsilon de la k-distance correspondant à la zone de la k-distance de la parcelle (pour votre fixe k) avec une faible pente.
MinPts
Comme Anony-Mousse expliqué, 'Une faible minPts signifie qu'il va construire plus de grappes de bruit, afin de ne pas les choisir trop petit.'.
minPts est mieux définie par un expert du domaine qui comprend les données. Malheureusement de nombreux cas, nous ne connaissons pas la connaissance du domaine, en particulier après les données normalisées. Une approche heuristique est d'utiliser ln(n)où n est le nombre total de points pour être mis en cluster.
epsilon
Il existe plusieurs façons de déterminer:
1) k-distance de la parcelle
Dans un regroupement avec minPts = k, nous nous attendons à ce que de base les pintes et les points de la frontière " k-distance sont dans une certaine gamme, tandis que le bruit de points peut avoir beaucoup plus de k-distance, on peut donc observer une genou point dans le k-distance de la parcelle. Cependant, parfois, il peut ne pas être évident du genou, ou il peut y avoir plusieurs genoux, ce qui rend difficile de décider
2) DBSCAN des extensions comme OPTIQUE
L'OPTIQUE de produire des clusters hiérarchiques, nous pouvons extraire d'importantes plat clusters à partir de la hiérarchie de clusters par inspection visuelle, l'OPTIQUE de la mise en œuvre est disponible dans le module Python pyclustering. Celui de l'auteur original de DBSCAN et de l'OPTIQUE a également proposé de manière automatique pour extraire plat clusters, où aucune intervention humaine n'est nécessaire, pour plus d'informations, vous pouvez lire ce document.
3) analyse de sensibilité
Fondamentalement, nous voulons choisir un rayon qui est capable de cluster plus vraiment des points réguliers (points qui sont similaires à d'autres points), tandis que dans le même temps, de détecter plus de bruit (outlier points). On peut en tirer une pourcentage de points réguliers (points appartiennent à un cluster) VS. epsilon analyse, où nous avons établi différents epsilon valeurs de l'axe des x, et leur pourcentage correspondant régulier de points de l'axe des y, et nous espérons que nous pouvons repérer un segment où le pourcentage de points réguliers valeur est plus sensible à la valeur epsilon, et nous choisissons la limite supérieure valeur epsilon que nos paramètres optimal.
Voir cette page web, section 5: http://www.sthda.com/english/wiki/dbscan-density-based-clustering-for-discovering-clusters-in-large-datasets-with-noise-unsupervised-machine-learning
Il donne des instructions détaillées sur la façon de trouver epsilon. MinPts ... pas tellement.