Machine Learning y Zonas Seguras para Ciclistas (Parte 2)

Original article was published on Artificial Intelligence on Medium


Modelado con Machine Learning

¿Qué buscamos?

Con modelado a través de técnicas de Machine Learning, nuestro propósito fue pronosticar si un usuario de MiBici puede estar expuesto a un delito en específico dependiendo de la estación en la que se encuentre.

¿Cómo lo hicimos?

Inicialmente, para nuestro pronóstico tomamos en cuenta la frecuencia y localización de los siguientes delitos, los cuales se seleccionaron por considerarse como posibles delitos que pudieran afectar a usuarios de MiBici:

  • Lesiones dolosas
  • Robo en motocicleta
  • Robo a cuentahabientes
  • Homicidio doloso
  • Robo a negocio
  • Feminicidio

Tanto el tipo de delito, como su ocurrencia y localización, son variables que forman parte del dataset de Incidencia Delictiva. Recordar que este dataset previamente lo utilizamos para estimar el impacto de la delincuencia en el uso de MiBici. En esta segunda parte utilizamos para entrenar y probar nuestro modelo predictivo.

De este modo, el tamaño de nuestro dataset fue de 16 mil 825 registros, como se desglosa, por tipo de delito, en la Figura 1.

Figura 1. Tamaño del dataset de entrenamiento.

Posteriormente, escogimos como modelo de clasificación multiclase un algoritmo de Decision Trees (Árboles de Decisión). Para el algoritmo, los datos de entrada fueron:

  • Año de ocurrencia de cada delito
  • Mes de ocurrencia de cada delito
  • Latitud donde ocurrió cada delito
  • Longitud donde ocurrió cada delito

Ver Figura 2 para mayores detalles respecto de las variables de entrada del modelo.

Figura 2. Datos de entrada para la clasificación multiclase con el algoritmo de Decision Trees.

A esos datos se les aplicó un escalamiento Max-Min Scaler dado que había mucha diferencia entre los valores de las variables.

La salida de nuestro modelo no es probabilística, sino estrictamente binaria. Por lo tanto, como datos de salida definimos, por cada delito, el resultado de 1, si puede ocurrir dicho delito; y el resultado de 0, si pueden ocurrir otro tipo de delitos.

Figura 3. Variables de salida para la clasificación multiclase con el algoritmo de Decision Trees.

¿Qué obtuvimos?

El primer experimento se trató de entrenar al modelo incluyendo registros de todos los delitos, considerando el total de 16 mil 825 registros.

La manera en que validamos el modelo fue utilizando la técnica de cross-validation con cinco folds. Debido a que en este primer experimento la cantidad de ejemplos por cada clase no estaban balanceadas, usamos las siguientes métricas de evaluación:

  • Precisión
  • Recall
  • Puntaje F1

Los tamaños del dataset de entrenamiento utilizado en las pruebas (con respecto al número total de ejemplos) fueron de 75%, 80% y 90%.

En este primer experimento, los resultados no fueron lo que esperábamos dado que los valores promedios más áltos que obtuvimos en las métricas de evaluación fueron:

  • Precisión: 0.35
  • Recall: 0.24
  • Puntaje F1: 0.29

Estos resultados tan bajos, cómo se muestran algunos más en la Figura 4, se deben a que hay un gran desbalance entre el número de datos de entrada, por cada clase.

Figura 4. Métricas de rendimiento para el modelo entrenado con seis clases de salida. Solo para efectos ilustrativos, se muestran dos clases

Para mejorar las métricas, el enfoque que tomamos en este proyecto fue disminuir el número de clases (es decir, los tipos de delitos) para el entrenamiento del modelo.

Intentamos con cinco, cuatro, tres y dos delitos. Siempre tratábamos de utilizar los delitos con número de registros razonablemente semejante. Encontramos los mejores resultados con registros de dos delitos: Homicidio Doloso y Robo a Cuentahabientes.

Con estos datos, obtuvimos un valor máximo de precisión de 0.69. Los valores promedio máximos fueron:

  • Precisión: 0.66
  • Recall: 0.63
  • Puntaje F1: 0.64
Figura 5. Métricas de rendimiento para el modelo entrenado con dos clases de salida. Aquí se muestra la clase “y_homicidioDoloso”.