ndcg_score#

sklearn.metrics.ndcg_score(y_true, y_score, *, k=None, sample_weight=None, ignore_ties=False)[source]#

Berechne Normalized Discounted Cumulative Gain.

Summe der wahren Werte, sortiert in der Reihenfolge, die durch die vorhergesagten Werte induziert wird, nach Anwendung eines logarithmischen Rabatts. Anschließend wird durch den bestmöglichen Wert (idealer DCG, der bei perfekter Sortierung erzielt wird) geteilt, um einen Wert zwischen 0 und 1 zu erhalten.

Diese Ranking-Metrik gibt einen hohen Wert zurück, wenn wahre Labels von y_score hoch eingestuft werden.

Parameter:
y_truearray-like von der Form (n_samples, n_labels)

Wahre Ziele der Multilabel-Klassifizierung oder wahre Werte von zu sortierenden Entitäten. Negative Werte in y_true können zu einem Ergebnis führen, das nicht zwischen 0 und 1 liegt.

y_scorearray-like von der Form (n_samples, n_labels)

Zielwerte, können entweder Wahrscheinlichkeitsschätzungen, Konfidenzwerte oder nicht-schwellenwertige Entscheidungskennzahlen (wie sie von „decision_function“ bei einigen Klassifikatoren zurückgegeben werden) sein.

kint, default=None

Betrachtet nur die höchsten k Werte im Ranking. Wenn None, werden alle Ausgaben verwendet.

sample_weightarray-like der Form (n_samples,), Standardwert=None

Stichproben-Gewichte. Wenn None, erhalten alle Stichproben das gleiche Gewicht.

ignore_tiesbool, default=False

Geht davon aus, dass es keine Gleichstände in y_score gibt (was wahrscheinlich der Fall ist, wenn y_score kontinuierlich ist), um Effizienzgewinne zu erzielen.

Gibt zurück:
normalized_discounted_cumulative_gainfloat in [0., 1.]

Die gemittelten NDCG-Werte für alle Stichproben.

Siehe auch

dcg_score

Discounted Cumulative Gain (nicht normalisiert).

Referenzen

Wikipedia-Eintrag zu Discounted Cumulative Gain

Jarvelin, K., & 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., & Liu, T. Y. (2013, Mai). Eine theoretische Analyse von NDCG-Ranking-Maßen. In Proceedings of the 26th Annual Conference on Learning Theory (COLT 2013)

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

Beispiele

>>> import numpy as np
>>> from sklearn.metrics import ndcg_score
>>> # we have ground-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...