#8 El superpoder de los hiperparámetros.

  • Autor de la entrada:
En este momento estás viendo #8 El superpoder de los hiperparámetros.
Imagen de sudok1 de Getty Images en Canva

Tiempo estimado de lectura: 16 minutos.

¡Buenos días y buenos datos!

Seguimos con nuestra época de la información, más concretamente con el segundo capítulo sobre las funciones matemáticas que hay detrás de los problemas de analítica avanzada. Hoy sí que entramos en lo que se llamamos modelos de aprendizaje automático.

Modelos de aprendizaje automático

Una buena selección de hiperparámetros puede hacer brillar a tu algoritmo.

Autor desconocido (lo he visto mencionado en diferentes artículos que hablan de hiperparámetros desde 20217 pero sin indicar la autoría)
Proceso de ajuste de hiperparámetros

Los modelos de aprendizaje automático ya no son modelos lineales. Utilizan «hiperparámetros» para mejorar el rendimiento de los algoritmos, realizar selección de variables de entrada (regularización), evitar el sobreajuste y optimizar el procesamiento.

Los hiperparámetros no están en los datos de entrenamiento y no se conocen a priori. Para una mejor selección de sus valores se hace mediante un proceso de ajuste de parámetros o tuning en función de resultados de validación.

En esta entrada me voy a centrar en modelos que resuelven problemas de clasificación y regresión como: árboles de decisión, máquinas de vector soporte (SVM), K-vecinos más cercanos (KNN), aprendizaje ensamblado.

Al final, además voy a hablar de otras técnicas muy comunes durante el entrenamiento de modelos: Gridsearch para selección de parámetros y Crossvalidation para validación de modelos.

Empezamos y recuerda que hay mucho más en las referencias.

1. Árboles de decisión

Árbol de decisión

Los árboles de decisión son flujogramas que mapean las posibles salidas del objetivo que buscamos en función de una serie de elecciones o datos de entrada relacionados.

Por lo general, un árbol de decisión comienza con un solo nodo o nodo raíz, que se ramifica según preguntas que nos hacemos sobre los atributos de entrada (nodos internos). El árbol se va formando de acuerdo a los resultados de dichas preguntas hasta los últimos nodos (hojas) que son los que incluyen la clasificación, etiqueta o número buscado.

Pueden ser utilizados para resolver problemas de regresión y de clasificación y aquí os dejo el enlace por si queréis saber más de estos tipos de uso.

Es un algoritmo supervisado y los principales hiperparámetros de este tipo de modelo son:

  • La profundidad máxima del árbol: el número de saltos, cortes o test sobre atributos.
  • El mínimo número de muestras por hoja o nodo final

Los árboles de decisión son fáciles de construir y de interpretar y de escalar sin embargo, son bastante inexactos, funcionan bien con los valores con los que se han entrenado pero no tanto con nuevos valores (alto varianza).

2. Máquinas de vector soporte (SVM)

Máquinas de vector soporte

Las máquinas de vector soporte (Support Vector Machine – SVM) buscan el mejor hiperplano para separar clases, maximizando la distancia entre los puntos de entrenamiento y dicho hiperplano.

En general se usa para problemas de clasificación aunque también se puede utilizar para regresiones.

Es un algoritmo supervisado y sus principales parámetros son: kernel (para seleccionar la forma del hiperplano), c (es un parámetro de penalización al error para controlar el sobreajuste).

No se usa mucho ya que requiere mucha capacidad de cálculo.

3. K-vecinos más cercanos

K-vecinos más cercanos

El algoritmo de K-vecinos más cercanos (K nearest neighbors – KNN) es una forma muy sencilla de predecir un dato.

Funciona aproximando el punto que queremos clasificar a los datos, predictores o de entrenamiento, que tenemos ya clasificados y agrupados. Así, etiquetamos el elemento con la categoría del vecino ya etiquetado más cercano (de ahí el nombre).

Si el valor de k es 1, asignamos el valor del dato clasificado más cercano. Si el k es un valor superior, y encontramos cerca datos de diferentes categorías, se asigna la categoría que tiene más elementos próximos.

Es un algoritmo supervisado y sus principales parámetros son: k (número de vecinos), peso (forma de combinar la etiqueta al punto más próximo), partición (la manera de dividir el set de datos según etiquetas).

Es fácil incluir nuevos datos de entrenamiento pero el coste computacional puede ser muy alto si crecen mucho.

Es importante elegir el valor de la k, por ello se itera hasta conseguir un k adecuado:

  • k grandes benefician las categorías con muchos datos lo que implica alto sesgo y baja varianza o sub-ajuste
  • con k pequeños, el algoritmo se acerca mucho al conjunto de entrenamiento. Esto significa que tiene un sesgo bajo pero una varianza muy alta y con ello sobreajuste.

4. Aprendizaje ensamblado (Ensemble learning)

Llamamos aprendizaje ensamblado a la combinación de modelos de aprendizaje simple para crear nuevos modelos combinados que mejoran los resultados.

Hay dos maneras de hacer la combinación:

En paralelo: se divide el conjunto de datos de entrenamiento de manera aleatoria y se entrenan modelos simples. La salida se combina mediante una media de los resultados de los modelos simples (average en caso de valores continuos) o seleccionando el resultado más frecuente (más votos) para valores discretos. Esta combinación se denomina bagging.

Dentro de esta categoría se engloba el método de Bosque Aleatorio (Random Forest). En este caso, los modelos simples son árboles de decisión y los principales parámetros a configurar son: número estimadores (número de árboles del bosque) y los propios de los árboles de decisión (máxima profundidad del árbol y mínimo número de muestras por hoja).

En serie: dentro de esta categoría se incluyen los modelos XGboost o Gradient Boosted Trees. Son uno de los modelos más utilizados actualmente porque obtiene muy buenos resultados. Se utilizó por primera vez en un hackaton o concurso para resolver un problema de machine learning donde consiguió métricas sorprendentes.

Se basa en un método que se denomina boosting o empuje que persigue mejorar los resultados de modelo más simples utilizando la técnica de descenso por gradiente para optimizar el error.

En un momento t, se asignan pesos a los resultados del modelo en función de la salida en el momento t-1. Las salidas correctas tienen un peso menor y las incorrectas un peso mayor. El objetivo es analizar el modelo peor, aprender de sus atributos y parámetros y utilizar estos aprendizajes para construir un modelo mejor.

Se pueden usar para resolver problemas de regresión y clasificación y el número de parámetros a configurar es relevante con lo que recomiendo consultar la documentación oficial de las librerías que incluyen estas funciones: sklearn y xgboost.

5. Mejorando el entrenamiento de modelos con Gridsearch y Crossvalidation

Gridsearch es una función que utilizamos para hacer una barrido paramétrico probando todas las posibles combinaciones de parámetros para seleccionar los mejores para cada modelo (Grid significa red o malla en inglés).

Gridsearch se configuraría a la hora de entrenar el modelo, seleccionado, el modelos y los parámetros sobre los que quiero realizar las múltiples combinaciones.

Crossvalidation es una técnica de selección de conjunto de datos de entrenamiento y pruebas para conseguir métricas de modelos más robustas.

5 n-fold crossvalidation

Consiste en calcular las métricas de un modelo en diferentes iteraciones de los conjuntos de datos de entrenamiento y pruebas.

Para ello, se divide el conjunto de datos total en varios bloques (normalmente 10 aunque en la imagen lo he simplificado en 5).

En cada iteración, los datos de pruebas son un bloque diferente sobre el que se calcula el indicador.

La métrica final es la media o varianza de los resultados de las iteraciones.

Es un método más estable de medición ya que observamos cómo funciona el modelo independientemente de la división de datos entre entrenamiento y pruebas.

Ya existen funciones que realizan la crossvalidation automáticamente con lo que se configura a la hora de entrenar el modelo seleccionando el número de iteraciones que queremos realizar sobre los datos.

Y hasta aquí por el momento. Espero que hayas disfrutado y si te ha gustado, compártelo en redes y dímelo en comentarios.

Te espero en las siguientes entregas de «La época de la información» donde seguiré hablando de matemáticas, ¡vamos!, otros modelos y algunos cada vez con modelos más complejos.

Bibliografía y referencias

Os paso mi selección particular de artículos y vídeos que me han llamado la atención (creo que ya me vais conociendo así que ¡Sí! ¡Lo reconozco! Estoy enganchada a los vídeos de Statquest):

Nota: recuerda que si el vídeo está en inglés, Youtube facilita la traducción simultánea a otro idioma. Para activar la traducción simultánea al español, sigue estos pasos: ¿Cómo activar la traducción simultánea en Youtube?