单特征 NDCG

能计算模型的 NDCG,也就能计算单特征的 NDCG,用于评估单特征的有效性,跟 Group AUC 用途一样

单特征 NDCG 如何衡量好坏

如果是 AUC,越大于或小于 0.5,特征越有效,但 NDCG 没有这个特点,NDCG 都是正的,而且,样本正负比例不同,NDCG 的值也不同,变化很大。那么在同样的样本下,就需要有个基准用来说明好坏。

一个可靠的方案是把随机数作为一个特征,以其 NDCG 为基准,比随机数 NDCG 高得越多,特征就越有效。

为什么要打散

有些离散化的特征在一个 qid 里区分度不高,例如某个特征在 10 个样本只有 3 个值,这时计算的 NDCG 结果就非常依赖初始序,初始序最完美时得出的 NDCG 也偏高,初始序最差时得出的 NDCG 也最差。所以公平起见,需要先将原始样本打散,再计算 NDCG。

基准 NDCG,要用到随机数。

特征 NDCG,随机打散,可以用随机数,也可以用 linux 命令 shuf

好用的 NDCG 计算工具

https://github.com/miandai/NDCG

基准 NDCG

假如样本特征数据格式为:

label qid score

字段间以空格分隔

NDCG 计算:

awk '{printf "%s %s %s\n",$1,$2,rand()}' sample.txt | sort -t" " -k2,2 | python NDCG.py 20

注意到这里以随机数 rand 替换了原文件中的特征值 score

单特征 NDCG

先全部打散,再根据 qid 聚合并计算 NDCG

打散有两种方式。

最简单的是用 linux 命令 shuf:

shuf sample.txt | sort -t" " -k2,2 -s | python NDCG.py 20

麻烦点儿的是使用随机数打散(刚开始不知道 shuf 命令,用的是这种方式):

awk '{printf "%s\t%f\n",$0,rand()}' sample.txt | sort -k4n,4 | cut -f1| sort -t" " -k2,2 -s | python NDCG.py 20

解释:

awk '{printf "%s\t%f\n",$0,rand()}' --在最后一列加随机数,不用空格而用 \t 分隔的目的是为了后面好用 cut 去除随机数这一列
sort -k4n,4 --将样本按随机数排序,实现打散
cut -f1 --去除随机数一列
sort -t" " -k2,2 -s --只按第二列排序(-k2,2),且是稳定排序(-s 的作用),即若第二列相同,就不用重排了

附记

使用 sort 命令打散时踩了两个坑:

  1. 如果只想按第二列排序,sort 的 -k 参数一定要是 -k2,2,不能是 -k2,不然 sort 排序时会把第三列也算上,这样前面打散就失效了

  2. 如果想要稳定排序,即当第二列相同时,不做重新序,以在 qid 内保持随机打散的序,要记得使用 -s 参数

转载于:https://www.cnblogs.com/NaughtyBaby/p/9719183.html

样本打散后计算单特征 NDCG相关推荐

  1. TensorFlow训练单特征和多特征的线性回归

    线性回归 线性回归是很常见的一种回归,线性回归可以用来预测或者分类,主要解决线性问题.相关知识可看"相关阅读". 主要思想 在TensorFlow中进行线性回归处理重点是将样本和样 ...

  2. TensorFlow 训练单特征和多特征的线性回归

    线性回归 线性回归是很常见的一种回归,线性回归可以用来预测或者分类,主要解决线性问题.相关知识可看"相关阅读". 主要思想 在TensorFlow中进行线性回归处理重点是将样本和样 ...

  3. ORB2单目读代码笔记5--利用灰度质心计算ORB特征点方向,实现旋转不变性

    5.利用灰度质心计算ORB特征点方向,实现旋转不变性 ComputeKeyPointOctTree 跳转 computeOrientation computeOrientation 跳转 IC_Ang ...

  4. [时间序列预测]基于BP、LSTM、CNN-LSTM神经网络算法的单特征用电负荷预测[保姆级手把手教学]

    系列文章目录 深度学习原理-----线性回归+梯度下降法 深度学习原理-----逻辑回归算法 深度学习原理-----全连接神经网络 深度学习原理-----卷积神经网络 深度学习原理-----循环神经网 ...

  5. Spark 和 Python.sklearn:使用随机森林计算 feature_importance 特征重要性

    前言 在使用GBDT.RF.Xgboost等树类模型建模时,往往可以通过feature_importance 来返回特征重要性,本文以随机森林为例介绍其原理与实现.[ 链接:机器学习的特征重要性究竟是 ...

  6. 腾讯广告算法大赛2020-广告产品种类单特征-入门级

    文章目录 1.比赛背景 1.1 题目: 1.2 大赛简介 1.3 赛题描述 1.4 数据说明 1.4.1 数据集 1.4.2 数据特征说明 1.5 提交方式 1.6 评估方式 2.数据集处理 2.1导 ...

  7. 卷积计算,反卷积计算,特征图大小计算,空洞卷积计算

    感受野大小计算.卷积参数量与计算量.空洞卷积计算量与参数量 卷积计算,反卷积计算,特征图大小计算,空洞卷积计算 转自:https://www.jianshu.com/p/09ea4df7a788?ut ...

  8. 降维后的高维特征的参数_高维超参数调整简介

    降维后的高维特征的参数 by Thalles Silva 由Thalles Silva 高维超参数调整简介 (An introduction to high-dimensional hyper-par ...

  9. 对比学习效果差?谷歌提出弱语义负样本,有效学习高级特征!

    文 | jxyxiangyu 编 | 小轶 对比学习是 2021 年几大研究热点之一了.如果说预训练模型解决了机器学习对大规模标注数据的需求问题,那么,对比学习可以说是将无监督/自监督学习推广到更一般 ...

  10. python划分训练集和测试集_杨涛的Python机器学习3:单特征与多特征、训练集与测试集,杨桃...

    本人CSDN博客专栏:https://blog.csdn.net/yty_7 Github地址:https://github.com/yot777/ 单特征与多特征 在上一节标签和特征的示例中,我们使 ...

最新文章

  1. 超燃!Apache Flink 全球顶级盛会强势来袭
  2. 【转载】Linux常用命令1
  3. 宽依赖和窄依赖_Spark术语解释及宽窄依赖执行原理,代码分析
  4. mysql权限表_MySQL 数据库赋予用户权限操作表
  5. 小程序 自定义遮照 mask 禁止上下滑动
  6. java map扩容机制_java中ConcurrentHashMap的扩容机制是怎样的?详细解析
  7. Android使用Application的好处
  8. android androidruntime java,java – Runtime.exec():在Android中重启?
  9. Linux上安装ZooKeeper并设置开机启动(CentOS7+ZooKeeper3.4.10)
  10. 使用Python迭代字符串中的每个字符
  11. 使用 rem 设置文字大小(文字响应式)
  12. 全国地区对应身份证号码值关系--身份证号前2位
  13. 菜鸟学院~沉寂近30年后火了!存内计算如何打破AI算力瓶颈?
  14. 数仓4.0(三)------数据仓库系统
  15. DS18B20读取温度
  16. eclipse导入jdbc教程(简洁)
  17. 苹果手机圆圈在哪里设置_不知道苹果手机录音在哪里?那你就落伍了
  18. Python函数习题
  19. OneDrive操作指南
  20. SOLIDWORKS强劲剪裁有哪些黑技能?

热门文章

  1. 【渝粤教育】国家开放大学2018年春季 8665-21T护理伦理学 参考试题
  2. 【渝粤教育】国家开放大学2018年春季 0104-21T酒店安全管理 参考试题
  3. 【RLchina第四讲】Model-Based Reinforcement Learning
  4. 约束最优化方法 (一) 最优性条件
  5. 第三次作业 词频统计
  6. moonlight不显示鼠标指针
  7. 「CodePlus 2017 11 月赛」Yazid 的新生舞会(树状数组/线段树)
  8. OC typedef(起别名)
  9. [转]引用 VC 对话框设置位图背景并透明控件
  10. Luogu P3223 [HNOI2012]排队 组合