Machine Learning con Scikit Learn

Introducción al Machine Learning: conceptos y tipos de modelos

El Machine Learning tiene como objetivo desarrollar sistemas informáticos que puedan aprender a partir de datos para comprender y tomar decisiones. Para ello, utilizaremos algoritmos y modelos estadísticos de diversa índole.

Existe toda una gama de herramientas para dar respuesta a cualquier tipo de problema.

A los efectos de este libro, restringiremos el Machine Learning a tres áreas principales:

  • aprendizaje no supervisado,

  • aprendizaje supervisado,

  • el procesamiento de texto e imágenes.

Es importante señalar que el procesamiento del lenguaje natural y de las imágenes solo se abordará, en el contexto de este libro, de manera superficial, para que siga siendo accesible a todos. Por otro lado, otras áreas, como el aprendizaje por refuerzo, que tienen un campo de aplicación más confidencial, se dejarán de lado voluntariamente.

1. El aprendizaje no supervisado

a. Definición

El aprendizaje no supervisado nos permitirá comprender el funcionamiento oculto de nuestros datos. Se llama no supervisado porque la información que surgirá no tiene etiqueta. Por tanto, estamos en una situación de descubrimiento, sin saber de antemano lo que encontraremos. Este tipo de aprendizaje nos permitirá responder a las siguientes preguntas:

  • ¿Qué características de mis datos son las más importantes?

  • ¿Cuáles son de menor interés?

  • ¿Existen vínculos u oposiciones entre ciertas características?

  • ¿Cómo podríamos entender mejor los componentes de nuestro campo de estudio?

  • ¿Cómo podemos agrupar ciertas observaciones para resumir las principales tendencias o razonar en términos de grupos?

En concreto, si representamos nuestros datos como una tabla de Excel, las dos operaciones principales consistirán en actuar sobre las columnas o sobre las filas. A modo de ejemplo, podríamos imaginar una tabla que contuviera los clientes de una empresa donde cada fila representaría a un cliente y diferentes características de estos clientes se ubicasen en columnas, como sus ingresos, el importe total gastado o su edad (una característica por columna). Nuestras herramientas podrían permitirnos descubrir si existe una relación entre la edad y el importe gastado...

Presentación de Scikit-Learn, la librería de Python para la ciencia de datos

1. Una oferta sencilla y completa de funcionalidades

La librería Scikit-Learn, también conocida como Sklearn, es una librería de Machine Learning creada por miembros de INRIA en 2010. Poco a poco se ha consolidado hasta convertirse en un referente en el sector.

Scikit-Learn no solo ofrece una amplia gama de modelos de regresión y clasificación, sino también todas las funcionalidades para preparar datos, optimizar algoritmos y medir resultados. De este modo, permite gestionar por sí sola toda la cadena de operaciones de un modelado clásico.

En cuanto a la forma, Scikit-Learn ha sido diseñada para ser simple y satisfacer tanto a los principiantes como a los practicantes más experimentados. Algunos puntos bien pensados hacen que resulte mucho más fácil empezar a usarla:

  • La librería cuenta con una extensa documentación, poniendo siempre un ejemplo de aplicación para cada algoritmo.

  • Con cuatro excepciones (LinearRegression, LogisticRegression, SVR y SVC), los algoritmos de regresión y clasificación, respectivamente, tienen un nombre que termina en Regressor o Classifier para indicar el tipo de aprendizaje para el que están destinados.

  • Los algoritmos son bastante simples de usar y presentan métodos comunes a un gran número de funciones que facilitan el cambio de una a otra mediante la búsqueda de términos comunes.

Esta es precisamente la oportunidad de descubrir juntos estos métodos comunes, que hacen que sea mucho más fácil iniciarse con Scikit-Learn. Pero antes de eso, hay que instalarla si aún no lo ha hecho:

pip install -U scikit-learn 

La opción -U también asegurará que actualicemos la librería, si ya está presente, a la última versión.

2. Métodos comunes a las diferentes funciones

Al implementar Scikit-Learn, utilizamos un conjunto común de métodos que encontraremos en la mayoría de los algoritmos. El propósito de esta librería...

Las grandes etapas de un proyecto de Machine Learning

Scikit-Learn nos acompañará en todas las etapas principales de un modelado que ahora descubriremos desde un punto de vista teórico. Proporcionaremos un ejemplo práctico de cada caso, regresión y clasificación, en el capítulo Aprendizaje supervisado.

Este descubrimiento del modelado se dividirá en dos partes: comenzaremos con la preparación de los datos y seguiremos con la experimentación de los algoritmos y su evaluación.

1. La preparación de los datos

a. La separación de las variables explicativas de la variable objetivo

El modelado es una experiencia científica que consiste en predecir un valor o una pertenencia a una clase a partir de los datos disponibles.

Después de importar los datos de un conjunto ficticio, al que llamaremos df, la primera medida consistirá en separar las variables explicativas de la variable que hay que explicar, llamada variable objetivo:

X = df[["Variable_1","Variable_2","Variable_3"]] # Variables explicativas 
y = df["Variable_objetivo"]                      # Variable objetivo 

b. La separación entre los datos de entrenamiento y los de prueba

Para acercarnos a las condiciones reales y poder evaluar correctamente el rendimiento de nuestro experimento, realizaremos una segunda separación que consistirá en reservar una parte de los datos para simular dichas condiciones reales.

Así, aislaremos, desde el primer momento, entre el 10 % y el 30 % de las observaciones, según el caso. Este juego se llamará juego de prueba e incluirá dos tablas: X_test e y_test. La parte restante será el juego de entrenamiento, que incluye también dos tablas: X_train e y_train. Este último servirá para entrenar los algoritmos, que conocerán a sus parámetros. El juego de pruebas, por su parte, será desconocido para los algoritmos y solo intervendrá al final del proceso para evaluar el score en condiciones reales, que es el único que hay que tener en cuenta.

# Importar la función train_test_split  
from sklearn.model_selection import train_test_split  
  
  
# Split...

Conclusiones de la modelización

A modo de conclusión sobre este tema, he aquí un resumen de los principales pasos que hay que seguir para llevar a cabo esta parte tan importante. Las columnas de la tabla, Regresión y Clasificación, indican las posibilidades específicas que se ofrecen para cada paso:

Orden

Etapa

Regresión

Clasificación

1

Selección de variables descriptivas y objetivo

 

 

2

División de datos (entrenamiento y prueba)

 

Stratify*

3

Transformación de columnas

Binarización de variables categóricas

Transformaciones o ajuste a escala de variables numéricas

4

Formateo y modificación de tipos

 

 

5

Entrenamiento de un modelo básico

DummyRegressor

DummyClassifier

6

Entrenamiento de diferentes algoritmos

Regresión lineal y algoritmos cuyo nombre termina en Regressor

Regresión logística y algoritmos cuyo nombre termina en Classifier

7

Evaluación de métricas

RMSE

MAE

Accuracy

Precisión

Recall

F1-score

Matriz de confusión

8

Evaluación multicriterio

Scores

Variabilidad en los scores

Tiempo de entrenamiento

Tiempo de cálculo

Peso de los archivos de algoritmos

 

*Stratify: opción utilizada para garantizar que la distribución de las clases en los conjuntos de entrenamiento y de prueba sea la misma que en todo el conjunto de datos.

Esta lista, por supuesto...