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_scorehoch 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_truekö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_scoreDiscounted 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...