esta pregunta comenzó como " Agrupación de datos espaciales en R " y ahora se ha movido a la pregunta DBSCAN.
Como sugirieron las respuestas a la primera pregunta, busqué información sobre DBSCAN y leí algunos documentos sobre. Han surgido nuevas preguntas.
DBSCAN requiere algunos parámetros, uno de ellos es "distancia". Como mis datos son tridimensionales, longitud, latitud y temperatura, ¿qué "distancia" debo usar? ¿Qué dimensión está relacionada con esa distancia? Supongo que debería ser la temperatura. ¿Cómo encuentro esa distancia mínima con R?
Otro parámetro es el número mínimo de puntos necesarios para formar un grupo. ¿Hay algún método para encontrar ese número? Lamentablemente no he encontrado.
Buscando en Google no pude encontrar un ejemplo de R para usar dbscan en un conjunto de datos similar al mío, ¿conoces algún sitio web con este tipo de ejemplos? Entonces puedo leer e intentar adaptarme a mi caso.
La última pregunta es que mi primer intento de R con DBSCAN (sin una respuesta adecuada a las preguntas anteriores) resultó en un problema de memoria. R dice que no puede asignar el vector. Comienzo con una cuadrícula espaciada de 4 km con 779191 puntos que termina en aproximadamente 300000 filas x 3 columnas (latitud, longitud y temperatura) al eliminar puntos SST no válidos. Cualquier sugerencia para abordar este problema de memoria. ¿Depende de mi computadora o de DBSCAN?
Gracias por la paciencia para leer un mensaje largo y probablemente aburrido y por su ayuda.
fuente
Respuestas:
Todavía estoy atrapado con este problema. He recibido algunas sugerencias de la lista de correo R (gracias a Christian Hennig) que adjunto aquí:
He hecho algunos intentos con mis datos pero sin ningún éxito:
"Sí, he intentado dbscan desde fpc pero todavía estoy atascado en el problema de memoria. Con respecto a su respuesta, no estoy seguro de qué parámetro de memoria debería mirar. A continuación se muestra el código que probé con los parámetros de dbscan, tal vez pueda A ver si hay algún error.
En este ejemplo, solo se aplica
dbscan()
a valores de temperatura, no a lon / lat, por lo que eleps
parámetro es 0.1. Como se trata de un conjunto de datos en cuadrícula, cualquier punto está rodeado por ocho puntos de datos, entonces pensé que al menos 5 de los puntos circundantes deberían estar dentro de la distancia de alcance. Pero no estoy seguro de estar obteniendo el enfoque correcto al solo considerar el valor de temperatura, tal vez luego me falta información espacial. ¿Cómo debo tratar con los datos de longitud y latitud?Las dimensiones de
sst2
son: 152243 filas x 3 columnas "Comparto estos mensajes de correo aquí en caso de que alguno de ustedes pueda compartir algo de luz sobre R y DBSCAN. Gracias de nuevo
fuente
El problema aquí es con R . Para que DBSCAN sea efectivo, debe tener una estructura de índice adecuada (que debe coincidir con su distancia). Sin embargo, R realmente no hace indexación. Además, el paquete fpc es una implementación minimalista de DBSCAN, que solo ofrece una pequeña parte de su funcionalidad.
En cuanto a la función de distancia, aquí es donde se necesita su "conocimiento de dominio". Si tiene una implementación DBSCAN lo suficientemente flexible (es realmente fácil de implementar, ¡el índice para hacerlo más rápido que es mucho más difícil!) Debería poder colocar una distancia arbitraria. Incluso puede hacer que las dos funciones de distancia y los valores de épsilon: los puntos deben estar como máximo a distancia, y la diferencia de temperatura debe ser inferior a10 k m 1 K .O(n2) 10km 1K.
Mire "DBSCAN generalizado" para conocer los principios generales que necesita DBSCAN: una noción de "vecindario" y una noción de "puntos centrales" (o "densidad").
fuente