Je cherche une réponse à cette question depuis assez longtemps, alors j'espère que quelqu'un pourra m'aider. J'utilise dbscan à partir de la bibliothèque fpc dans R. Par exemple, je regarde le jeu de données USArrests et j'utilise dbscan dessus comme suit:
library(fpc)
ds <- dbscan(USArrests,eps=20)
Choisir eps s’est fait par essais et erreurs en l’espèce. Cependant, je me demande s’il existe une fonction ou un code permettant d’automatiser le choix des meilleurs fichiers eps/minutes. Je sais que certains livres recommandent de créer un tracé de la kème distance triée par rapport à son plus proche voisin. C'est-à-dire que l'axe des abscisses représente "les points triés en fonction de la distance au kème voisin le plus proche" et que l'axe des ordonnées représente la "kème distance du voisin le plus proche".
Ce type de tracé est utile pour vous aider à choisir une valeur appropriée pour eps et minpts. J'espère avoir fourni suffisamment d'informations pour que quelqu'un puisse m'aider. Je voulais poster une photo de ce que je voulais dire, mais je suis toujours un débutant, donc je ne peux pas poster une image pour l'instant.
Il n'y a pas de moyen général de choisir les minutes. Cela dépend de ce que vous voulez trouver. Un faible nombre de minutes signifie qu'il créera plus de grappes à partir du bruit, alors ne le choisissez pas trop petit.
Pour epsilon, il existe différents aspects. Cela revient encore à choisir ce qui fonctionne sur les ensembles de données ceci et la ceci minPts et ceci fonction de distance et la normalisation ceci. Vous pouvez essayer de créer un histogramme de distance connu et choisir un "genou", mais il est possible qu’il n’y en ait pas de multiple visible.
OPTICS succède à DBSCAN et n’a pas besoin du paramètre epsilon (sauf pour des raisons de performances avec prise en charge des index, voir Wikipedia). C’est beaucoup plus agréable, mais j’imagine qu’il est difficile à implémenter dans R, car il nécessite des structures de données avancées (idéalement, une arborescence d’index de données pour l’accélération et un segment pouvant être mis à jour pour la file d’attente prioritaire), et R est tout sur les opérations de la matrice.
Naïvement, on peut imaginer que OPTICS utilise toutes les valeurs d’Epsilon en même temps et place les résultats dans une hiérarchie de clusters.
La première chose à vérifier cependant - indépendamment de l'algorithme de classification que vous allez utiliser - est de vous assurer que vous disposez d'une fonction de distance utile et d'une normalisation des données appropriée. Si votre distance dégénère, l'algorithme de groupement non fonctionnera.
Un moyen courant de gérer le paramètre epsilon de DBSCAN consiste à calculer un tracé k-distance de votre jeu de données. Fondamentalement, vous calculez les k plus proches voisins (k-NN) pour chaque point de données afin de comprendre quelle est la distribution de densité de vos données, pour différents k. le KNN est pratique car c'est une méthode non paramétrique. Une fois que vous avez choisi un minPTS (qui dépend fortement de vos données), vous corrigez k à cette valeur. Ensuite, vous utilisez comme epsilon la distance k correspondant à la surface du tracé de la distance k (pour votre k fixe) avec une faible pente.
MinPts
Comme Anony-Mousse a expliqué, 'Un nombre de points faible signifie qu'il créera plus de grappes à partir du bruit, ne le choisissez pas trop petit.'.
minPts est mieux défini par un expert du domaine qui comprend bien les données. Malheureusement, dans de nombreux cas, nous ne connaissons pas la connaissance du domaine, en particulier après la normalisation des données. Une approche heuristique consiste à utiliser ln (n), où n représente le nombre total de points à regrouper.
epsilon
Il y a plusieurs façons de le déterminer:
1) tracé de distance k
Dans un regroupement avec minPts = k, nous nous attendons à ce que la distance k de la pinte principale et de la frontière soient dans une certaine plage, alors que les points de bruit peuvent avoir une distance k beaucoup plus grande. Nous pouvons donc observer un genou point dans la parcelle k-distance. Cependant, parfois, il peut ne pas y avoir de genou évident, ou il peut y avoir plusieurs genoux, ce qui rend la décision difficile
2) Les extensions DBSCAN comme OPTICS
OPTICS produit des grappes hiérarchiques, nous pouvons extraire des grappes plates significatives à partir des grappes hiérarchiques par inspection visuelle, la mise en oeuvre de OPTICS est disponible dans le module Python pyclustering . L'un des auteurs originaux de DBSCAN et d'OPTICS a également proposé un moyen automatique d'extraire des grappes plates, sans aucune intervention humaine. Pour plus d'informations, vous pouvez lire le présent document .
3) analyse de sensibilité
Fondamentalement, nous souhaitons choisir un rayon capable de regrouper des points plus véritablement réguliers (points similaires à d'autres points) tout en détectant davantage de bruit (points aberrants). Nous pouvons dessiner un pourcentage de points normaux} (les points appartiennent à un cluster) VS. analyse epsilon, où nous définissons différentes valeurs epsilon en tant qu'axe des x et leur pourcentage correspondant de points réguliers en tant qu'axe des y, et nous espérons pouvoir repérer un segment où le pourcentage de points réguliers est plus sensible à la valeur epsilon, et nous choisissons la valeur supérieure epsilon comme paramètre optimal.
Pour plus de détails sur le choix des paramètres, voir le document ci-dessous, p. 11:
Schubert, E., Sander, J., Ester, M., Kriegel, H. P. et Xu, X. (2017). DBSCAN revisité, revisité: pourquoi et comment utiliser (toujours) DBSCAN. Transactions ACM sur les systèmes de base de données (TODS), 42 (3), 19.
- Pour les données bidimensionnelles: utilisez la valeur par défaut de minPts = 4 (Ester et al., 1996)
- Pour plus de 2 dimensions: minPts = 2 * dim (Sander et al., 1998)
Une fois que vous savez quels projets de planification choisir, vous pouvez déterminer Epsilon:
- Tracer les k-distances avec k = minPts (Ester et al., 1996)
- Trouvez le coude dans le graphique -> La valeur de distance k est votre valeur Epsilon.
Voir cette page Web à la section 5: http://www.sthda.com/french/wiki/dbscan-density-based-clustering-for-discovering-clusters-in-large-datasets-with-noise-unsupervised-machine -apprentissage
Il donne des instructions détaillées sur la façon de trouver epsilon. MinPts ... pas tellement.