En pocas palabras
Biblioteca para detectar posibles problemas de calidad en datasets mediante predicciones del modelo.
Qué problema resuelve
Etiquetas incorrectas, duplicados o ejemplos atípicos que perjudican entrenamiento y evaluación.
Cuándo utilizarlo
Proyectos de ML con datos etiquetados. Ejemplo: priorizar tickets cuya categoría podría estar mal asignada.
De la idea a la práctica
Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.
En el Radar compartido: Trial (valoración de la edición aportada).
Cómo funciona
Utiliza probabilidades predichas y confident learning para estimar inconsistencias entre ejemplos y etiquetas. Ayuda a ordenar la inspección del dataset.
Ejemplo de uso
Generar predicciones fuera de muestra sobre tickets etiquetados. Revisar los casos con mayor sospecha, corregir errores confirmados y comparar el entrenamiento sobre un conjunto de evaluación separado.
Confident learning en pocas palabras
Para cada clase se estima un umbral de confianza (la probabilidad media que el modelo asigna a esa clase en ejemplos etiquetados con ella). Con esos umbrales se construye una matriz de conteo conjunto entre etiqueta observada y etiqueta probablemente verdadera. Los ejemplos que caen fuera de la diagonal son candidatos a error de etiquetado, ordenados por lo poco que el modelo confía en su etiqueta.
Ejemplo con scikit-learn
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_predict
from cleanlab.filter import find_label_issues
# Probabilidades fuera de muestra: cada ejemplo se predice con un modelo que no lo vio
pred_probs = cross_val_predict(
LogisticRegression(max_iter=1000), X, y, cv=5, method="predict_proba"
)
issues = find_label_issues(
labels=y,
pred_probs=pred_probs,
return_indices_ranked_by="self_confidence",
)
print(f"{len(issues)} posibles errores de etiqueta; revisar primero: {issues[:20]}")
Datalab: más allá de las etiquetas
Datalab audita un dataset completo a partir de predicciones y embeddings:
from cleanlab import Datalab
lab = Datalab(data=df, label_name="categoria")
lab.find_issues(pred_probs=pred_probs, features=embeddings)
lab.report()
| Tipo de problema | Qué detecta |
|---|---|
| Label | Etiquetas probablemente incorrectas |
| Outlier | Ejemplos atípicos respecto al resto |
| Near duplicate | Duplicados o casi duplicados (fuga entre train y test) |
| Class imbalance | Clases muy infrarrepresentadas |
| Non-IID | Datos que no parecen independientes (orden, deriva) |
Flujo de mejora recomendado
- Entrena un modelo base y obtén probabilidades por validación cruzada.
- Revisa los casos de mayor sospecha con personas expertas, no los elimines automáticamente.
- Corrige, registra el cambio y su motivo.
- Reentrena y compara sobre un conjunto de test limpio y fijo.
Los datos tabulares, de texto, imagen y audio funcionan con el mismo enfoque siempre que haya un modelo que produzca probabilidades. Para generar datos adicionales controlados, ver synthetic data.
Criterios de implementación
Evitar probabilidades obtenidas sobre los mismos ejemplos usados para ajustar el modelo. Preservar trazabilidad de correcciones y revisar clases minoritarias antes de eliminar datos.
Continúa en las fuentes
Documentación oficial para verificar detalles y explorar más.