在实践中,做推荐系统的很多朋友思考的问题是如何对数据进行挖掘,大多数论文致力于开发机器学习模型来更好地拟合用户行为数据。然而,用户行为数据是观察性的,而不是实验性的。这里面带来了非常多的偏差,典型的有:选择偏差、位置偏差、曝光偏差和流行度偏差等。如果不考虑固有的偏差,盲目地对数据进行拟合,会导致很多严重的问题,如线下评价与在线指标的不一致,损害用户对推荐服务的满意度和信任度等。

在《流量为王: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”。

炼丹知识点:模型评估里的陷阱相关推荐

  1. python模型评估_模型评估知识点总结及Python实现

    目录 1.概述 2.分类评估--混淆矩阵 3.分类评估--ROC.AUC.提升图与KS图 4.回归评估 5.非监督评估 正文 1.概述 数据集输入到一个模型中,然后再进行输出,我们可以得到模型的输出结 ...

  2. 机器学习实战:模型评估和优化

    原文: Real-World Machine Learning: Model Evaluation and Optimization 作者:Henrik Brink, Joseph W. Richar ...

  3. kaggle实战—泰坦尼克(五、模型搭建-模型评估)

    kaggle实战-泰坦尼克(一.数据分析) kaggle实战-泰坦尼克(二.数据清洗及特征处理) kaggle实战-泰坦尼克(三.数据重构) kaggle实战-泰坦尼克(四.数据可视化) kaggle ...

  4. 你真的了解分类模型评估指标都有哪些吗?【附Python代码实现】

    大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 必看前言 ...

  5. 数据挖掘:模型评估指标

    数据挖掘:模型评估 一般在比赛中,我们会看到对于回归(分类)问题,不同的比赛会有不同的评价指标.我们在训练模型时,不能只记住回归问题用均方误差,而不去在意比赛目标的评价指标,这样我们往往会得到比较差的 ...

  6. 机器学习总结之第二章模型评估与选择

    [第2章 模型评估与选择] [一.知识点归纳] 一.经验误差与过拟合 [分类]:对是离散值的结果进行预测. [回归]:对是连续值的结果进行预测. 分类和回归属于监督学习. [错误率]:分类错误的样本数 ...

  7. 机器学习模型评估指标总结!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:太子长琴,Datawhale优秀学习者 本文对机器学习模型评估指标 ...

  8. 第六课.模型评估与模型选择

    目录 导语 模型评估 回归任务的评估指标 分类任务的评估指标 过拟合现象 过拟合的原因 过拟合解决办法 模型选择与调整超参数 正则化 留出法 交叉验证 网格搜索 实验:线性回归预测股票走势 实验说明 ...

  9. 【机器学习基础】非常详细!机器学习模型评估指标总结!

    作者:太子长琴,Datawhale优秀学习者 本文对机器学习模型评估指标进行了完整总结.机器学习的数据集一般被划分为训练集和测试集,训练集用于训练模型,测试集则用于评估模型.针对不同的机器学习问题(分 ...

最新文章

  1. Hierarchical Cluster 层次聚类
  2. 小程序分享朋友圈_改造小程序,增加分享朋友圈代码
  3. 8.基本数据结构-顺序表和链表
  4. 在Ubuntu上安装RealPlayer的方法
  5. CF1472(div3):总结
  6. 2.深度学习练习:Logistic Regression with a Neural Network mindset
  7. 电脑编程就业找哪方面
  8. IT黑马成长之CSDN第一篇博客
  9. 删除字符串中多余的空格 美团校园招聘模拟测试题
  10. 南昌大学计算机考研2021,2021南昌大学考研参考书目
  11. Slf4j之MDC机制
  12. 第三章:可行性研究及需求分析
  13. 今日头条阅读量怎么刷_怎么刷今日头条阅读量?
  14. 【Fourier变换】傅里叶变换的性质与常用变换对(附注意事项)
  15. 陌生人社交的一路羁绊——垃圾用户
  16. (自适应手机端)响应式勘察设计院蓝色网站pbootcms模板 政府单位商会协会网站源码下载
  17. 世界地图可以无限放大_尼康显微镜CFI60无限远光学系统的结构图
  18. 太原城市职业技术学院引入USB Server助力实训系统实现虚拟化
  19. Window XP 命令提示
  20. gitee文件上传方法

热门文章

  1. Getting Installation aborted (Status 7) ApplyParsePerms: lsetfilecon of /syst...【转】
  2. ORB-SLAM(四)追踪
  3. 虚函数和抽象函数的区别
  4. Linux下批量添加用户的两种方法
  5. ORB-SLAM学习--GitHub上较好的版本
  6. 国外在线学习网站+慕课平台
  7. MFC中Radio Button使用方法
  8. static_cast、dynamic_cast、const_cast和reinterpret_cast总结
  9. 网页编程从入门到精通 杨凡_学习计划丨西门子S7200编程从入门到精通
  10. swiper 上滑触发_四种方式快速实现上滑触底加载效果