9 votos

Basados en la densidad de agrupamiento espacial de aplicaciones con ruido (DBSCAN) de la agrupación en R

esta pregunta comenzó como "la Agrupación de datos espaciales en R" y ahora se ha trasladado a DBSCAN pregunta.

Como las respuestas a la primera pregunta sugerida he buscado información acerca de DBSCAN y la lectura de algunos documentos sobre. Han surgido nuevos problemas.

DBSCAN requiere de ciertos parámetros, uno de ellos es "a distancia". Como mis datos en tres dimensiones, la longitud, la latitud y la temperatura, que la "distancia" debo usar? qué dimensión está relacionada con la distancia? Yo digamos que debe ser la temperatura. ¿Cómo puedo encontrar la distancia mínima con R?

Otro parámetro es el número mínimo de puntos de neded para formar un clúster. ¿Hay algún método para encontrar ese número? Por desgracia no he encontrado.

Buscando por Google no he podido encontrar una R ejemplo para el uso de dbscan en un conjunto de datos similar a la mía, ¿sabes de algún sitio web con este tipo de ejemplos? Por lo que puedo leer y tratar de adaptar a mi caso.

La última pregunta es que mi primer R intento con DBSCAN (sin una adecuada respuesta a las anteriores preguntas) resultó en un problema de memoria. R dice que no se puede asignar vector. Empiezo con una de 4 km espaciado de la cuadrícula con 779191 puntos que termina en aproximadamente 300000 filas x 3 columnas (latitud, longitud y temperatura) cuando la extracción no es válido SST puntos. Cualquier sugerencia para solucionar este problema de memoria. No depende de mi equipo o en DBSCAN sí mismo?

Gracias por la paciencia de leer una larga y probablemente aburrido mensaje y por tu ayuda.

2voto

vimalg2 Puntos 31

Todavía estoy atascado con este problema. He recibido algunas sugerencias de la R de la lista de correo (gracias a Christian Hennig) que me fije aquí:

Han considerado que la dbscan función en la biblioteca de la fpc, o era otro? El fpc::dbscan() función no tiene una "distancia" parámetro pero varias opciones, una de las cuales puede resolver su memoria problema (consultar la documentación de la "memoria" de los parámetros).

El uso de una matriz de distancias de cientos de miles de puntos es un receta para el desastre (la memoria). No estoy seguro de si la función que usted utiliza lo hizo, pero fpc::dbscan() pueden evitar.

Es cierto que fpc::dbscan() requiere ajustes constantes que la el usuario ha de proporcionar. Desafortunadamente, no hay una regla general sobre cómo hacer este, sería necesario entender el método y el significado de las constantes, y cómo esto se traduce en que los requisitos de de su aplicación.

Usted puede tratar de varias opciones diferentes y hacer algo de validación de clúster para ver lo que funciona, pero no puedo explicar esto en términos generales fácilmente a través de correo electrónico.

He hecho algunos intentos con mis datos pero sin ningún éxito:

"Sí, he tratado de dbscan de fpc, pero todavía estoy atascado en el problema de memoria. Respecto a tu respuesta, no estoy seguro de que el parámetro de memoria debo mirar. El siguiente es el código que he intentado con dbscan parámetros, tal vez usted puede ver si hay algún error.

> sstdat=read.csv("sst.dat",sep=";",header=F,col.names=c("lon","lat","sst"))
> library(fpc)
> sst1=subset(sstdat, sst<50)
> sst2=subset(sst1, lon>-6)
> sst2=subset(sst2, lon<40)
> sst2=subset(sst2, lat<46)
> dbscan(sst2$sst, 0.1, MinPts = 5, scale = FALSE, method = c("hybrid"), 
         seeds = FALSE, showplot = FALSE, countmode = NULL)
Error: no se puede ubicar un vector de tamaño  858.2 Mb
> head(sst2)
             lon   lat   sst
1257 35.18 24.98 26.78
1258 35.22 24.98 26.78
1259 35.27 24.98 26.78
1260 35.31 24.98 26.78
1261 35.35 24.98 26.78
1262 35.40 24.98 26.85

En este ejemplo, sólo se aplican dbscan() a los valores de temperatura, no lon/lat, por lo eps parámetro es de 0.1. Como se trata de una cuadrícula conjunto de datos de cualquier punto está rodeado por ocho puntos de datos, entonces pensé que al menos 5 de los alrededores de los puntos debe ser dentro de la accesibilidad de la distancia. Pero no estoy seguro de que voy a conseguir el enfoque correcto considerando sólo el valor de la temperatura, entonces quizá me estoy perdiendo de la información espacial. ¿Cómo debo lidiar con la longitud y latitud de datos?

Dimensiones de la sst2 son: 152243 filas x 3 columnas "

Comparto este correo los mensajes aquí en caso de que cualquiera de ustedes puede compartir algo de luz sobre R y DBSCAN. Gracias de nuevo

2voto

Amadiere Puntos 5606

El problema aquí es con R. Para DBSCAN para ser eficaz, debe tener un índice adecuado de la estructura (que debe coincidir con la distancia). R sin embargo en realidad no la indexación. Además, el paquete de fpc es un minimalista aplicación de DBSCAN, sólo ofreciendo un pequeña parte de su funcionalidad.

Como para la función de distancia, este es el lugar donde el "conocimiento" es necesario. Si usted tiene una lo suficientemente flexible DBSCAN aplicación (es realmente fácil de implementar, el índice para que sea más rápido que el de $O(n^2)$ es mucho más difícil!) usted debe ser capaz de poner en una distancia arbitraria. Usted puede incluso hacer que dos de las funciones de la distancia y epsilon valores: los puntos deben estar en la mayoría de $10 km$, y la diferencia de temperatura debe ser menor que $1 K.$

Mira "Generalizado DBSCAN" de los principios generales que DBSCAN necesidades: la noción de "barrio" y la noción de "puntos fundamentales" (o "densidad").

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X