Cómo aplicar minería de datos con WEKA.

0 Introducción

En este articulo me gustaría hacer una pequeña introducción de como realizar un estudio sobre un conjunto de datos empleando técnicas de minería de datos, usando como base el software WEKAEl artículo requiere de algunos conocimiento de base de datos y manipulación de consultas SQL.


Un proceso típico de minería de datos consta de los siguientes pasos generales:

  1. Selección del conjunto de datos.
  2. Análisis de las propiedades de los datos.
  3. Transformación del conjunto de datos de entrada, preprocesamiento de los datos.
  4. Seleccionar y aplicar la técnica de minería de datos, se construye el modelo predictivo, de clasificación o segmentación.
  5. Extracción de conocimiento.
  6. Interpretación y evaluación de datos.

1 Descripción del conjunto de datos. 

Los datos a analizar son los crímenes y delitos acaecidos durante los años 2011, 2012 y 2013, en el condado de Columbia, EEUU. Estos datos han sido publicados en el sitio web http://data.dc.gov/ siguiendo la filosofía “Open Data”. Los datos se ofrecen en formato “CSV”, distribuidos en tres ficheros uno por cada año con la siguiente estructura:
 
 

2 Objetivos del análisis de los datos.

  • ¿Qué características comunes tienen los sucesos ocurridos por distritos?
  • ¿Qué distritos tienen sucesos similares?
  • ¿Existen grupos de sucesos ?
  • ¿Hay diferencias significativas en los resultados obtenidos según las diferentes opciones?
  • ¿La opción seleccionada y el resultado está influida depende del entorno?
  • ¿Se puede predecir un suceso con alguna variable conocida?
  • ¿Qué relaciones entre variables son las más significativas?


3 Análisis, depuración y preprocesado de los datos. 

Los datos abordados en este análisis están distribuidos en tres ficheros en formato “CSV”, cada uno de ellos contiene los sucesos criminales de cada año desde el 2011 al 2013 del condado de Columbia, EEUU. En la preparación de los datos previa a la transformación al formato “ARFF” de “WEKA” se realizaron sobre los ficheros de datos los siguientes procedimientos, se agruparon los datos en un solo conjunto y se normalizaron los datos de errores y valores nulos. 
 

3.1 Agrupación de los datos en un conjunto

 
Para procesar los datos de forma global y en previsión del paso posterior de normalización de los datos agrupados, se determino que la forma más eficaz de manipular los datos sería a través de la base de datos “MySQL”, para proceder a introducir los datos en el motor de la base de datos, se creo una base de datos vacía y para ello se transformaron previamente a formato de hoja de calculo de “ Libre Office”, cuyo formato se puede importar directamente a través de “PHPMyAdmin”.

3.2 Normalización de los datos

 
La normalización de los datos consiste en estructurar los datos de forma que se eliminen duplicaciones innecesarias, errores de introducción, valores nulos y se proporcione con ello un conjunto de datos homogéneos y de calidad. Los datos en formato cadena son convertidos a la codificación “UTF-8”, esto lo realiza automáticamente “PHPMyAdmin” al importar los datos a “MySQL”. Sustituir valores nulos o inexistentes por el carácter “?” que esta reservado por “WEKA” para este tipo de valores. Para ello se empleo un sentencia SQL (IS NULL) del motor “MySQL”.
 
UPDATE ‘TABLA’ SET TABLA.ATRIBUTO = ‘?’ WHERE TABLA.ATRIBUTO IS NULL;
 
Los atributos cuyo contenido son cadenas de caracteres, fechas, nominales se les ha concatenado al principio y al final de cada valor el símbolo “, para que el parser de WEKA los analice como un valor completo. Para ello se empleo un sentencia SQL (CONCAT) del motor “MySQL”.
 
UPDATE ‘TABLA’ SET TABLA.ATRIBUTO = CONCAT(‘”‘, TABLA.ATRIBUTO, ‘”‘)

3.3 Generación del fichero ARFF


Para la creación del fichero ARFF se opto por generarlo de forma manual, debido a que el numero de instancias agrupadas, colapsaban el software disponible. La estructura de la cabecera del fichero creado es la siguiente:

@attribute CCN NUMERIC
@attribute REPORTDATETIME DATE “M/d/yyyy h:mm:ss a”
@attribute SHIFT {“DAY”,”EVENING”,”MIDNIGHT”}
@attribute OFFENSE {“SEX ABUSE”,”HOMICIDE”,”BURGLARY”,”MOTOR VEHICLE
THEFT”,”ROBBERY”,”THEFTF/AUTO”,”ASSAULTW/DANGEROUSWEAPON”,”THEFT/OTHER”,”ARSON”}
@attribute METHOD {“OTHERS”,”GUN@attribute LASTMODIFIEDDATE DATE “M/d/yyyy h:mm:ss a”

@attribute BLOCKSITEADDRESS STRING
@attribute BLOCKXCOORD NUMERIC
@attribute BLOCKYCOORD NUMERIC
@attribute WARD NUMERIC
@attribute ANC { “1A”, “1B”, “1C”, “1D”, “2”, “2A”, “2B”, “2C”, “2D”, “2F”, “3”, “3B”, “3C”, “3D”, “3F”, “3G”,
“4A”, “4B”, “4C”, “4D”, “5”, “5A”, “5B”, “5C”, “5D”, “6”, “6A”, “6B”, “6C”, “6D”, “7”, “7B”, “7C”, “7D”, “7F”, “8”,
“8A”, “8B”, “8C”, “8D”}
@attribute DISTRICT {“NONE”,”FIRST”,”SECOND”,”THIRD”,”FOURTH”,”FIFTH”,”SIXTH”,”SEVENTH”}
@attribute PSA NUMERIC
@attribute NEIGHBORHOODCLUSTER NUMERIC
@attribute BUSINESSIMPROVEMENTDISTRICT {“?”,”ADAMS MORGAN”,”ANACOSTIA”,”CAPITOL
HILL”,”CAPITOL RIVERFRONT”,”DOWNTOWN”,”GEORGETOWN”,”GOLDEN TRIANGLE”,”MOUNT
VERNON TRIANGLE CID”,”NOMA”}”,”KNIFE”}

4 Técnica y Análisis de los datos.


4.1 Análisis básico de los datos.

 
Transformación, normalización, estandarización y discretización, son funciones de la herramienta WEKA para el preprocesado de los datos que aplicaremos en la fase inicial del análisis para compararlos. Primero observaremos el resultado de la introducción de los datos en el software, para realizar una aproximación básica.
 
 
Como observamos el conjunto de datos tiene 83138 instancias de crímenes. Ahora desglosaremos el conjunto de datos por atributos más interesantes:
 
Shift
 
El atributo Shift o “Cambio horario” indica el número de crímenes ocurridos en tres franjas horarias:
 
 
Offense
 
El atributo Offense o “Delito” indica el tipo de delito cometido:
Method
 
El atributo Method o “Método” indica el tipo de herramienta usada:
District
El atributo District o “Distrito” indica el número de distrito donde ocurrió el suceso:
Business Improvement District
El atributo Business improvement district o “Distrito Industrial” indica zona industrial o comercial donde del suceso:

4.2 Preprocesado en WEKA.

Para no extender el preprocesado de los datos realizaremos una lista de los filtros aplicados y una justificación de los mismos.
  • Filtro de Weka: Unsupervised->Attribute->ReplaceMissingValues sobre todos los atributos. Normalizar los datos.
  • Filtro de Weka: Unsupervised->Attribute->StringtoNominal sobre todos los atributos. Convertir todas las cadenas a nominales de forma que puedan ser cuantificadas por los filtros.
  • Filtro de Weka: Unsupervised->Attribute->NumerictoNominal sobre todos los atributos. Convertir todas los numericos a nominales de forma que puedan ser cuantificadas por los filtros.
  • Removidos los atributos BLOCKXCOORD, BLOCKYCOORD que son coordenadas GPS del coche patrulla que asistio al suceso.

4.3 Clasificación en WEKA

Para verificar los objetivos hemos clasificado los datos a través de esto cuatro atributos clase Shift, Offense, Method, Businessimprovementdistrict. Queremos clasificar los sucesos por esos cuatro atributos. Para ello hemos empleado el algoritmo OneR, ya que lo que nos interesa es saber la relación de mejores entre los distritos y tipos de ofensa. La distribución de los datos distingue entre distritos y distritos comerciales por lo que realizaremos dos clasificaciones y compararemos los resultados.
Businessimprovementdistrict o Distritos Comerciales
La clasificación ofrece casi un 85,5% por lo que nos un porcentaje de fiabilidad alto.
  • Correctly Classified Instances 71025 85.4302 %
  • Incorrectly Classified Instances 12113 14.5698 %


Observando la gráfica vemos que el distrito comercial Downtown es el que más casos de robos tiene y que hay una gran cantidad de sucesos fuera de distrito comercial. Por lo que a continuación generaremos la clasificación por distritos nos arroja que el robo es el suceso más frecuente.
  • Correctly Classified Instances 19783 23.7954 %
  • Incorrectly Classified Instances 63355 76.2046 %
La clasificación por distritos no comerciales, nos arroja más luz sobre la situación en relación del tipo de delito, observamos como la cantidad de sucesos mostrados en la gráfica de barras de los 3 primeros distritos y del sexto y séptimo concuerdan. Tanto en el tipo como en cantidad de sucesos, además comparándola con la primera clasificación por distritos comerciales vemos que concuerdan en el tipo de robo, estamos ante una zona muy conflictiva en el tema económico y puede que se traten de barrios conflictivos.
Para resolver esta duda vamos a clasificar los barrios no comerciales a través de los barrios comerciales, ya que en si un barrio comercial es un barrio normal que tiene cierta concesiones legales, y veremos que resultados arroja.
Podemos observar como de nuevo se verifica el objetivo, Downtown, GeorgeTown, Capitol Hill… son los distritos comerciales que pertenecen en sus respectivas localizaciones al los distritos 1,2,3. Siendo de nuevo el robo el delito más común en ellos. A continuación, vamos a clasificar lo delitos por su tipología y metodología más frecuente, para deducir como suceden estos delitos y de que forma. Para ello emplearemos el J48 para que nos proporcione un árbol de decisión del conjunto de datos. El algoritmo no ofrece un índice alto de sucesos correctamente clasificados.
  • Correctly Classified Instances 75513 90.8285 %
  • Incorrectly Classified Instances 7625 9.1715 %
Deducimos que en Robbery o Asalto se emplean por igual los tres tipos de métodos, mientras que Arson que es Incendio intencionado, se emplea solo otros. En Homicide se emplea sobre todo Knife y Gun. Comparando entre los diferente métodos, vemos que las armas de fuego juegan un papel importante en todos los tipos de delito, menos en Motor Vehicle T, que es el robo de vehículos estacionados. El distrito 5 solo sufre de delitos de tipo ARSON. A continuación, vamos a clasificar lo delitos por su tipología y franja temporal más frecuente, para deducir que tipo de delitos ocurren en que franjas horarias. Para ello emplearemos el J48.
Gráfica resultado de enfrentar Shift contra Offense.
Observando las dos gráficas confirmamos que el homicidio se produce exclusivamente de noche. Y revisando el árbol en formato texto comprobamos también lo mismo. OFFENSE = HOMICIDE: MIDNIGHT (225.0)

4.4 Clustering en WEKA

En el apartado de clustering vamos a proceder agrupar las instancias mediante K-Means para obtener los grupos más significativos. En este caso vamos a comparar entre si Shift, Offense, Method y District.

Method contra Offense


Se confirman los resultados de la clasificación a través del agrupamiento, el valor Homicide se produce principalmente por Gun, y aparece un nuevo método Knife en el cluster 1 de color azul, confirmamos que Theft/Other en el cluster 2 de color rojo, es la ofensa más común.

Shift contra Offense

Confirmar que el valor Homicide se produce principalmente por la noche, al mismo tiempo confirmamos que Theft/Other agrupado en el cluster 1, 2 de color azul y rojo respectivamente , es la ofensa más común.

El mismo agrupamiento reflejando el numero de instancias por Offense, mostrando en el color el Shift, observamos de nuevo que el Homicide se produce solo de noche, y que Theft F/Auto durante el el día representado por el color azul, interesante comprobar que el Robbery se produce principalmente en la tarde y la noche.

District con Offense

De nuevo Homicide y Theft F/Auto, Theft/Other.

4.5 Asociación en WEKA

En este apartado procederemos a aplicar el algoritmo Apriori para determinar el grado de asociación de los sucesos entre diferentes tipos de clases. Para continuar comprobando los objetivos marcados aplicaremos el algoritmo sobre el mismo tipo de clases Shift, Offense, Method y District.

Shift, Offense, Method y District

Obtenemos 20 reglas de asociación de las cuales las 6 primeras tiene un grado de confianza de 1 siendo 1 el valor más alto.

  1. SHIFT=DAY OFFENSE=THEFT F/AUTO 11452 ==> METHOD=OTHERS 11443 conf:(1)
  2. OFFENSE=THEFT F/AUTO 22490 ==> METHOD=OTHERS 22469 conf:(1)
  3. SHIFT=DAY OFFENSE=THEFT/OTHER 11076 ==> METHOD=OTHERS 11055 conf:(1)
  4. OFFENSE=THEFT/OTHER 28168 ==> METHOD=OTHERS 28092 conf:(1)
  5. SHIFT=EVENING OFFENSE=THEFT/OTHER 14361 ==> METHOD=OTHERS 14312 conf:(1)
  6. OFFENSE=BURGLARY 8846 ==> METHOD=OTHERS 8722 conf:(0.99)

Por lo que podemos confirmar que al franja horaria de día se produce la ofensa de robo de vehículo o robo mediante el uso de método sin determinar.

Shift, Offense, Method

Obtenemos 15 reglas de asociación de las cuales las 6 primeras tiene un grado de confianza de 1 siendo 1 el valor más alto.

  1. SHIFT=DAY OFFENSE=THEFT F/AUTO 11452 ==> METHOD=OTHERS 11443 conf:(1)
  2. OFFENSE=THEFT F/AUTO 22490 ==> METHOD=OTHERS 22469 conf:(1)
  3. SHIFT=DAY OFFENSE=THEFT/OTHER 11076 ==> METHOD=OTHERS 11055 conf:(1)
  4. OFFENSE=THEFT/OTHER 28168 ==> METHOD=OTHERS 28092 conf:(1)
  5. SHIFT=EVENING OFFENSE=THEFT/OTHER 14361 ==> METHOD=OTHERS 14312 conf:(1)
  6. OFFENSE=BURGLARY 8846 ==> METHOD=OTHERS 8722 conf:(0.99)

Por lo que podemos confirmar que al franja horaria de día se produce la ofensa de robo de vehículo o robo mediante el uso de método sin determinar. Observamos que el uso de Apriori nos ofrece el mismo resultado en cada combinación por lo que empleamos el algoritmo de asociación predictiveApriori que emplea el calculo de probabilidades de forma distinta y obtenemos un resultado muy atractivo.

Shift, Offense, Method

Obtenemos 50 reglas de asociación de las cuales las 4 primeras tiene un grado de confianza alto.

  1. OFFENSE=HOMICIDE 225 ==> SHIFT=MIDNIGHT 225 acc:(0.995)
  2. OFFENSE=ARSON 95 ==> SHIFT=EVENING 33 acc:(0.36232)
  3. OFFENSE=ARSON 95 ==> SHIFT=MIDNIGHT 32 acc:(0.3574)
  4. OFFENSE=ARSON 95 ==> SHIFT=DAY 30 acc:(0.34659)

Confirmamos de nuevo que el homicidio se produce de noche y que el incendio intencionado se distribuye a lo largo de todas las franjas horarias.

6 Conclusiones.

Para obtener una visión de conjunto de los objetivos planteados debemos conocer el entorno sobre el que se han extraído los datos, el condado de Columbia en EEUU tiene los siguientes datos estadísticos.

El ingreso per cápita del condado era de $22.265. El 6,40% de las familias y el 9,00% de la población estaban debajo de la línea de pobreza. Del total de gente en esta situación, 11,80% tenían menos de 18 y el 6,80% tenían 65 años o más. Interesante dato si la población del condado es de 630000 personas aproximadamente y el 9% vive por debajo del umbral de pobreza, explica el índice de criminalidad. Ya que del total de la población 56000 personas malviven, teniendo en cuenta el numero de sucesos 83000 en tres años deja 27666 de media por año.

630000* 0.09 = 56000 / 27666= 2,2 delitos por persona.

Eso explica la alta proporción de robo y hurto, debido al nivel de pobreza de la población. Otro dato analizar sería que la proporción entre el robo de vehículos y el robo o hurto es muy similar tanto en proporción de sucesos como en las franjas horarias, lo que da a entender un suceso muy habitual en los robos y es que previamente se roba un vehículo para cometer un atraco posteriormente abandonar el vehículo.

Otro dato alarmante como comprobamos tanto en clasificación, clustering, como asociación es que el homicidio se producía principalmente con arma de fuego y de noche, eso puede ser una señal que la ley de armas de EEUU, no es lo suficientemente estricta con el condado de Columbia el acceso a las armas es muy sencillo. Se puede predecir con facilidad que la adquisición de un arma en el condado de Columbia implica por defecto la intención de cometer un homicidio.

Por último añadir que el la relación de datos más sorprendente es que los robo y hurtos se producen en su mayoría en la franja de día y tarde, algo que choca un poco con la lógica que la noche sería un momento más propicio para este tipo de actividades.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *