样本打散后计算单特征 NDCG
单特征 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 命令打散时踩了两个坑:
如果只想按第二列排序,sort 的 -k 参数一定要是 -k2,2,不能是 -k2,不然 sort 排序时会把第三列也算上,这样前面打散就失效了
如果想要稳定排序,即当第二列相同时,不做重新序,以在 qid 内保持随机打散的序,要记得使用 -s 参数
转载于:https://www.cnblogs.com/NaughtyBaby/p/9719183.html
样本打散后计算单特征 NDCG相关推荐
- TensorFlow训练单特征和多特征的线性回归
线性回归 线性回归是很常见的一种回归,线性回归可以用来预测或者分类,主要解决线性问题.相关知识可看"相关阅读". 主要思想 在TensorFlow中进行线性回归处理重点是将样本和样 ...
- TensorFlow 训练单特征和多特征的线性回归
线性回归 线性回归是很常见的一种回归,线性回归可以用来预测或者分类,主要解决线性问题.相关知识可看"相关阅读". 主要思想 在TensorFlow中进行线性回归处理重点是将样本和样 ...
- ORB2单目读代码笔记5--利用灰度质心计算ORB特征点方向,实现旋转不变性
5.利用灰度质心计算ORB特征点方向,实现旋转不变性 ComputeKeyPointOctTree 跳转 computeOrientation computeOrientation 跳转 IC_Ang ...
- [时间序列预测]基于BP、LSTM、CNN-LSTM神经网络算法的单特征用电负荷预测[保姆级手把手教学]
系列文章目录 深度学习原理-----线性回归+梯度下降法 深度学习原理-----逻辑回归算法 深度学习原理-----全连接神经网络 深度学习原理-----卷积神经网络 深度学习原理-----循环神经网 ...
- Spark 和 Python.sklearn:使用随机森林计算 feature_importance 特征重要性
前言 在使用GBDT.RF.Xgboost等树类模型建模时,往往可以通过feature_importance 来返回特征重要性,本文以随机森林为例介绍其原理与实现.[ 链接:机器学习的特征重要性究竟是 ...
- 腾讯广告算法大赛2020-广告产品种类单特征-入门级
文章目录 1.比赛背景 1.1 题目: 1.2 大赛简介 1.3 赛题描述 1.4 数据说明 1.4.1 数据集 1.4.2 数据特征说明 1.5 提交方式 1.6 评估方式 2.数据集处理 2.1导 ...
- 卷积计算,反卷积计算,特征图大小计算,空洞卷积计算
感受野大小计算.卷积参数量与计算量.空洞卷积计算量与参数量 卷积计算,反卷积计算,特征图大小计算,空洞卷积计算 转自:https://www.jianshu.com/p/09ea4df7a788?ut ...
- 降维后的高维特征的参数_高维超参数调整简介
降维后的高维特征的参数 by Thalles Silva 由Thalles Silva 高维超参数调整简介 (An introduction to high-dimensional hyper-par ...
- 对比学习效果差?谷歌提出弱语义负样本,有效学习高级特征!
文 | jxyxiangyu 编 | 小轶 对比学习是 2021 年几大研究热点之一了.如果说预训练模型解决了机器学习对大规模标注数据的需求问题,那么,对比学习可以说是将无监督/自监督学习推广到更一般 ...
- python划分训练集和测试集_杨涛的Python机器学习3:单特征与多特征、训练集与测试集,杨桃...
本人CSDN博客专栏:https://blog.csdn.net/yty_7 Github地址:https://github.com/yot777/ 单特征与多特征 在上一节标签和特征的示例中,我们使 ...
最新文章
- 超燃!Apache Flink 全球顶级盛会强势来袭
- 【转载】Linux常用命令1
- 宽依赖和窄依赖_Spark术语解释及宽窄依赖执行原理,代码分析
- mysql权限表_MySQL 数据库赋予用户权限操作表
- 小程序 自定义遮照 mask 禁止上下滑动
- java map扩容机制_java中ConcurrentHashMap的扩容机制是怎样的?详细解析
- Android使用Application的好处
- android androidruntime java,java – Runtime.exec():在Android中重启?
- Linux上安装ZooKeeper并设置开机启动(CentOS7+ZooKeeper3.4.10)
- 使用Python迭代字符串中的每个字符
- 使用 rem 设置文字大小(文字响应式)
- 全国地区对应身份证号码值关系--身份证号前2位
- 菜鸟学院~沉寂近30年后火了!存内计算如何打破AI算力瓶颈?
- 数仓4.0(三)------数据仓库系统
- DS18B20读取温度
- eclipse导入jdbc教程(简洁)
- 苹果手机圆圈在哪里设置_不知道苹果手机录音在哪里?那你就落伍了
- Python函数习题
- OneDrive操作指南
- SOLIDWORKS强劲剪裁有哪些黑技能?
热门文章
- 【渝粤教育】国家开放大学2018年春季 8665-21T护理伦理学 参考试题
- 【渝粤教育】国家开放大学2018年春季 0104-21T酒店安全管理 参考试题
- 【RLchina第四讲】Model-Based Reinforcement Learning
- 约束最优化方法 (一) 最优性条件
- 第三次作业 词频统计
- moonlight不显示鼠标指针
- 「CodePlus 2017 11 月赛」Yazid 的新生舞会(树状数组/线段树)
- OC typedef(起别名)
- [转]引用 VC 对话框设置位图背景并透明控件
- Luogu P3223 [HNOI2012]排队 组合