sklearn.metrics.ndcg_score

sklearn.metrics.ndcg_score()

Calcula la Ganancia Acumulada Descontada Normalizada (Normalized Discounted Cumulative Gain).

Suma las puntuaciones verdaderas clasificadas en el orden inducido por las puntuaciones predichas, tras aplicar un descuento logarítmico. Luego divide entre la mejor puntuación posible (DCG ideal, obtenida para una clasificación perfecta) para obtener una puntuación entre 0 y 1.

Esta métrica de clasificación arroja un valor alto si las etiquetas verdaderas son clasificadas de manera alta por y_score.

Parámetros
y_truendarray de forma (n_samples, n_labels)

Objetivos verdaderos de la clasificación multietiqueta, o puntuaciones verdaderas de las entidades a clasificar.

y_scorendarray de forma (n_samples, n_labels)

Las puntuaciones objetivo, pueden ser estimaciones de probabilidad, valores de confianza, o una medida de decisiones sin umbral (tal como lo devuelve «decision_function» en algunos clasificadores).

kint, default=None

Sólo considera las k puntuaciones más altas en la clasificación. Si es None, utiliza todas las salidas.

sample_weightndarray de forma (n_samples,), default=None

Ponderaciones de muestras. Si es None, todas las muestras tienen la misma ponderación.

ignore_tiesbool, default=False

Asume que no hay empates (ties) en y_score (lo cual es probable que ocurra si y_score es continuo) para ganancias en eficiencia.

Devuelve
normalized_discounted_cumulative_gainfloat en [0., 1.]

Las puntuaciones promediadas de NDCG para todas las muestras.

Ver también

dcg_score

Ganancia Acumulada Descontada (no normalizada).

Referencias

Entrada de Wikipedia para Ganancia Acumulada Descontada

Jarvelin, K., y Kekalainen, J. (2002). Cumulated gain-based evaluation of IR techniques. ACM Transactions on Information Systems (TOIS), 20(4), 422-446.

Wang, Y., Wang, L., Li, Y., He, D., Chen, W., y Liu, T. Y. (2013, Mayo). A theoretical analysis of NDCG ranking measures. In Proceedings of the 26th Annual Conference on Learning Theory (COLT 2013)

McSherry, F., y Najork, M. (2008, Marzo). Computing information retrieval performance measures efficiently in the presence of tied scores. In European conference on information retrieval (pp. 414-421). Springer, Berlin, Heidelberg.

Ejemplos

>>> from sklearn.metrics import ndcg_score
>>> # we have groud-truth relevance of some answers to a query:
>>> true_relevance = np.asarray([[10, 0, 0, 1, 5]])
>>> # we predict some scores (relevance) for the answers
>>> scores = np.asarray([[.1, .2, .3, 4, 70]])
>>> ndcg_score(true_relevance, scores)
0.69...
>>> scores = np.asarray([[.05, 1.1, 1., .5, .0]])
>>> ndcg_score(true_relevance, scores)
0.49...
>>> # we can set k to truncate the sum; only top k answers contribute.
>>> ndcg_score(true_relevance, scores, k=4)
0.35...
>>> # the normalization takes k into account so a perfect answer
>>> # would still get 1.0
>>> ndcg_score(true_relevance, true_relevance, k=4)
1.0
>>> # now we have some ties in our prediction
>>> scores = np.asarray([[1, 0, 0, 0, 1]])
>>> # by default ties are averaged, so here we get the average (normalized)
>>> # true relevance of our top predictions: (10 / 10 + 5 / 10) / 2 = .75
>>> ndcg_score(true_relevance, scores, k=1)
0.75
>>> # we can choose to ignore ties for faster results, but only
>>> # if we know there aren't ties in our scores, otherwise we get
>>> # wrong results:
>>> ndcg_score(true_relevance,
...           scores, k=1, ignore_ties=True)
0.5