ndcg 指标和k的关系

实验不同k

    for i in range(3,7):rele_table,pred_table,pred_rand = {},{},{}rele_table['kol'] = 0.1rele_table['media'] = 0.2rele_table['other'] = 0.3rele_table['guandian'] = 0.4rele_table['taolun'] = 0.5rele_table['f012'] = 0.6pred_table['kol'] = 0.34828833pred_table['media'] = 0.31925637pred_table['other'] = 0.30245525pred_table['guandian'] = 0.13245525pred_table['taolun'] = 0.83245525pred_table['f012'] = 0.37245525mids = ['kol',"media","other","guandian","taolun","f012"]pred_rand['kol'] = random.random()pred_rand['media'] = random.random()pred_rand['other'] = random.random()pred_rand['guandian'] = random.random()pred_rand['taolun'] = random.random()pred_rand['f012'] = random.random()value = cal_list_ndcg(mids, rele_table, pred_table, i)ndcg_rand = cal_list_ndcg(mids, rele_table, pred_rand, i)print(i)print(value,ndcg_rand)print(value / i,ndcg_rand / i)def cal_list_ndcg(mids, rele_table, pred_table, n):mids = sorted(mids, reverse=True, key=lambda x: rele_table[x])idcg = 0for i, m in enumerate(mids):if i >= n:breakidcg += ((2**rele_table[m] - 1) / (math.log2(i+2)))mids = sorted(mids, reverse=True, key=lambda x: pred_table[x])# print(" ".join([str(rele_table[mid]) for mid in mids]))dcg = 0for i, m in enumerate(mids):if i >= n:breakdcg += ((2**rele_table[m] - 1) / (math.log2(i+2)))return dcg / idcg

dcg随rel(i)变化情况

i越大 ,dcg越大
dcg += ((2**rele_table[m] - 1) / (math.log2(i+2)))

结果

3
1.0 0.4281434559617804
0.3333333333333333 0.14271448532059347
4
1.0 0.768846962242674
0.25 0.1922117405606685
5
1.0 0.8405557275318762
0.2 0.16811114550637524
6
1.0 0.8676354240144575
0.16666666666666666 0.14460590400240958

结论

在排序一致的前提下
可见k越大,ndcg越小
原因应该是
随着每次考虑的item 越多,分母cout增加,但是分子ndcg不变,导致整体下降。

那么为什么分子ndcg不变,也就是 dcg / idcg 不变呢
原因是他们排序完全一致 dcg==idcg

理想的idcg 应该随着k 的增大,增量不断下降,因为重要的都被排在前面

实际如果dcg越大,整体比例会越大,在k一定的情况下

!!但是如果排序完全相反

3
0.3001289811601986 0.5473110827374296
0.1000429937200662 0.18243702757914318
4
0.40407676211684973 0.7345030054951796
0.10101919052921243 0.1836257513737949
5
0.5293144802949171 0.5967650853888128
0.10586289605898343 0.11935301707776255
6
0.68132617129277 0.888722526516354
0.11355436188212832 0.148120421086059

可以看到,k越大,ndcg越大,分析可能是k大的时候容错比较好

所以如果在排序好的情况下,k越大,ndcg越小(因为分子永恒为1,分母变大count++)。
但是如果在排序差的情况下,k越大,ndcg越大(idcg 和不会变,但如果dcg加的多了,整体值会增加)。

ndcg 指标和k的关系相关推荐

  1. R语言层次聚类:通过内平方和(Within Sum of Squares, WSS)选择最优的聚类K值、以内平方和(WSS)和K的关系并通过弯头法(elbow method)获得最优的聚类个数

    通过内平方和(Within Sum of Squares, WSS)选择最佳的聚类K值.以内平方和(WSS)和K的关系并通过弯头法(elbow method)获得最佳的聚类个数 目录

  2. mt4 指标 涨跌幅 颜色k线_通达信精选指标——彩色K线指标

    通达信精选指标--彩色K线指标 VAR1:=LLV(L,10); VAR2:=HHV(H,25); 趋势:=EMA((C-VAR1)/(VAR2-VAR1),10); AA:=趋势>=REF(趋 ...

  3. NDCG指标——qjzcy的博客

    工作学习中的一点体会--NDCG 指标 NDCG(Normalized discounted cumulative gain)值是我们经常用到的一个rank指标,这里写一下我对NDCG值的一点理解 - ...

  4. 同花顺炒股指标定制-K线只有红绿2个颜色怎么行?

    传统的K线只有红和绿,很不方便.比如昨天跌停显示绿色,今天开盘跌停,收盘-8%,这就变成红色了. 要是天天这玩法,低开,小涨一下,连续一周每天跌8%,看到的都是涨的?这同花顺程序员脑子有问题. 我的想 ...

  5. NDCG(@R)指标

    Notes 检索中常用几种评价指标: mAP(@R) Precision-Recall Curve Precision@top-R Curve NDCG(@R) ACG(@R) WAP(@R) NDC ...

  6. 【推荐系统排序指标】CG、DCG、NDCG、Hit Rate

    文章目录 一.CG,累计增益 Cumulative Gain 二.DCG,折损累计增益 Discounted cumulative gain 三.NDCG,归一化折损累计增益 Normalized D ...

  7. R语言层次聚类:通过内平方和WSS选择最优的聚类K值、可视化不同K下的BSS和WSS、通过Calinski-Harabasz指数(准则)与聚类簇个数的关系获取最优聚类簇的个数

    R语言层次聚类:通过内平方和(Within Sum of Squares,WSS)选择最佳的聚类K值.以内平方和(WSS)和K的关系并通过弯头法ÿ

  8. IM3、IIP3、OIP3、G、P1dB指标之间的关系

    文章更新与问题,可关注微信公众号,谢谢! 噪声系数与非线性失真是描述射频系统性能优劣的两个重要指标. 噪声-限制了系统所能处理的最低信号电平: 非线性失真-限制了系统所能处理的最高信号电平: 在非线性 ...

  9. 射频中的 IM3、IIP3、OIP3、G、P1dB指标之间的关系

    噪声系数与非线性失真是描述射频系统性能优劣的两个重要指标. 噪声-限制了系统所能处理的最低信号电平: 非线性失真-限制了系统所能处理的最高信号电平: 在非线性器件(放大器.混频器等)输入端,输入等幅度 ...

最新文章

  1. 04JavaScript中的运算符
  2. Linux中的sed详解
  3. 自动驾驶汽车对保险业的影响
  4. python ImportError: No module named unittest2
  5. java 从数据库取值_java 连接数据库取值问题
  6. jboss加载组件_直接从JBoss AS 7组件使用JGroups
  7. 在标记的HREF属性中javascript:alert(this.innerHTML)会怎么样?
  8. kotlin 查找id_Kotlin程序查找给定范围内的素数
  9. 为革命,保护视力——为Eclipse更换暗黑皮肤及编辑页面的字体颜色主题
  10. 基于TableStore/MaxCompute的数据采集分析系统介绍
  11. Linux下多功能编辑器,Linux下的编辑器——vi大全
  12. HDU2012 素数判定
  13. python的mysql模块_Python中操作mysql的pymysql模块详解
  14. 04【前端工程化初探】Jenkines+GitLab+Tomcat流水线配置部署React应用
  15. javascript:void(0)的作用
  16. 《极限竞速地平线4》Teredo不合格解决
  17. 电脑怎么搜索文本内容? 电脑快速搜索内容的技巧
  18. 【JS数据结构与算法】双向链表(DoublylinkedList)封装及其方法
  19. uniapp公共测试证书签名
  20. 大话数据结构读书笔记系列(三)线性表

热门文章

  1. 含泪整理最优质名胜 古迹cc0高清摄影图片素材,你想要的这里都有
  2. QOpenGLWidget 全屏显示黑屏解决方案
  3. Linux正则表达式文件分割合并软连接
  4. Intel(R) Wireless-AC 9462 网卡 网络断断续续,断网,搜不到信号,升级驱动
  5. 建立自己的dns服务器的用途
  6. linux TTY子系统 --- bug来了,稍候再整理
  7. 关于实验室管理及训练经验总结
  8. JavaScript 学习-8.JavaScript 箭头函数的使用
  9. html tag noscript
  10. 囧!揭露上海联通可刷公交卡手机!!!