Detección de valores atípicos en archivo CSV de latitud/longitud

Tengo un enorme archivo CSV que contiene puntos GPS de hoteles en varias ciudades. Muestra:

CITY    | HOTEL     | LATITUDE | LONGITUDE
Chicago | Bellevue  | 41.826   | -87.689
Chicago | SuperMt   | 41.924   | -87.703
Chicago | Starhotel | 44.903   | -93.215
Chicago | BestW     | 41.743   | -87.641
Tokyo   | CityStay  | 30.212   | 128.435

¿Hay algún programa que pueda detectar valores atípicos ? Por ejemplo, la latitud/longitud de Starhotel es claramente incorrecta, lo que lo coloca a cientos de kilómetros de distancia de los otros hoteles de la misma ciudad.

Requisitos:

  • Los valores atípicos deben detectarse en relación con la dispersión del grupo principal, por ejemplo, los hoteles en "California" estarán bastante separados, mientras que los hoteles en "East Village" estarán todos muy cerca unos de otros. Entonces, "valor atípico" es relativo a la dispersión de todo el grupo.
  • Gratis, idealmente de código abierto
  • Rápido de configurar
  • Funciona con un archivo CSV de 300 000 líneas y 100 MB, o su archivo RDF u OSM equivalente
  • Cualquier sistema operativo. Idealmente línea de comandos. Herramienta en línea/API OK si puede manejar la carga.
  • La longitud se vuelve menos significativa cerca de los polos norte y sur. Sin embargo , calcular la distancia de una manera ingenua sqrt(latitudeDelta²+longitudeDelta²)es mejor que nada, ya que los polacos no tienen muchos hoteles.

Objetivo final: detectar errores probables para enviarlos a revisores humanos. No se necesita 100% de precisión.

¿Ha intentado filtrar el archivo a través de gpsvisualizer.com y usar la opción "Descartar valores atípicos"? Sé que es una herramienta en línea, no realmente lo que buscas.
@Chenmunka: Tendría que dividir el archivo para cada ciudad (decenas de miles) y enviarlos individualmente, no es muy conveniente :-/ Parece que no tienen una API y probablemente me banearían si lo intentara...

Respuestas (1)

En primer lugar, es posible que desee dividir su conjunto de datos en ciudades. Esto probablemente dará mejores resultados que mantener todo junto.

Entonces la herramienta de elección probablemente sea ELKI :

  1. Contiene montones, montones de algoritmos para la detección de valores atípicos. En particular, tiene el Local Outlier Factor (wikipedia) , que trata exactamente de capturar las diferencias locales en densidad
  2. Soporta distancia geodésica, con diferentes modelos terrestres.
  3. Puede usar índices R-tree para la aceleración, por lo que 300k no es un problema (pero aún puede querer dividir el conjunto de datos en ciudades para obtener mejores resultados; y sin eso, un hotel titulado "Chicago" pero con coordenadas en California todavía parecen ser normales a partir de las coordenadas). Yo mismo ya he usado conjuntos de datos multidimensionales de 100k; y he visto al autor usar 23 millones de tweets en agrupaciones...
  4. De código abierto, escrito en Java.

También puede consultar el trabajo de los autores sobre la personalización de la detección de valores atípicos. Esto puede ser necesario si desea procesar todos los 300k a la vez y usar las columnas de ciudad y hotel también. (¡La mayoría de los métodos están diseñados para datos numéricos!) Según mi interpretación de este modelo, es posible que desee definir el contexto como hoteles en la misma ciudad y luego comparar las densidades.

Schubert, E., Zimek, A. y Kriegel, HP (2014).
Reconsideración de la detección de valores atípicos locales: una visión generalizada de la localidad con aplicaciones para la detección de valores atípicos espaciales, de video y de red.
Minería de datos y descubrimiento de conocimientos, 28(1), 190-237.

hmm... pensando en su problema, este también puede ser relevante, detectando valores atípicos en accidentes automovilísticos y datos de medición de radiactividad:

Schubert, E., Zimek, A. y Kriegel, HP (2014).
Detección de valores atípicos generalizados con estimaciones flexibles de la densidad del núcleo.
En Actas de la 14ª Conferencia Internacional SIAM sobre Minería de Datos (SDM), Filadelfia, PA.

Supongo que ambos se hicieron usando ELKI, ya que son los mismos autores...


Aquí se explica cómo usar ELKI para realizar la detección de valores atípicos:

  1. Separe sus datos en un archivo CSV de latitud y longitud por ciudad.
  2. Descarga el ELKI JAR y ábrelo
  3. Configure los parámetros así:

Parámetros ELKI

  1. Presiona el Run taskbotón y deberías obtener esto:

gráfico ELKI