Analytics Business Intelligence Dev & AM

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

Acerca de alb3rtoalonso

Soy un enamorado del poder de los datos. Entusiasta de la mejora y formación contínua. A lo largo de estos últimos años, he trabajado sobre las diferentes áreas de Data Management, para grandes compañías como Cyndea Pharma, beIN Sports, MediaPro, Himoinsa, Liberty Seguros y Airbus Defense & Space, Essity. En ellos, he llevado a término, proyectos de analítica avanzada y modelaje predictivo. Formo parte del grupo de expertos tecnológicos a nivel Mundial de mi actual compañía, denominado SogetiLabs. Dentro del mismo soy el responsable global del círculo de Machine Learning, lo que me permite tener una visión general de los desarrollos del grupo, así como motivar a los compañeros hacia el campo del ML y participar activamente en la creación de buenas prácticas. Mi espíritu de competidor es el que impulsa a seguir mejorando. Si bien, como buen jugador, sé comportarme correctamente cuando gano, y cuando pierdo. Me gusta el trabajo en equipo, tanto con compañeros de la organización como con terceras personas (clientes, compañeros de otras consultoras, etc). Con la implicación de todos, el desarrollo siempre es más eficiente. Habituado a trabajar entorno de desarrollo sobre metodologías ágiles. A mis compañeros les sorprende mi dedicación al estudio de nuevas tecnologías y metodologías. No hay semana en la que no participe, consuma o asista a algún ‘meet up’. Intento divulgar el conocimiento a través de mi presencia en internet; web, blogs, Kaggle, Github, Twitter. En definitiva, dedico gran parte de mi tiempo de ocio en curiosear acerca de la tecnología y sus múltiples usos. Actualmente estoy cursando el Máster Universitario de Ciencia de Datos en la UOC, soy licenciado en Farmacia por la Universidad San Pablo CEU, además de haber realizado un Curso Superior de Dirección Empresarial por el IFE de Madrid y finalizado el Grado Superior de Desarrollo de Aplicaciones Multiplataforma. A día de hoy desempeño el rol de Data Scientist dentro del equipo de Inteligencia de Negocio y Analítica Avanzada de Sogeti España. He sido aceptado como integrante del grupo internacional de tecnología SogetiLabs. También pertenezco al Grupo de Usuarios de Power Bi en España.

1 comment on “Basura dentro, basura fuera

  1. Pingback: Para todo, siempre hay una primera vez. No pierdas el tren. – itblogsogeti

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

A %d blogueros les gusta esto: