Descripción
El aprendizaje semi-supervisado aborda situaciones donde los conjuntos de datos de entrenamiento contienen una mezcla de muestras etiquetadas y no etiquetadas. El módulo `sklearn.semi_supervised` de Scikit-learn proporciona estimadores diseñados para utilizar estos datos no etiquetados, comprendiendo así mejor la distribución de los datos y mejorando la generalización a muestras nuevas y no vistas. Estas técnicas son particularmente efectivas cuando los datos etiquetados son escasos, pero los datos no etiquetados son abundantes.
Es importante tener en cuenta que los algoritmos semi-supervisados se basan en suposiciones sobre la distribución de los datos para lograr mejoras en el rendimiento. El módulo ofrece dos enfoques principales: Self Training y Label Propagation.
Self Training, basado en el algoritmo de Yarowsky, permite que cualquier clasificador supervisado que soporte `predict_proba` funcione de manera semi-supervisada. El `SelfTrainingClassifier` predice iterativamente etiquetas para muestras no etiquetadas y añade un subconjunto de estas al conjunto de datos etiquetados. La selección de estas muestras puede basarse en las probabilidades de predicción, utilizando un umbral o seleccionando las k-mejores muestras. Este proceso continúa hasta que todas las muestras están etiquetadas o no se seleccionan nuevas muestras en una iteración, con el número máximo de iteraciones controlable a través de `max_iter`.
Label Propagation abarca varios algoritmos de inferencia de grafos semi-supervisados, incluyendo `LabelPropagation` y `LabelSpreading`. Estos modelos construyen un grafo de similitud entre todos los puntos de datos de entrada. La idea central es que la estructura de los datos no etiquetados es consistente con las estructuras de clase, permitiendo que las etiquetas de clase se propaguen a las observaciones no etiquetadas. `LabelPropagation` realiza un "clamping" (fijación) duro de las etiquetas de entrada, mientras que `LabelSpreading` ofrece un enfoque más robusto minimizando una función de pérdida con propiedades de regularización, lo que lo hace más resistente al ruido. Ambos modelos soportan métodos de kernel integrados como RBF y KNN, influyendo en la escalabilidad y el rendimiento. El kernel RBF crea un grafo denso, potencialmente intensivo en memoria, mientras que el kernel KNN genera un grafo disperso, ofreciendo una mejor eficiencia de memoria y tiempos de ejecución reducidos.
Estos métodos son valiosos para tareas donde el etiquetado manual es costoso o consume mucho tiempo, permitiendo la creación de modelos más robustos y precisos al aprovechar la riqueza de los datos no etiquetados disponibles. La elección entre Self Training y Label Propagation depende de las características específicas del conjunto de datos y del enfoque deseado para aprovechar la información no etiquetada.
Aspectos destacados de Aprendizaje Semi-supervisado con Scikit-learn
Soporta clasificación semi-supervisada
Utiliza datos no etiquetados para mejorar la generalización
Incluye el algoritmo Self Training
Soporta Label Propagation y Label Spreading
Construye grafos de similitud para la propagación de etiquetas
Ofrece métodos de kernel RBF y KNN
Permite el control sobre el "clamping" de etiquetas en la propagación
Proceso de aprendizaje iterativo para Self Training
Adaptable a varios clasificadores supervisados para Self Training
Maneja escenarios con datos etiquetados limitados
Mejora la comprensión de la distribución subyacente de los datos
Primeros pasos con Aprendizaje Semi-supervisado con Scikit-learn
Acceder al modelo: Importar los estimadores relevantes de `sklearn.semi_supervised`.
Preparar los datos: Organizar las muestras etiquetadas y no etiquetadas.
Configurar el estimador: Instanciar `SelfTrainingClassifier` o `LabelPropagation`/`LabelSpreading` con los parámetros deseados.
Entrenar el modelo: Ajustar el estimador elegido al conjunto de datos preparado.
Predecir etiquetas: Utilizar el modelo entrenado para predecir etiquetas para datos nuevos.
Evaluar el rendimiento: Evaluar la precisión del modelo y las capacidades de generalización.
Casos de uso de Aprendizaje Semi-supervisado con Scikit-learn
- Clasificación de Texto
- Reconocimiento de Imágenes
- Detección de Fraude
- Segmentación de Clientes
- Diagnóstico Médico
- Reconocimiento de Voz




