Modelos Predictivos: Entrenar un Modelo
Portada » Machine Learning » Modelos Predictivos: Entrenar un Modelo

Modelos Predictivos: Entrenar un Modelo

Un modelo predictivo en Machine Learning (ML) es sencillamente un modelo que utiliza avanzados algoritmos aplicados sobre conjuntos de datos del pasado para hacer predicciones confiables sobre el futuro. 

A la hora de construir un modelo predictivo basándonos en algoritmos de Machine Learning (ML) los datos son la materia prima con la que trabajamos y los algoritmos son los diferentes enfoques matemáticos que usamos para encontrar patrones y relaciones en los datos sobre los que queremos construir nuestras predicciones. Es habitual que a la hora de construir un modelo se prueben diferentes enfoques utilizando distintos algoritmos en la búsqueda de aquel que mejor ajuste sus predicciones sobre la variable de interés, es decir, acierte en la mayoría de las ocasiones los casos positivos y negativos y se equivoque lo menos posible en sus predicciones.

Proceso de Entrenamiento

Al primer paso para la creación de un modelo es el entrenamiento, el proceso por el que exponemos un conjunto de datos del pasado a un algoritmo para analizar e identificar los patrones que existen en los datos. Para este fin se define una variable objetivo, es decir, lo que queremos es entender los patrones en concreto que están relacionados con aquella variable que queremos que nuestro modelo nos ayude a predecir.

Supongamos que nuestro modelo intenta predecir la probabilidad de una conversión cuando una persona visita nuestra tienda online. Contamos con datos de miles de sesiones (visitas) a nuestro sitio desde diferentes tipos de fuentes de tráfico (buscadores, campañas de programática, tráfico orgánico, afiliados…), por usuario desde diferentes IPs, diferentes tipos de dispositivos, momentos del día, idiomas… Y también contamos con las conversiones, es decir, todas esas visitas que acabaron comprando algo en nuestra tienda. De esos compradores también contaremos con un montón de datos: sus direcciones, métodos de pago, categorías de compra, importe de su ticket… Nuestra variable objetivo sería la conversión y todos esas variables serán los que usemos para entrenar nuestro modelo.

Para empezar, lo primero que haremos será recopilar el mayor volumen de datos históricos que podamos recoger y prepararlos para el proceso de entrenamiento. Aquí es habitual realizar procesos de limpieza y depuración de datos a través de tareas como eliminar espacios en blanco, convertir formatos de texto a número, rellenar campos vacíos en los datos con valores por defecto y eliminar datos duplicados, por poner algunos ejemplos.

Datos de Test y Datos de Entrenamiento

Ahora estaremos preparados para poder abordar el entrenamiento, pero una vez que lo hayamos hecho necesitaremos entender cómo de bien funciona nuestro modelo, cómo de bueno es a la hora de elaborar sus predicciones. Con ese fin vamos a dividir nuestros datos en un subconjunto que usaremos para el entrenamiento (los datos desde los que el modelo aprenderá los patrones) y otro subconjunto de datos que usaremos para validar el modelo con datos diferentes de los que hemos usado para el entrenamiento. Al conjunto de datos que usaremos para entrenar nuestros modelos y encontrar los patrones ocultos en los datos  lo denominamos datos de entrenamiento. Y al subconjunto que usaremos después para testar las predicciones de nuestro modelo lo llamamos datos de test o datos de validación.

Es muy importante que el proceso que utilicemos para la división de estos dos subconjuntos de datos garantice que todos los datos tengan las mismas probabilidades de estar en uno u otro lado, en otras palabras, que el proceso sea completamente aleatorio. No existe una formula exacta sobre cómo debemos dividir los datos, que cantidad debemos usar para entrenar el modelo y qué cantidad para validar los resultados. Suele ser común un reparto 70/30 o 80/20, todo dependerá de la cantidad de datos que dispongamos para entrenar el modelo. En términos generales cuanto mayor volumen de datos usemos para entrenar el modelo más sólidas serán sus predicciones.

El siguiente paso será empezar a buscar entre los diferentes algoritmos que hayamos elegido para nuestra misión cual es el que mejor se ajusta a los datos de entrenamiento. Cuando tengamos los resultados de los distintos modelos llega el momento de testar sus capacidades de predicción, y para ello necesitaremos usar datos que no hayamos usados durante el proceso de entrenamiento, es decir, los datos de validación.

A menudo, los datos de prueba pueden ser utilizados en ciclos de ajuste de los hiperparámetros, así como en la selección de los modelos. Por ejemplo, se podrían entrenar varios modelos con diferentes configuraciones y usar los datos de prueba para seleccionar la configuración que ofrezca el mejor rendimiento. Es decir, se realizan diferentes iteraciones con los datos de prueba para ajustar mejor las predicciones de los modelos. Sin embargo, al usar los datos de prueba de esta forma, se puede acabar influyendo en la configuración del modelo. Por esta razón, en muchas ocasiones es recomendable utilizar una técnica llamada hold-out.

El Hold-out consiste en hacer una partición adicional en nuestros datos originales para conservar una parte de los datos que no se haya utilizado ni en el entrenamiento ni en los ajustes de los modelos. Estos datos se podrán usar finalmente para verificar el comportamiento del modelo en sus predicciones sobre el subconjunto de Hold-out sin arriesgarnos a que haya sesgos introducidos en las iteraciones de los ajustes con los datos de validación.

Validación Cruzada

En el caso de que contemos con conjuntos de datos pequeños suele ser recomendable utilizar técnicas como la validación cruzada (cross-validation). Hemos dicho que la selección de los datos de entrenamiento y de test se debe realizar garantizando la aleatoriedad pero resulta prácticamente imposible saber si a pesar de usar métodos estocásticos en la distribución no podemos estar seguros de que hayamos incurrido en algún sesgo en el proceso.

Así que, en lugar de comernos la cabeza con si habremos elegido bien el bloque para probar el modelo, podemos usar un método que nos permita probar diferentes combinaciones de datos. La validación cruzada maximiza la disponibilidad de los datos de entrenamiento al dividir los datos en varias combinaciones y probar cada combinación específica para entrenar los modelos.

En la técnica de validación cruzada, se dividen los datos en un número k de veces, y a cada división se le llama pliegue (fold en inglés). En cada iteración del entrenamiento, se reserva un pliegue para testar el modelo, mientras que el resto de pliegues se utilizan para entrenar el modelo. El proceso se repite hasta que todos los pliegues se hayan utilizado como conjunto de entrenamiento y prueba. Luego, los resultados se agregan y combinan para formular un modelo único.

El método más común es la validación cruzada no exhaustiva, conocida como validación k-fold. Esta técnica implica dividir los datos en k grupos y reservar uno de esos grupos para probar el modelo de entrenamiento en cada ronda. Para realizar una validación k veces, los datos se asignan aleatoriamente a un número k de folds del mismo tamaño. Un depósito se reserva siempre para test y se utiliza evaluar el rendimiento de los cubos restantes (k-1). 

Otro método menos común es la validación cruzada exhaustiva, que implica encontrar y probar todas las combinaciones posibles para dividir la muestra original en un conjunto de entrenamiento y un conjunto de prueba, de ahí su carácter exhaustivo.

Entrenar un modelo en Machine Learning es un proceso iterativo y meticuloso que involucra la recolección y preparación de datos, la selección y ajuste del modelo, la evaluación y validación de los resultados, y finalmente la implementación y puesta en producción del modelo. Este proceso permite que el modelo aprenda de los datos históricos y sea capaz de hacer predicciones precisas o tomar decisiones mejor informadas en el futuro.

 Kevin Ku en Unsplash

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CompartirFacebookX
Únete a la discusión

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Instagram

Instagram has returned empty data. Please authorize your Instagram account in the plugin settings .

Please note

This is a widgetized sidebar area and you can place any widget here, as you would with the classic WordPress sidebar.

Johannes

A multi-concept personal blog and magazine WordPress theme