Spec-Zone.ru › scikit-learn

ndcg_score

sklearn.metrics.ndcg_score(y_true, y_score, *, k=None, sample_weight=None, ignore_ties=False)[исходный код]

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

Суммирует истинные оценки, ранжированные в порядке, определяемом предсказанными оценками, с применением логарифмического дисконтирования. Затем результат делится на наилучшую возможную оценку (идеальный 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). Оценка методов информационного поиска на основе накопленного выигрыша. ACM Transactions on Information Systems (TOIS), 20(4), 422-446.

Wang, Y., Wang, L., Li, Y., He, D., Chen, W., & Liu, T. Y. (2013, май). Теоретический анализ мер ранжирования NDCG. В материалах 26-й ежегодной конференции по теории обучения (COLT 2013)

McSherry, F., & Najork, M. (2008, март). Эффективное вычисление мер качества информационного поиска при наличии совпадающих оценок. В материалах Европейской конференции по информационному поиску (с. 414-421). Springer, Берлин, Гейдельберг.

Примеры

>>> 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...

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

Spec-Zone.ru

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