Basura dentro, basura fuera

para alguien no muy puesto en Minería de Datos, este título le puede sonar raro. Sin embargo tiene mucho que ver con el proceso de extracción de conocimiento a través de los datos. Y es justamente sobre esta área sobre el que trata el artículo.

Como introducción comentar que utilizo Kaggle como plataforma de aprendizaje, contacto, preguntas, discusiones, obtención de datasets, étc. Y principalmente, para participar en las diferentes competiciones de Data Science. Sin duda, es una forma muy práctica y agradable de mejorar las cualidades en el campo de la Ciencia de Datos. En concreto, voy a utilizar la competición Titanic como ejemplo para fijar los conceptos de Minería.

El problema que se presenta es identificar si el pasajero sobrevive o no. Para ello hay que utilizar técnicas de Machine Learning, basadas en aprendizaje supervisado y con algoritmos de clasificación (1 = Si / 0 = No). Para facilitar la labor, se incluye un conjunto de recursos como son:

  • Datasets (train.csv, test.csv).
  • Ejemplo de fichero “submit”.
  • Diccionario para conocer los conceptos en dichos datasets.
  • Notas varias, que vendría a ser como aclaraciones.

Actualmente, esta competición reúne a más de 10.000 participantes. Y es sin duda alguna, un primer paso en el mundo de la Ciencia de Datos.

¿Qué es eso de “Basura dentro, basura fuera”?

Pues sencillamente, que si construimos nuestro modelo de Machine Learning incluyendo directamente las variables del datasets sin ningún tipo de tratamiento, por muy bueno que sea el algoritmo que voy a utilizar, lo más probable es que, el resultado que devuelva no sirva para nada. De ahí, la importancia de conocer las principales técnicas de Minería de Datos, Estadística y Visualización.

En el mundo real, el ciclo de vida de un Modelo Predictivo es constante y requiere de contínuas iteraciones, revisiones y seguimiento.

Dejando atrás los pasos iniciales de un proceso de Minería de Datos, y centrándonos en la preparación de los datos, hay que completar un serie de pasos, con el fin de conseguir obtener las variables de entrenamiento más eficaces posible. Estos son:

  • Tratamiento de los posibles valores anómalos como: nulos, outliers.
  • Normalización de los datos, por ejemplo estandarización.
  • Discretización de variables contínuas, por ejemplo mediante K-Means.
  • Reducción de la Dimensionalidad.

Para todo ésto, hay que utilizar técnicas de estadística descriptiva y ayudarnos de alguna herramienta de visualización con gráficos como:

1º paso:

Una vez descargados los .csv train y test debemos incorporarlos a nuestra herramienta de trabajo. Normalmente utilizo Jupyter Notebook a través de Anaconda, que es un entorno que simplifica tareas como incorporación de librerías.

Basura dentro, basura fuera_
https://www.anaconda.com/

 

Las librerías de trabajo habituales con Python son Pandas, Numpy y Matplotlib, además en este caso para la construcción del modelo de Machine Learning utilizaremos un algoritmo Random Forest de la librería Scikit-Learn.

Basura dentro, basura fuera_1

Una buena práctica antes de continuar con los pasos “obligados” es revisar el posible balanceo de los datos de train y test. Ya que puede si alguna característica está muy desviada en uno u otro, podría provocar “malas predicciones”.

Basura dentro, basura fuera_2

NOTA: Vemos que los porcentajes de Hombres y Mujeres son muy similares en ambos ficheros.

Otra primera aproximación que, permite ver por dónde van los tiros y conocer más nuestros datos. Así cómo solucionar el problema, es usar tablas de contigencia.

Basura dentro, basura fuera_3

NOTA: Se observa que se cumplió la máxima de un naufragio: “Mujeres y niños, primero”.

Vamos ahora con la tabla de contigencia de Pclass:

Basura dentro, basura fuera_4

2º paso:

Después de haber revisado el balanceo y realizado una primera aproximación de probabilidad, seria momento de comenzar con la estadística descriptiva, de cara a avanzar en el conocimiento de los propios datos y su posterior tratamiento.

Visionamos los primeros cinco registros del dataframe, con df.head(5) o los últimos con df.tail(5).

Basura dentro, basura fuera_5

También es recomendable realizar un df.describe(), que nos devuelve información de las variables numéricas. Además de df.dtypes que nos indica el tipo de datos que incluye cada una de las columnas.

Basura dentro, basura fuera_6

Basura dentro, basura fuera_7

La información ya empieza a ser interesante y observamos por ejemplo que existen valores perdidos (“missing values”) en la variable “Age”. Para solucionar esto, existen muchas técnicas de Minería de Datos, si bien aquí se utilizará la de reemplazarlos por la mediana.

Basura dentro, basura fuera_8

Otro ejemplo de normalización es transformar una variable numérica discreta en variable categórica, es decir pasar de número a texto. Esto se hace con “Pclass”, mediante:

Basura dentro, basura fuera_9

La técnica de disminución de variables también es muy usada, y trata de eliminar aquellas columnas que no aporten valor al modelo. En este caso, podrían ser “Name”, “Ticket” y “Fare”:

Basura dentro, basura fuera_10

Una técnica de Minería de Datos muy importante es la de crear columnas “dummy”, este ejemplo lo veremos con la variable “Pclass” que había sido categorizada previamente:

Basura dentro, basura fuera_11

Esta función de Pandas, transforma la columna inicial con sus valores en:

basura dentro, basura fuera_12

3º paso:

Llegados a este punto, ya sólo nos queda trabajar sobre el modelo predictivo. Para ello separamos los datos en train y test de nuevo.

Basura dentro, basura fuera_13

Importamos los componentes de las librerías correspondientes

Basura dentro, basura fuera_14

Construimos el modelo

Basura dentro, basura fuera_15

Y lo evaluamos frente a nuestros valores de entrenamiento:

Basura dentro, basura fuera_16

Por último, quedaría realizar la predicción sobre el conjunto de test, obtener dicha predicción como fichero .csv y realizar el “submit” en la página de Kaggle para obtener la evaluación.

Basura dentro, basura fuera_17

Y nuestro puesto en la competición, que con este ejercicio conseguimos un 0.80861, lo que nos permitió posicionarnos en el TOP7%.

Basura dentro, basura fuera_18

CONCLUSIÓN: el proceso de creación de un modelo predictivo es muy complejo. En este caso se trata de un ejemplo sencillo y accesible para todas aquellas personas interesadas en la Ciencia de Datos, que puede ser fácilmente abordable. Respetando los pasos básicos de transformación, limpieza y procesamiento de datos, podemos obtener un buen resultado. Con ese trabajo, evitaremos el título del artículo, “Basura dentro, basura fuera”.

Por otro lado, comentar que, en el mundo empresarial, el conjunto de variables es enorme, además de diverso y cambiante. Por tanto, un paso necesario es la identificación por parte de Negocio de las variables principales. Con ellas crear un Data Mart específico y trabajar muy alineados con Inteligencia de Negocio para componer la lógica, además del análisis del entorno y de la integración de eventos temporales. También habrá que incorporar otras muchas fuentes externas que incrementen la calidad de dichas variables. Y por supuesto, medir el éxito de las predicciones reales, con el propósito de afinar el modelo. Todo esto significa que estamos frente a un proceso iterativo y de larga duración.

NOTA: como mínimo, para comenzar con un proyecto de Machine Learning, se necesita un repositorio de datos dos años previos.

Alberto Alonso Marcos

Business Intelligence Architect | Soluciones Microsoft | SOGETI España

Autor: ITblogsogeti

Sogeti es una compañía tecnológica perteneciente al Grupo Capgemini y especialista en: Testing y Calidad de Software; Soluciones Microsoft y High Tech Consulting. En Sogeti entendemos la importancia de obtener el máximo valor empresarial de sus sistemas de IT, por ello somos líderes mundiales en Testing & QA.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s