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.

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.
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”.
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.
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:
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).
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.
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.
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:
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”:
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:
Esta función de Pandas, transforma la columna inicial con sus valores en:
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.
Importamos los componentes de las librerías correspondientes
Construimos el modelo
Y lo evaluamos frente a nuestros valores de entrenamiento:
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.
Y nuestro puesto en la competición, que con este ejercicio conseguimos un 0.80861, lo que nos permitió posicionarnos en el TOP7%.
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
Pingback: Para todo, siempre hay una primera vez. No pierdas el tren. – itblogsogeti