dcg_score#

sklearn.metrics.dcg_score(y_true, y_score, *, k=None, log_base=2, sample_weight=None, ignore_ties=False)#

计算折损累计增益。

根据预测分数排序的真实分数进行求和,并应用对数折扣。

如果真实标签在 y_score 中排名较高,此排名指标将产生较高的值。

通常首选归一化折损累计增益(NDCG,通过ndcg_score计算)。

Parameters:
y_true类似数组的形状 (n_samples, n_labels)

多标签分类的真实目标,或要排名的实体的真实分数。

y_score类似数组的形状 (n_samples, n_labels)

目标分数,可以是概率估计、置信值,或非阈值决策的度量(如某些分类器返回的“decision_function”)。

kint, 默认=None

仅考虑排名中最高的k个分数。如果为None,则使用所有输出。

log_basefloat, 默认=2

用于折扣的对数的底数。较低的值意味着更尖锐的折扣(顶部结果更重要)。

sample_weight类似数组的形状 (n_samples,), 默认=None

样本权重。如果为 None ,则所有样本给予相同的权重。

ignore_tiesbool, 默认=False

假设y_score中没有平局(如果y_score是连续的,这可能是情况)以提高效率。

Returns:
discounted_cumulative_gainfloat

平均样本DCG分数。

See also

ndcg_score

折损累计增益除以理想折损累计增益(为完美排名获得的DCG),以获得0到1之间的分数。

<https://en.wikipedia.org/wiki/Discounted_cumulative_gain>`_ .

Jarvelin, K., & Kekalainen, J. (2002)。 基于累计增益的IR技术评估。ACM信息系统交易(TOIS), 20(4), 422-446。

Wang, Y., Wang, L., Li, Y., He, D., Chen, W., & Liu, T. Y. (2013, May)。 NDCG排名度量的理论分析。在第26届学习理论年会(COLT 2013)的会议记录中。

McSherry, F., & Najork, M. (2008, March)。在存在平局分数的情况下高效计算信息检索性能度量。在欧洲信息检索会议(pp. 414-421)。Springer, Berlin, Heidelberg。

Examples

>>> import numpy as np
>>> from sklearn.metrics import dcg_score
>>> # 我们对某个查询的某些答案有真实的相关性:
>>> true_relevance = np.asarray([[10, 0, 0, 1, 5]])
>>> # 我们预测答案的分数
>>> scores = np.asarray([[.1, .2, .3, 4, 70]])
>>> dcg_score(true_relevance, scores)
9.49...
>>> # 我们可以设置k来截断求和;只有前k个答案贡献
>>> dcg_score(true_relevance, scores, k=2)
5.63...
>>> # 现在我们的预测中有一些平局
>>> scores = np.asarray([[1, 0, 0, 0, 1]])
>>> # 默认情况下平局被平均,所以这里我们得到我们顶部预测的平均真实相关性:(10 + 5) / 2 = 7.5
>>> dcg_score(true_relevance, scores, k=1)
7.5
>>> # 我们可以选择忽略平局以获得更快的结果,但仅当我们知道分数中没有平局时,否则我们会得到错误的结果:
>>> dcg_score(true_relevance,
...           scores, k=1, ignore_ties=True)
5.0