El error de cobertura nos dice cuántas etiquetas de predicción final con la puntuación más alta debemos incluir sin perder ninguna etiqueta de verdad básica. Esto es útil si queremos saber el número promedio de predicciones mejor puntuadas necesarias para predecir con el fin de no perder ninguna etiqueta de verdad básica.
Dada una array indicadora binaria de etiquetas de verdad fundamental . La puntuación asociada con cada etiqueta se denota por dónde,
El error de cobertura se define como:
donde el rango se define como
Código: para verificar el error de cobertura para cualquier puntaje de predicción con etiquetas verdaderas usando scikit-learn.
# Import dataset import numpy as np from sklearn.metrics import coverage_error # Create Imaginary prediction and truth dataset y_true = np.array([[1, 0, 1], [0, 0, 1], [0, 1, 1]]) y_pred_score = np.array([[0.75, 0.5, 1], [1, 1, 1.2], [2.3, 1.2, 0.1]]) print(coverage_error(y_true, y_pred_score))
Producción:
coverage error of 2.0
Calculemos manualmente el error de cobertura del ejemplo anterior.
Nuestra primera muestra tiene un valor real de [1, 0, 1] . Para cubrir ambas etiquetas verdaderas, debemos buscar nuestras predicciones (aquí [0.75, 0.5, 1]) en orden descendente. Por lo tanto, necesitamos las 2 etiquetas predichas principales en esta muestra. De manera similar, para las muestras segunda y tercera, necesitamos las muestras predichas top-1 y top-2. Promediar estos resultados sobre un número de muestras nos da una salida de 2.0 .
El mejor valor de cobertura es cuando es igual al número promedio de etiquetas de clase verdaderas.