cette question a commencé comme " Clustering spatial data in R " et est maintenant passée à la question DBSCAN.
Comme les réponses à la première question l'ont suggéré, j'ai cherché des informations sur DBSCAN et j'ai lu quelques documents. De nouvelles questions ont surgi.
DBSCAN nécessite certains paramètres, l'un d'eux est "distance". Comme mes données sont en trois dimensions, longitude, latitude et température, quelle "distance" dois-je utiliser? quelle dimension est liée à cette distance? Je suppose que ce devrait être la température. Comment puis-je trouver une telle distance minimale avec R?
Un autre paramètre est le nombre minimum de points nécessaires pour former un cluster. Existe-t-il une méthode pour trouver ce numéro? Malheureusement, je ne l'ai pas trouvé.
Recherche sur Google Je n'ai pas trouvé d'exemple R pour utiliser dbscan dans un ensemble de données similaire au mien, connaissez-vous un site Web avec ce genre d'exemples? Je peux donc lire et essayer de m'adapter à mon cas.
La dernière question est que ma première tentative de R avec DBSCAN (sans réponse appropriée aux questions précédentes) a entraîné un problème de mémoire. R dit qu'il ne peut pas allouer de vecteur. Je commence par une grille espacée de 4 km avec 779191 points qui se termine par environ 300000 lignes x 3 colonnes (latitude, longitude et température) lors de la suppression des points SST non valides. Tout conseil pour résoudre ce problème de mémoire. Cela dépend-il de mon ordinateur ou de DBSCAN lui-même?
Merci pour la patience de lire un long message probablement ennuyeux et pour votre aide.
la source
Réponses:
Je suis toujours coincé avec ce problème. J'ai reçu quelques suggestions de la liste de diffusion R (merci à Christian Hennig) que je joins ici:
J'ai fait quelques tentatives avec mes données mais sans succès:
"Oui, j'ai essayé dbscan de fpc mais je suis toujours bloqué sur le problème de mémoire. Concernant votre réponse, je ne sais pas quel paramètre de mémoire dois-je regarder. Voici le code que j'ai essayé avec les paramètres dbscan, peut-être que vous pouvez voir s'il y a une erreur.
Dans cet exemple, je ne m'applique qu'aux
dbscan()
valeurs de température, pas lon / lat, donc leeps
paramètre est 0,1. Comme il s'agit d'un ensemble de données quadrillé, tout point est entouré de huit points de données, alors j'ai pensé qu'au moins 5 des points environnants devraient être dans la distance d'accessibilité. Mais je ne suis pas sûr que j'obtiens la bonne approche en ne considérant que la valeur de la température, peut-être qu'il me manque alors des informations spatiales. Comment dois-je traiter les données de longitude et de latitude?Les dimensions
sst2
sont de: 152243 lignes x 3 colonnes "Je partage ces e-mails ici au cas où l'un de vous pourrait partager un peu de lumière sur R et DBSCAN. Merci encore
la source
Le problème est ici avec R . Pour que DBSCAN soit efficace, vous devez avoir une structure d'index appropriée (qui doit correspondre à votre distance). Cependant, R ne fait pas vraiment d'indexation. De plus, le package fpc est une implémentation minimaliste de DBSCAN, n'offrant qu'une petite partie de ses fonctionnalités.
Quant à la fonction de distance, c'est là que votre "connaissance du domaine" est nécessaire. Si vous avez une implémentation DBSCAN suffisamment flexible (elle est vraiment facile à implémenter, l'index pour la rendre plus rapide que est beaucoup plus difficile!), Vous devriez pouvoir mettre une distance arbitraire. Vous pouvez même faire deux fonctions de distance et des valeurs epsilon: les points doivent être au plus à et la différence de température doit être inférieure à10 k m 1 K .O(n2) 10km 1K.
Regardez "DBSCAN généralisé" pour les principes généraux dont DBSCAN a besoin: une notion de "voisinage" et une notion de "points centraux" (ou "densité").
la source