Algoritmos de Aprendizaje Semi-Supervisado

Beginner

This tutorial is from open-source community. Access the source code

Introducción

En este laboratorio, exploraremos el concepto de aprendizaje semi-supervisado, que es un tipo de aprendizaje automático en el que parte de los datos de entrenamiento está etiquetada y parte no. Los algoritmos de aprendizaje semi-supervisado pueden aprovechar los datos no etiquetados para mejorar el rendimiento del modelo y generalizar mejor a nuevas muestras. Esto es particularmente útil cuando tenemos una cantidad pequeña de datos etiquetados pero una gran cantidad de datos no etiquetados.

En este laboratorio, nos centraremos en dos algoritmos de aprendizaje semi-supervisado: Autoentrenamiento y Propagación de Etiquetas. Aprenderemos cómo implementar y usar estos algoritmos utilizando scikit-learn, una popular biblioteca de aprendizaje automático en Python.

Consejos sobre la VM

Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje su retroalimentación después de la sesión y resolveremos el problema rápidamente para usted.

Instalación de scikit-learn

Antes de comenzar, asegúrate de tener instalado scikit-learn. Si no lo tienes instalado, puedes instalarlo con el siguiente comando:

pip install -U scikit-learn

Autoentrenamiento

Resumen del algoritmo de Autoentrenamiento

El algoritmo de Autoentrenamiento se basa en el algoritmo de Yarowsky. Permite que un clasificador supervisado funcione como un clasificador semi-supervisado al aprender a partir de datos no etiquetados. El algoritmo funciona entrenando iterativamente el clasificador supervisado en los datos etiquetados y no etiquetados, y luego utilizando las predicciones en los datos no etiquetados para agregar un subconjunto de estas muestras a los datos etiquetados. El algoritmo continúa iterando hasta que todas las muestras tienen etiquetas o no se seleccionan nuevas muestras en una iteración.

Uso del Autoentrenamiento en scikit-learn

En scikit-learn, el algoritmo de Autoentrenamiento se implementa en la clase SelfTrainingClassifier. Para utilizar este algoritmo, debes proporcionar un clasificador supervisado que implemente el método predict_proba. Aquí hay un ejemplo de cómo utilizar el algoritmo de Autoentrenamiento:

from sklearn.semi_supervised import SelfTrainingClassifier
from sklearn.linear_model import LogisticRegression

## Crea un clasificador de regresión logística
classifier = LogisticRegression()

## Crea un clasificador de autoentrenamiento con el clasificador de regresión logística como clasificador base
self_training_classifier = SelfTrainingClassifier(classifier)

## Entrena el clasificador de autoentrenamiento en los datos etiquetados y no etiquetados
self_training_classifier.fit(X_labeled, y_labeled, X_unlabeled)

## Predice las etiquetas para nuevas muestras
y_pred = self_training_classifier.predict(X_test)

En el ejemplo anterior, X_labeled e y_labeled son los datos etiquetados, X_unlabeled son los datos no etiquetados y X_test son las nuevas muestras a predecir.

Propagación de Etiquetas

Resumen del algoritmo de Propagación de Etiquetas

La Propagación de Etiquetas es un tipo de algoritmo de inferencia semi-supervisada de grafos. Construye un grafo de similitud sobre todos los elementos del conjunto de datos de entrada y utiliza este grafo para propagar las etiquetas de los datos etiquetados a los datos no etiquetados. La Propagación de Etiquetas se puede utilizar para tareas de clasificación y admite métodos de kernel para proyectar los datos a espacios dimensionales alternativos.

Uso de la Propagación de Etiquetas en scikit-learn

En scikit-learn, hay dos modelos de propagación de etiquetas disponibles: LabelPropagation y LabelSpreading. Ambos modelos construyen un grafo de similitud y propagan las etiquetas. Aquí hay un ejemplo de cómo utilizar la Propagación de Etiquetas:

from sklearn.semi_supervised import LabelPropagation

## Crea un modelo de propagación de etiquetas
label_propagation = LabelPropagation()

## Entrena el modelo de propagación de etiquetas en los datos etiquetados
label_propagation.fit(X_labeled, y_labeled)

## Predice las etiquetas para nuevas muestras
y_pred = label_propagation.predict(X_test)

En el ejemplo anterior, X_labeled e y_labeled son los datos etiquetados, y X_test son las nuevas muestras a predecir.

Resumen

El aprendizaje semi-supervisado es una técnica poderosa que nos permite aprovechar los datos no etiquetados para mejorar el rendimiento de nuestros modelos. En este laboratorio, aprendimos sobre dos algoritmos de aprendizaje semi-supervisado: Autoentrenamiento y Propagación de Etiquetas. También aprendimos cómo implementar y utilizar estos algoritmos utilizando scikit-learn. Al incorporar datos no etiquetados en nuestros flujos de trabajo de aprendizaje automático, podemos aprovechar mejor los datos disponibles y obtener predicciones más precisas.