Saltar al contenido

Aprendizaje semi-supervisado con distribución de etiquetas

4 de enero de 2021

Aprendizaje semi-supervisado se refiere a algoritmos que intentan hacer uso de datos de entrenamiento etiquetados y no etiquetados.

Los algoritmos de aprendizaje semi-supervisados ​​son diferentes a los algoritmos de aprendizaje supervisados ​​que solo pueden aprender a partir de datos de entrenamiento etiquetados.

Un enfoque popular para el aprendizaje semi-supervisado es crear un gráfico que conecte ejemplos en el conjunto de datos de entrenamiento y propague etiquetas conocidas a través de los bordes del gráfico para etiquetar ejemplos sin etiquetar. Un ejemplo de este enfoque del aprendizaje semi-supervisado es el algoritmo de difusión de etiquetas para modelado predictivo de clasificación.

En este tutorial, descubrirá cómo aplicar el algoritmo de difusión de etiquetas a un conjunto de datos de clasificación de aprendizaje semi-supervisado.

Después de completar este tutorial, sabrá:

  • Una intuición de cómo funciona el algoritmo de aprendizaje semi-supervisado de difusión de etiquetas.
  • Cómo desarrollar un conjunto de datos de clasificación semi-supervisado y establecer una línea de base en el desempeño con un algoritmo de aprendizaje supervisado.
  • Cómo desarrollar y evaluar un algoritmo de difusión de etiquetas y utilizar la salida del modelo para entrenar un algoritmo de aprendizaje supervisado.

Empecemos.

Aprendizaje semi-supervisado con distribución de etiquetas

Aprendizaje semi-supervisado con distribución de etiquetas
Foto de Jernej Furman, algunos derechos reservados.

Descripción general del tutorial

Este tutorial se divide en tres partes; son:

  1. Algoritmo de difusión de etiquetas
  2. Conjunto de datos de clasificación semi supervisado
  3. Difusión de etiquetas para el aprendizaje semi-supervisado

Algoritmo de difusión de etiquetas

Label Spreading es un algoritmo de aprendizaje semi-supervisado.

El algoritmo fue introducido por Dengyong Zhou, et al. en su artículo de 2003 titulado «Aprender con coherencia local y global».

La intuición del enfoque más amplio del aprendizaje semi-supervisado es que los puntos cercanos en el espacio de entrada deben tener la misma etiqueta, y los puntos en la misma estructura o variedad en el espacio de entrada deben tener la misma etiqueta.

La clave de los problemas de aprendizaje semi-supervisados ​​es la suposición previa de consistencia, lo que significa: (1) es probable que los puntos cercanos tengan la misma etiqueta; y (2) es probable que los puntos de la misma estructura a los que normalmente se hace referencia como grupo o colector tengan la misma etiqueta.

– Aprendizaje con coherencia local y global, 2003.

La difusión de etiquetas está inspirada en una técnica de la psicología experimental llamada redes de activación de difusión.

Este algoritmo puede entenderse intuitivamente en términos de difundir redes de activación desde la psicología experimental.

– Aprendizaje con coherencia local y global, 2003.

Los puntos del conjunto de datos se conectan en un gráfico en función de sus distancias relativas en el espacio de entrada. La matriz de ponderaciones del gráfico se normaliza simétricamente, de forma muy similar a la agrupación espectral. La información se pasa a través del gráfico, que se adapta para capturar la estructura en el espacio de entrada.

El enfoque es muy similar al algoritmo de propagación de etiquetas para el aprendizaje semi-supervisado.

Zhou et al dieron otro algoritmo de propagación de etiquetas similar: en cada paso, un nodo i recibe una contribución de sus vecinos j (ponderada por el peso normalizado del borde (i, j)), y una pequeña contribución adicional dada por su valor inicial

– Página 196, Aprendizaje semi-supervisado, 2006.

Después de la convergencia, las etiquetas se aplican en función de los nodos que transmitieron la mayor cantidad de información.

Finalmente, la etiqueta de cada punto sin etiquetar se establece para que sea la clase de la que ha recibido más información durante el proceso de iteración.

– Aprendizaje con coherencia local y global, 2003.

Ahora que estamos familiarizados con el algoritmo de distribución de etiquetas, veamos cómo podríamos usarlo en un proyecto. Primero, debemos definir un conjunto de datos de clasificación semi-supervisado.

Conjunto de datos de clasificación semi supervisado

En esta sección, definiremos un conjunto de datos para el aprendizaje semi-supervisado y estableceremos una línea de base en el desempeño en el conjunto de datos.

Primero, podemos definir un conjunto de datos de clasificación sintético usando la función make_classification ().

Definiremos el conjunto de datos con dos clases (clasificación binaria) y dos variables de entrada y 1000 ejemplos.

A continuación, dividiremos el conjunto de datos en conjuntos de datos de prueba y entrenamiento con una división igual al 50-50 (por ejemplo, 500 filas en cada uno).

Finalmente, volveremos a dividir el conjunto de datos de entrenamiento a la mitad en una parte que tendrá etiquetas y una parte que fingiremos que no tiene etiqueta.

Al unir esto, el ejemplo completo de preparación del conjunto de datos de aprendizaje semi-supervisado se enumera a continuación.

Recomendado:  SAS se une a CESMII

La ejecución del ejemplo prepara el conjunto de datos y luego resume la forma de cada una de las tres porciones.

Los resultados confirman que tenemos un conjunto de datos de prueba de 500 filas, un conjunto de datos de entrenamiento etiquetado de 250 filas y 250 filas de datos sin etiquetar.

Un algoritmo de aprendizaje supervisado solo tendrá 250 filas desde las que entrenar un modelo.

Un algoritmo de aprendizaje semi-supervisado tendrá las 250 filas etiquetadas, así como las 250 filas no etiquetadas que podrían usarse de numerosas formas para mejorar el conjunto de datos de entrenamiento etiquetados.

A continuación, podemos establecer una línea de base en el rendimiento en el conjunto de datos de aprendizaje semi-supervisado utilizando un algoritmo de aprendizaje supervisado que se ajusta solo a los datos de entrenamiento etiquetados.

Esto es importante porque esperaríamos que un algoritmo de aprendizaje semi-supervisado supere a un algoritmo de aprendizaje supervisado que se ajuste solo a los datos etiquetados. Si este no es el caso, entonces el algoritmo de aprendizaje semi-supervisado no tiene habilidad.

En este caso, utilizaremos un algoritmo de regresión logística que se ajuste a la parte etiquetada del conjunto de datos de entrenamiento.

Luego, el modelo puede usarse para hacer predicciones en todo el conjunto de datos de prueba de exclusión y evaluarse usando la precisión de clasificación.

Al unir esto, el ejemplo completo de evaluación de un algoritmo de aprendizaje supervisado en el conjunto de datos de aprendizaje semi-supervisado se enumera a continuación.

La ejecución del algoritmo ajusta el modelo en el conjunto de datos de entrenamiento etiquetado y lo evalúa en el conjunto de datos reservado e imprime la precisión de la clasificación.

Nota: Sus resultados pueden variar dada la naturaleza estocástica del algoritmo o procedimiento de evaluación, o las diferencias en la precisión numérica. Considere ejecutar el ejemplo varias veces y compare el resultado promedio.

En este caso, podemos ver que el algoritmo logró una precisión de clasificación de alrededor del 84,8 por ciento.

Esperaríamos que un algoritmo de aprendizaje semi-supervisado eficaz logre una precisión mejor que esta.

A continuación, exploremos cómo aplicar el algoritmo de difusión de etiquetas al conjunto de datos.

Difusión de etiquetas para el aprendizaje semi-supervisado

El algoritmo de difusión de etiquetas está disponible en la biblioteca de aprendizaje automático de Python de scikit-learn a través de la clase LabelSpreading.

El modelo se puede ajustar como cualquier otro modelo de clasificación llamando al ajuste() función y se utiliza para hacer predicciones de nuevos datos a través de la predecir() función.

Es importante destacar que el conjunto de datos de entrenamiento proporcionado al ajuste() La función debe incluir ejemplos etiquetados que estén codificados ordinalmente (como es normal) y ejemplos no etiquetados marcados con una etiqueta de -1.

A continuación, el modelo determinará una etiqueta para los ejemplos sin etiqueta como parte del ajuste del modelo.

Recomendado:  ¿Es la IA el futuro del marketing de contenidos?

Una vez que se ajusta el modelo, las etiquetas estimadas para los datos etiquetados y no etiquetados en el conjunto de datos de entrenamiento están disponibles a través de «transducción_«Atributo en el EtiquetaExpandiendo clase.

Ahora que estamos familiarizados con cómo usar el algoritmo de difusión de etiquetas en scikit-learn, veamos cómo podríamos aplicarlo a nuestro conjunto de datos de aprendizaje semi-supervisado.

Primero, debemos preparar el conjunto de datos de entrenamiento.

Podemos concatenar los datos de entrada del conjunto de datos de entrenamiento en una sola matriz.

Luego, podemos crear una lista de valores -1 (sin etiquetar) para cada fila en la parte sin etiquetar del conjunto de datos de entrenamiento.

Luego, esta lista se puede concatenar con las etiquetas de la parte etiquetada del conjunto de datos de entrenamiento para que se corresponda con la matriz de entrada del conjunto de datos de entrenamiento.

Ahora podemos entrenar al EtiquetaExpandiendo modelo en todo el conjunto de datos de entrenamiento.

A continuación, podemos usar el modelo para hacer predicciones en el conjunto de datos reservado y evaluar el modelo utilizando la precisión de clasificación.

Al unir esto, el ejemplo completo de evaluación de la distribución de etiquetas en el conjunto de datos de aprendizaje semi-supervisado se enumera a continuación.

La ejecución del algoritmo ajusta el modelo en todo el conjunto de datos de entrenamiento y lo evalúa en el conjunto de datos reservado e imprime la precisión de la clasificación.

Nota: Sus resultados pueden variar dada la naturaleza estocástica del algoritmo o procedimiento de evaluación, o las diferencias en la precisión numérica. Considere ejecutar el ejemplo varias veces y compare el resultado promedio.

En este caso, podemos ver que el modelo de distribución de etiquetas alcanza una precisión de clasificación de aproximadamente el 85,4 por ciento, que es un poco más alta que un ajuste de regresión logística solo en el conjunto de datos de entrenamiento etiquetado que logró una precisión de aproximadamente el 84,8 por ciento.

Hasta aquí todo bien.

Otro enfoque que podemos usar con el modelo semi-supervisado es tomar las etiquetas estimadas para el conjunto de datos de entrenamiento y ajustar un modelo de aprendizaje supervisado.

Recuerde que podemos recuperar las etiquetas para todo el conjunto de datos de entrenamiento del modelo de distribución de etiquetas de la siguiente manera:

Recomendado:  Ajuste el rendimiento de XGBoost con curvas de aprendizaje

Luego, podemos usar estas etiquetas, junto con todos los datos de entrada, para entrenar y evaluar un algoritmo de aprendizaje supervisado, como un modelo de regresión logística.

La esperanza es que el modelo de aprendizaje supervisado que se ajuste a todo el conjunto de datos de entrenamiento logre un rendimiento aún mejor que el modelo de aprendizaje semi-supervisado solo.

Al unir esto, el ejemplo completo del uso de las etiquetas del conjunto de entrenamiento estimado para entrenar y evaluar un modelo de aprendizaje supervisado se enumera a continuación.

Running the algorithm fits the semi-supervised model on the entire training dataset, then fits a supervised learning model on the entire training dataset with inferred labels and evaluates it on the holdout dataset, printing the classification accuracy.

Note: Your results may vary given the stochastic nature of the algorithm or evaluation procedure, or differences in numerical precision. Consider running the example a few times and compare the average outcome.

In this case, we can see that this hierarchical approach of semi-supervised model followed by supervised model achieves a classification accuracy of about 85.8 percent on the holdout dataset, slightly better than the semi-supervised learning algorithm used alone that achieved an accuracy of about 85.6 percent.

Can you achieve better results by tuning the hyperparameters of the LabelSpreading model?
Let me know what you discover in the comments below.

Further Reading

This section provides more resources on the topic if you are looking to go deeper.

Books

Papers

APIs

Articles

Resumen

In this tutorial, you discovered how to apply the label spreading algorithm to a semi-supervised learning classification dataset.

Specifically, you learned:

  • An intuition for how the label spreading semi-supervised learning algorithm works.
  • How to develop a semi-supervised classification dataset and establish a baseline in performance with a supervised learning algorithm.
  • How to develop and evaluate a label spreading algorithm and use the model output to train a supervised learning algorithm.

Do you have any questions?
Ask your questions in the comments below and I will do my best to answer.

Discover Fast Machine Learning in Python!

Master Machine Learning With Python

Develop Your Own Models in Minutes

…with just a few lines of scikit-learn code

Learn how in my new Ebook:
Machine Learning Mastery With Python

Covers self-study tutorials y end-to-end projects like:
Loading data, visualization, modeling, tuning, and much more…

Finally Bring Machine Learning To
Your Own Projects

Skip the Academics. Just Results.

See What’s Inside