炼丹知识点:模型评估里的陷阱
在实践中,做推荐系统的很多朋友思考的问题是如何对数据进行挖掘,大多数论文致力于开发机器学习模型来更好地拟合用户行为数据。然而,用户行为数据是观察性的,而不是实验性的。这里面带来了非常多的偏差,典型的有:选择偏差、位置偏差、曝光偏差和流行度偏差等。如果不考虑固有的偏差,盲目地对数据进行拟合,会导致很多严重的问题,如线下评价与在线指标的不一致,损害用户对推荐服务的满意度和信任度等。
在《流量为王:ABTest流量分层分桶机制》一文中,我们介绍了什么是A/B Test和怎么做A/B测试,本文介绍线下模型评估的几种方法。
在交叉校验方法里,又有两种验证形式,一种是K-Flod交叉验证,另一种是留一验证。
K-Flod交叉验证
- 首先,将全部样本划分为大小相等的K份;
- 然后,依次遍历K个子集,将第i个子集作为验证集,其他子集作为训练和评估;
- 最后,将k次评估的结果的平均值作为最终评估结果。
留一验证
每次留下1个样本作为验证集,N个数据,验证时产生N个模型。最后计算N个模型评估的平均值作为最终评估结果。
从上述描述中我们能看到,留一验证法的时间开销极大,真实场景使用较少。
没错,Holdout检验就是最简单的最直接的验证方法,比如我们在做排序模型时,我们把样本按照80%和20%的比例分成两部分,80%样本用作模型训练,20%样本用作验证。
这种方法简单,但是缺点也很明显,即随机得到的20%得到的评估结果也具有一定的随机性。
自助法对于总数为N的样本,进行n次又放回的随机抽样,n次采样有的样本重复,有的从未被抽中过,最后将没有被抽中的部分作为验证集。验证集的评估指标作为最终的评估指标。
这时候,你可能会问,没抽中的样本有多少呢?根据n次抽样均未被抽中的概率为(1-1/n)的n次方,根据重要极限定理解之,当样本足够多的时候,大约有36.8%的样本未被抽中过。
目前业界应用最多的,是可重叠分层分桶方法。具体来说,就是将流量分成可重叠的多个层或桶。因为很多类实验从修改的实验参数到观察的产品指标都是不相关的,完全可以将实验分成互相独立的多个层。例如推荐算法召回层、推荐算法排序层、打散层,或者首页、业务页、详情页等。
流量分桶原理
采用如下步骤将流量分配到具体模型上面去:
- 把所有流量分成N个桶。
- 每个具体的流量Hash到某个桶里面去。
- 给每个模型一定的配额,也就是每个策略模型占据对应比例的流量桶。
- 所有策略模型流量配额总和为100%。
- 当流量和模型落到同一个桶的时候,该模型拥有该流量。
举个栗子来说,所有流量分为32个桶,A、B、C三个模型分别拥有37.5%、25%和37.5%的配额。对应的,A、B、C应该占据12、8和12个桶。为了确保模型和流量的正交性,模型和流量的Hash Key采用不同的前缀。
首先,线下评估无法消除模型过拟合历史数据的问题。
其次,线下评估没法模拟线上真实环境,包括但不限于数据丢失、特征延迟等问题。
而且,线下评估没法真实的再现线上类似 用户点击率、用户完播率、用户停留时长等指标。因为这些指标只有真实发生时,才是真实的数据。
最后,从系统偏差角度,我们在《推荐系统Bias大全》一文中介绍了,由于用户交互的数据是观察性的,而不是实验性的,因此很容易在数据中引入偏差。它们通常来自不同的数据分组,并使推荐模型捕捉到这些偏差,甚至对其进行缩放,从而导致系统性种族主义和次优决策。本文将数据偏差分为四类:外显反馈中的选择偏差和从众偏差,内隐反馈中的暴露偏差和位置偏差。
现实世界中的推荐系统通常会产生一个有害的反馈回路。前面的小节总结了在循环的不同阶段发生的偏差,随着时间的推移,这些偏差可能会进一步加剧。以位置偏差为例,排名靠前的项目通常会从更大的流量中受益,这反过来又会增加排名的显著性和它们所接收的流量,从而形成一个“富起来越富”的情景。许多研究者还研究了反馈回路对流行偏差的影响。他们的模拟结果显示,反馈回路会放大流行偏差,流行的商品变得更加流行,而非流行的商品变得更不受欢迎。这些放大的偏差也会降低用户的多样性,加剧用户的同质化,从而产生所谓的 “echo chambers”或“filter bubbles”。
炼丹知识点:模型评估里的陷阱相关推荐
- python模型评估_模型评估知识点总结及Python实现
目录 1.概述 2.分类评估--混淆矩阵 3.分类评估--ROC.AUC.提升图与KS图 4.回归评估 5.非监督评估 正文 1.概述 数据集输入到一个模型中,然后再进行输出,我们可以得到模型的输出结 ...
- 机器学习实战:模型评估和优化
原文: Real-World Machine Learning: Model Evaluation and Optimization 作者:Henrik Brink, Joseph W. Richar ...
- kaggle实战—泰坦尼克(五、模型搭建-模型评估)
kaggle实战-泰坦尼克(一.数据分析) kaggle实战-泰坦尼克(二.数据清洗及特征处理) kaggle实战-泰坦尼克(三.数据重构) kaggle实战-泰坦尼克(四.数据可视化) kaggle ...
- 你真的了解分类模型评估指标都有哪些吗?【附Python代码实现】
大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 必看前言 ...
- 数据挖掘:模型评估指标
数据挖掘:模型评估 一般在比赛中,我们会看到对于回归(分类)问题,不同的比赛会有不同的评价指标.我们在训练模型时,不能只记住回归问题用均方误差,而不去在意比赛目标的评价指标,这样我们往往会得到比较差的 ...
- 机器学习总结之第二章模型评估与选择
[第2章 模型评估与选择] [一.知识点归纳] 一.经验误差与过拟合 [分类]:对是离散值的结果进行预测. [回归]:对是连续值的结果进行预测. 分类和回归属于监督学习. [错误率]:分类错误的样本数 ...
- 机器学习模型评估指标总结!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:太子长琴,Datawhale优秀学习者 本文对机器学习模型评估指标 ...
- 第六课.模型评估与模型选择
目录 导语 模型评估 回归任务的评估指标 分类任务的评估指标 过拟合现象 过拟合的原因 过拟合解决办法 模型选择与调整超参数 正则化 留出法 交叉验证 网格搜索 实验:线性回归预测股票走势 实验说明 ...
- 【机器学习基础】非常详细!机器学习模型评估指标总结!
作者:太子长琴,Datawhale优秀学习者 本文对机器学习模型评估指标进行了完整总结.机器学习的数据集一般被划分为训练集和测试集,训练集用于训练模型,测试集则用于评估模型.针对不同的机器学习问题(分 ...
最新文章
- Hierarchical Cluster 层次聚类
- 小程序分享朋友圈_改造小程序,增加分享朋友圈代码
- 8.基本数据结构-顺序表和链表
- 在Ubuntu上安装RealPlayer的方法
- CF1472(div3):总结
- 2.深度学习练习:Logistic Regression with a Neural Network mindset
- 电脑编程就业找哪方面
- IT黑马成长之CSDN第一篇博客
- 删除字符串中多余的空格 美团校园招聘模拟测试题
- 南昌大学计算机考研2021,2021南昌大学考研参考书目
- Slf4j之MDC机制
- 第三章:可行性研究及需求分析
- 今日头条阅读量怎么刷_怎么刷今日头条阅读量?
- 【Fourier变换】傅里叶变换的性质与常用变换对(附注意事项)
- 陌生人社交的一路羁绊——垃圾用户
- (自适应手机端)响应式勘察设计院蓝色网站pbootcms模板 政府单位商会协会网站源码下载
- 世界地图可以无限放大_尼康显微镜CFI60无限远光学系统的结构图
- 太原城市职业技术学院引入USB Server助力实训系统实现虚拟化
- Window XP 命令提示
- gitee文件上传方法
热门文章
- Getting Installation aborted (Status 7) ApplyParsePerms: lsetfilecon of /syst...【转】
- ORB-SLAM(四)追踪
- 虚函数和抽象函数的区别
- Linux下批量添加用户的两种方法
- ORB-SLAM学习--GitHub上较好的版本
- 国外在线学习网站+慕课平台
- MFC中Radio Button使用方法
- static_cast、dynamic_cast、const_cast和reinterpret_cast总结
- 网页编程从入门到精通 杨凡_学习计划丨西门子S7200编程从入门到精通
- swiper 上滑触发_四种方式快速实现上滑触底加载效果