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