首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排序算法在K和NDCG上的精度计算

排序算法在K和NDCG上的精度计算
EN

Data Science用户
提问于 2020-01-08 03:43:52
回答 2查看 496关注 0票数 2

我根据用户的元数据和历史行为对筛选过的项列表进行排序。

现在,在K点如何计算像精度这样的节拍器?

一种方法可以是在训练和测试数据集中划分历史数据(例如90%和10%)。现在,从测试数据中选择用户的所有项,并将顺序随机化,并将其传递给排序算法。

现在,从测试数据和排序输出比较用户的实际项。

EN

回答 2

Data Science用户

发布于 2020-01-13 22:55:19

精度在k(精度@k)需要有标签的数据。每个项目都需要标记为与给定用户相关或不相关。

precision@k = \frac{Number\ of\ relevant\ @k}{Number\ of\ recommended\ items\ @k}

标签数据与列车/测试分离无关。训练/测试分割对于避免过度拟合和评估模型的泛化能力是非常有用的。

票数 1
EN

Data Science用户

发布于 2020-01-15 09:56:02

举例数据:

\begin{array}{|c|c|c|c|c|c|} \hline iterms\_id & predict\_score & predict\_rank & true\_score & true\_rank & pression@k \\ \hline 2 & 0.8 & 1 & 0.7 & 3 & 1 \\ \hline 3 & 0.7 & 2 & 0.6 & 4 & 1 \\ \hline 4 & 0.6 & 3 & 0.9 & 1 & 1 \\ \hline 1 & 0.4 & 4 & 0.8 & 2 & 0.75 \\ \hline 5 & 0.2 & 5 & 0.1 & 5 & 0.8 \\ \hline \end{array}
DCG_k = \sum_{i=1}^{k}\frac{2^{rel_i} - 1}{log_2{(i + 1)}}
IDCG_k = \sum_{i=1}^{k}\frac{2^{rue_i} - 1}{log_2{(i + 1)}}
NDCG_k = \frac{DCG_k}{IDCG_k}
DCG_5 = \frac{2^{0.7} -1}{log_2(1+1)} + \frac{2^{0.6} -1}{log_2(2+1)} + \frac{2^{0.9} -1}{log_2(3+1)} + \frac{2^{0.8} -1}{log_2(4+1)} + \frac{2^{0.1} -1}{log_2(5+1)} = 1.72986
IDCG_5 = \frac{2^{0.9} -1}{log_2(1+1)} + \frac{2^{0.8} -1}{log_2(2+1)} + \frac{2^{0.7} -1}{log_2(3+1)} + \frac{2^{0.6} -1}{log_2(4+1)} + \frac{2^{0.1} -1}{log_2(5+1)} = 1.89577
NDCG_5 = \frac{1.72986}{1.89577} = 0.91248

希望这个helps.QTQ

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/66073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档