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 |
R² 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...