1y8enc8xkyuq0oqpnytrz W.jpeg

Evaluación de cómo el aprendizaje semisupervisado puede aprovechar los datos no etiquetados

Imagen del autor, creada con Image Creator en Bing

Uno de los desafíos más comunes que enfrentan los científicos de datos es la falta de suficientes datos etiquetados para entrenar un modelo confiable y preciso. Los datos etiquetados son esenciales para las tareas de aprendizaje supervisado, como la clasificación o la regresión. Sin embargo, obtener datos etiquetados puede ser costoso, llevar mucho tiempo o resultar poco práctico en muchos dominios. Por otro lado, los datos no etiquetados suelen ser fáciles de recopilar, pero no proporcionan ninguna entrada directa para entrenar un modelo.

¿Cómo podemos utilizar datos no etiquetados para mejorar nuestros modelos de aprendizaje supervisado? Aquí es donde entra en juego el aprendizaje semisupervisado. El aprendizaje semisupervisado es una rama del aprendizaje automático que combina datos etiquetados y no etiquetados para entrenar un modelo que pueda funcionar mejor que utilizando solo datos etiquetados. La intuición detrás del aprendizaje semisupervisado es que los datos no etiquetados pueden proporcionar información útil sobre la estructura, distribución y diversidad subyacentes de los datos, lo que puede ayudar al modelo a generalizarse mejor a ejemplos nuevos e inéditos.

En este artículo, presento tres métodos de aprendizaje semisupervisado que se pueden aplicar a diferentes tipos de datos y tareas. También evaluaré su rendimiento en un conjunto de datos del mundo real y los compararé con la línea base de usar solo datos etiquetados.

El aprendizaje semisupervisado es un tipo de aprendizaje automático que utiliza datos etiquetados y no etiquetados para entrenar un modelo. Los datos etiquetados son ejemplos que tienen una variable de salida o de destino conocida, como la etiqueta de clase en una tarea de clasificación o el valor numérico en una tarea de regresión. Los datos no etiquetados son ejemplos que no tienen una variable de salida o de destino conocida. El aprendizaje semisupervisado puede aprovechar la gran cantidad de datos no etiquetados que suelen estar disponibles en los problemas del mundo real, al mismo tiempo que hace uso de la menor cantidad de datos etiquetados que suele ser más costosa o requiere más tiempo para obtener.

La idea subyacente de utilizar datos no etiquetados para entrenar un método de aprendizaje supervisado es etiquetar estos datos mediante métodos de aprendizaje supervisado o no supervisado. Aunque es muy probable que estas etiquetas no sean tan precisas como las etiquetas reales, tener una cantidad significativa de estos datos puede mejorar el rendimiento de un método de aprendizaje supervisado en comparación con entrenar este método solo con datos etiquetados.

El paquete scikit-learn proporciona tres métodos de aprendizaje semisupervisado:

  • Autoformación: primero se entrena un clasificador con datos etiquetados únicamente para predecir las etiquetas de los datos no etiquetados. En la siguiente iteración, se entrena otro clasificador con los datos etiquetados y con la predicción de los datos no etiquetados que tenían un alto nivel de confianza. Este procedimiento se repite hasta que no se predigan nuevas etiquetas con un alto nivel de confianza o se alcanza un número máximo de iteraciones.
  • Propagación de etiquetas: se crea un gráfico en el que los nodos representan puntos de datos y los bordes representan similitudes entre ellos. Las etiquetas se propagan iterativamente a través del gráfico, lo que permite que el algoritmo asigne etiquetas a puntos de datos sin etiquetar en función de sus conexiones con datos etiquetados.
  • Difusión de etiquetas: utiliza el mismo concepto que la propagación de etiquetas. La diferencia es que la propagación de etiquetas utiliza una asignación flexible, en la que las etiquetas se actualizan de forma iterativa en función de la similitud entre los puntos de datos. Este método también puede «sobrescribir» las etiquetas del conjunto de datos etiquetado.

Para evaluar estos métodos utilicé un Predicción de diabetes Conjunto de datos que contiene características de los datos del paciente, como la edad y el IMC, junto con una etiqueta que describe si el paciente tiene diabetes. Este conjunto de datos contiene 100 000 registros que dividí aleatoriamente en 80 000 datos de entrenamiento, 10 000 de validación y 10 000 de prueba. Para analizar la eficacia de los métodos de aprendizaje con respecto a la cantidad de datos etiquetados, dividí los datos de entrenamiento en un conjunto etiquetado y otro sin etiquetar, donde el tamaño de la etiqueta describe cuántas muestras están etiquetadas.

Partición del conjunto de datos (imagen del autor)

Utilicé los datos de validación para evaluar diferentes configuraciones de parámetros y utilicé los datos de prueba para evaluar el rendimiento de cada método después del ajuste de parámetros.

Utilicé XG Boost para la predicción y la puntuación F1 para evaluar el rendimiento de la predicción.

La línea base se utilizó para comparar los algoritmos de autoaprendizaje con el caso de no utilizar datos sin etiquetar. Por lo tanto, entrené XGB con conjuntos de datos etiquetados de diferentes tamaños y calculé la puntuación F1 en el conjunto de datos de validación:

Puntuación inicial (imagen del autor)

Los resultados mostraron que la puntuación F1 es bastante baja para conjuntos de entrenamiento de menos de 100 muestras, y luego mejora de manera constante hasta una puntuación del 79 % hasta que se alcanza un tamaño de muestra de 1000. Los tamaños de muestra mayores apenas mejoraron la puntuación F1.

El autoentrenamiento consiste en utilizar iteraciones múltiples para predecir las etiquetas de datos no etiquetados que luego se utilizarán en la siguiente iteración para entrenar otro modelo. Se pueden utilizar dos métodos para seleccionar predicciones que se utilizarán como datos etiquetados en la siguiente iteración:

  1. Umbral (predeterminado): se seleccionan todas las predicciones con una confianza superior a un umbral
  2. K mejores: se seleccionan las predicciones con el k mayor nivel de confianza

Evalué los parámetros predeterminados (ST Default) y ajusté el umbral (ST Thres Tuned) y el parámetro k best (ST KB Tuned) en función del conjunto de datos de validación. Los resultados de predicción de estos modelos se evaluaron en el conjunto de datos de prueba:

Puntuación de autoaprendizaje (imagen del autor)

En el caso de muestras de tamaño pequeño (<100), los parámetros predeterminados (línea roja) tuvieron un peor rendimiento que la línea base (línea azul). En el caso de muestras de tamaño mayor, se lograron puntuaciones F1 ligeramente mejores que la línea base. El ajuste del umbral (línea verde) produjo una mejora significativa; por ejemplo, en un tamaño de etiqueta de 200, la puntuación F1 de la línea base fue del 57 %, mientras que el algoritmo con umbrales ajustados alcanzó el 70 %. Con una excepción en un tamaño de etiqueta de 30, el ajuste del mejor valor K (línea violeta) tuvo un rendimiento casi igual que la línea base.

La propagación de etiquetas tiene dos métodos kernel integrados: RBF y KNN. El kernel RBF produce un gráfico completamente conectado utilizando una matriz densa, que requiere mucha memoria y mucho tiempo para conjuntos de datos grandes. Para tener en cuenta las limitaciones de memoria, solo utilicé un tamaño máximo de entrenamiento de 3000 para el kernel RBF. El kernel KNN utiliza una matriz dispersa más amigable con la memoria, lo que me permitió ajustar todos los datos de entrenamiento de hasta 80 000 muestras. Los resultados de estos dos métodos kernel se comparan en el siguiente gráfico:

Puntuación de propagación de etiquetas (imagen del autor)

El gráfico muestra la puntuación F1 en el conjunto de datos de prueba de diferentes métodos de propagación de etiquetas en función del tamaño de la etiqueta. La línea azul representa la línea base, que es la misma que para el autoentrenamiento. La línea roja representa la propagación de etiquetas con parámetros predeterminados, que claramente tiene un rendimiento inferior al de la línea base para todos los tamaños de etiqueta. La línea verde representa la propagación de etiquetas con kernel RBF y parámetro ajustado gamma. Gamma define hasta dónde llega la influencia de un solo ejemplo de entrenamiento. El kernel RBF ajustado tuvo un mejor rendimiento que la línea base para tamaños de etiqueta pequeños (<=100) pero peor para tamaños de etiqueta más grandes. La línea violeta representa la propagación de etiquetas con kernel KNN y parámetro ajustado k, que determina la cantidad de vecinos más cercanos a utilizar. El kernel KNN tuvo un rendimiento similar al kernel RBF.

La propagación de etiquetas es un enfoque similar a la propagación de etiquetas, pero con un parámetro adicional, alfa, que controla en qué medida una instancia debe adoptar la información de sus vecinos. Alfa puede variar de 0 a 1, donde 0 significa que la instancia mantiene su etiqueta original y 1 significa que adopta por completo las etiquetas de sus vecinos. También ajusté los métodos de kernel RBF y KNN para la propagación de etiquetas. Los resultados de la propagación de etiquetas se muestran en el siguiente gráfico:

Puntuación de difusión de etiquetas (imagen del autor)

Los resultados de la propagación de etiquetas fueron muy similares a los de la propagación de etiquetas, con una notable excepción. El método kernel RBF para la propagación de etiquetas tiene una puntuación de prueba inferior a la de la línea base para todos los tamaños de etiqueta, no solo para los pequeños. Esto sugiere que la «sobrescritura» de etiquetas por las etiquetas de los vecinos tiene un efecto bastante negativo para este conjunto de datos, que podría tener solo unos pocos valores atípicos o etiquetas ruidosas. Por otro lado, el método kernel KNN no se ve afectado por el parámetro alfa. Parece que este parámetro solo es relevante para el método kernel RBF.

A continuación, comparé todos los métodos con sus mejores parámetros entre sí.

Comparación de las mejores puntuaciones (imagen del autor)

El gráfico muestra la puntuación de la prueba de diferentes métodos de aprendizaje semisupervisado en función del tamaño de la etiqueta. El autoentrenamiento supera a la línea base, ya que aprovecha bien los datos no etiquetados. La propagación y la dispersión de etiquetas solo superan la línea base para tamaños de etiquetas pequeños y tienen un peor rendimiento para tamaños de etiquetas más grandes.

Los resultados pueden variar significativamente para diferentes conjuntos de datos, métodos de clasificación y métricas. El rendimiento del aprendizaje semisupervisado depende de muchos factores, como la calidad y la cantidad de los datos no etiquetados, la elección del alumno base y el criterio de evaluación. Por lo tanto, no se deben generalizar estos hallazgos a otros entornos sin realizar pruebas y validaciones adecuadas.

Si te interesa explorar más sobre el aprendizaje semisupervisado, puedes consultar mi repositorio de Git y experimentar por tu cuenta. Puedes encontrar el código y los datos de este proyecto aquí.

Una cosa que aprendí de este proyecto es que el ajuste de parámetros fue importante para mejorar significativamente el rendimiento de estos métodos. Con parámetros optimizados, el autoentrenamiento tuvo un mejor rendimiento que la línea base para cualquier tamaño de etiqueta y alcanzó mejores puntajes F1 de hasta un 13 %. La propagación y la dispersión de etiquetas solo mejoraron el rendimiento para tamaños de muestra muy pequeños, pero el usuario debe tener mucho cuidado de no obtener peores resultados en comparación con no usar ningún método de aprendizaje semisupervisado.