Spec-Zone.ru › scikit-learn

ndcg_score

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

Вычислить нормализованный дисконтированный кумулятивный выигрыш.

Суммировать истинные оценки, отсортированные по порядку, заданному предсказанными оценками, после применения логарифмической скидки. Затем разделить на наилучшую возможную оценку (Идеальный DCG, полученный для идеального ранжирования), чтобы получить оценку от 0 до 1.

Эта метрика ранжирования возвращает высокое значение, если истинные метки имеют высокий ранг по y_score.

Параметры:
y_trueмассив-подобный формы (n_samples, n_labels)

Истинные целевые значения многоклассовой классификации или истинные значения объектов, которые нужно ранжировать. Отрицательные значения в y_true могут привести к выводу, который не находится в диапазоне от 0 до 1.

y_scoreмассив-подобный формы (n_samples, n_labels)

Целевые оценки, которые могут быть оценками вероятности, значениями достоверности или не порожденными мерами решений (как возвращает «decision_function» для некоторых классификаторов).

kint, по умолчанию=None

Рассматривать только k наибольших оценок в ранжировании. Если None, использовать все результаты.

sample_weightмассив-подобный формы (n_samples,), по умолчанию=None

Веса образцов. Если None, все образцы получают одинаковый вес.

ignore_tiesbool, по умолчанию=False

Предполагается, что в y_score нет ничьих (что, скорее всего, будет иметь место, если y_score является непрерывной величиной) для повышения эффективности.

Возвращает:
normalized_discounted_cumulative_gainfloat в [0., 1.]

Среднее значение оценок NDCG для всех образцов.

См. также

dcg_score

Дисконтированный кумулятивный выигрыш (не нормализованный).

Ссылки

Статья в Википедии о дисконтированном кумулятивном выигрыше

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, May). A theoretical analysis of NDCG ranking measures. In Proceedings of the 26th Annual Conference on Learning Theory (COLT 2013)

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

Примеры

>>> 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)
np.float64(0.69...)
>>> scores = np.asarray([[.05, 1.1, 1., .5, .0]])
>>> ndcg_score(true_relevance, scores)
np.float64(0.49...)
>>> # we can set k to truncate the sum; only top k answers contribute.
>>> ndcg_score(true_relevance, scores, k=4)
np.float64(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)
np.float64(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)
np.float64(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)
np.float64(0.5...)

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.metrics.ndcg_score.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API