深度学习推荐系统实战
王喆
Roku 推荐系统架构负责人,前 hulu 高级研究员,《深度学习推荐系统》作者
33298 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 44 讲
深度学习推荐系统实战
15
15
1.0x
00:00/00:00
登录|注册

24 | 离线评估:常用的推荐系统离线评估方法有哪些?

离线Replay
时间切割
自助法
交叉检验
Holdout检验
下节课预告
各种评估方法的优缺点
时间切割
交叉检验
Holdout检验
缺点
优点
基本原理
划分方法
未来信息
基本原理
缺点
优点
基本原理
关键参数
优点
基本原理
缺点
优点
基本原理
基于Spark的离线评估方法实践
离线评估的主要方法
课后思考
小结
基于Spark的离线评估方法实践
离线Replay
时间切割
自助法
交叉检验
Holdout检验
常用的推荐系统离线评估方法有哪些?

该思维导图由 AI 生成,仅供参考

你好,我是王喆。今天我们要进入一个全新的章节,模型评估篇。
在推荐系统这个行业,所有人都在谈效果。就像我们在学习推荐模型篇的时候,你肯定也有过这样的疑问:
DIEN 这个模型的效果到底怎么样啊?
我们用深度学习来构建模型到底能让推荐系统效果提高多少啊?
DeepFM 的效果是不是会比 Wide&Deep 好呢?
那这个所谓的“效果”到底指的是什么呢?我们一般用什么方法来衡量这个“效果”呢?我们又应该如何根据效果评估的结果来更新模型呢?这就是模型评估篇要解决的问题。
在所有推荐系统的评估方法中,离线评估是最常用、最基本的。顾名思义,“离线评估”就是我们将模型部署于线上环境之前,在离线环境下进行的评估。由于不用部署到生产环境,“离线评估”没有线上部署的工程风险,也不会浪费宝贵的线上流量资源,而且具有测试时间短,可多组并行,以及能够利用丰富的线下计算资源等诸多优点。
因此,在模型上线之前,进行大量的离线评估是验证模型效果最高效的手段。这节课,我们就来讲讲离线评估的主要方法,以及怎么在 Spark 平台上实现离线评估。

离线评估的主要方法

离线评估的基本原理是在离线环境下,将数据集分为“训练集”和“测试集”两部分,“训练集”用来训练模型,“测试集”用于评估模型。但是如何划分测试集和训练集,其实这里面有很多学问。我总结了一下,常用的离线评估方法主要有五种,分别是:Holdout 检验、交叉检验、自助法、时间切割、离线 Replay。接下来,我们一一来看。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了推荐系统离线评估方法的重要性,并详细介绍了常用的离线评估方法,包括Holdout检验、交叉检验、自助法、时间切割和离线Replay。Holdout检验通过随机划分训练集和测试集进行评估,交叉检验通过多次训练和评估取平均值来减少随机性,自助法通过自助采样解决样本规模较小时训练集减小的问题,时间切割法避免引入“未来信息”,离线Replay方法则仿真线上更新过程。文章还介绍了如何使用Spark实现这些评估方法,为读者提供了全面的了解和选择依据。总之,各种评估方法都有优劣,读者需要根据实际情况选择合适的评估方法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深度学习推荐系统实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(10)

  • 最新
  • 精选
  • 张弛 Conor
    思考题:离线Replay和RL都是动态更新模型的,都需要不断的测试和再训练模型。增强学习(如DRN)是通过不断接受反馈,在线更新模型的,所以评估方法不能引入未来信息,而简单的时间切割评估方法又不能模拟模型的更新频率,所以离线Replay是增强学习的唯一离线评估方法。

    作者回复: 我的天,说的太好了,我本来以为这是一道比较难的思考题。基本就是我想要的答案,给你点赞。

    2020-12-07
    3
    97
  • Geek_033ad5
    老师,在交叉检验的例子中,因为是使用的spark,那模型也必须是用spark实现的模型吧?那如果是tf实现的模型,该怎么做交叉检验呢?感谢!

    作者回复: 是的,示例代码中是spark的交叉验证代码,并不支持tf模型。 如果确实需要的话,需要根据交叉验证的思想自己实现。

    2021-01-10
    4
  • KongTzeSing
    老师,我想问问,如果模型用early_stop来调整训练轮数,需要单独拿1天数据当验证集吗,然后测试集是验证集后一天的数据。就是想问上线之后每天跑是否也需要有“验证集”的概念?

    作者回复: 没有绝对,但early stop最好是有验证集,通过验证集来确定训练收敛的轮数,上线之后我一般会确定训练轮数来避免一些不可控的问题。

    2020-12-11
    2
    3
  • 浩浩
    可以用来离线模拟和评估强化学习的在线过程

    作者回复: 是这样

    2020-12-21
    2
  • 浣熊当家
    如果通过划分userID来划分训练集和测试集,是不是也可以避免引入未来信息呢?

    作者回复: 可以是可以,但效果会非常糟。你想想效果为什么会非常糟。

    2020-12-08
    7
    2
  • 那时刻
    文中提到自助法在 n 次采样之后,将这些没有被抽出的样本作为验证集进行模型验证。如果n次采样之后导致没有被抽出的样本比较多,从而导致验证集比较大,这种情况下,需要抛弃这次采样么? 另外,请问老师一个样本数据有偏斜的问题。比如正例样本有10000例,而反例样本之后100例,采用什么方法对模型进行评估呢?

    作者回复: 1、一般不建议这样做,需要n的规模比较大,进行充分的采样。 2、关注下一节课,选取AUC等合适的评估指标。

    2020-12-07
    2
  • Peter
    老师,有个最近遇到的一个疑问,就是我有30天的数据,我的模型(非rl模型),我现在模型使用数据(时间分割法)是前五天做训练,后一天做测试,以六天为一个窗口进行滑动。但是看到动态replay,想问对于非RL的模型(NLP模型),动态replay评估是否有必要? 如果采用动态replay那是否需要有一个时间上限? 比例前15天训练,随后的15天进行replay,一旦完成就完成评估,还是得不断延迟时间观察平均的性能? 不知道描述清楚没有。。。

    作者回复: replay是要仿真你线上的模型更新环境和过程。只要你的模型在生产环境下要更新,就应该使用replay的方法,和RL没有关系。 第二个问题也和你的生产环境相关,采用一样的训练和更新频率就好

    2021-07-15
    1
  • 浣熊当家
    老师我突然想不清楚了,模型训练中,我们的输入是各种用户 ,产品,场景的特征,然后输出是什么来着? 比如说其中一条sample的输入特征会是某个用户A在时间点t (-5) 到 t(0) 的观影序列, t(0) 的 场景特征, t(-5)到 t(0) 时刻的 产品特征, 然后要预测的是t(1) 时刻, 用户A点击(或者评论)的 物品ID这样吗? 这个物品ID也是个embedding向量吗?

    作者回复: 训练的输出是预测这个样本的标签,也就是0或者1。 最终模型的输出是预测的概率,也就是预测这个样本标签为1的概率。

    2020-12-08
    3
    1
  • Geek_3c29c3
    老师,书中8.4节有淘宝数据集和亚马逊数据集的AUC对比,请问这些数据源和模型baseline可以在哪里获得啊?

    作者回复: 书中的对比是原paper中的数据,是别人公司的内部数据。 能不能获得要看别人开不开放数据集和源代码。

    2020-12-07
    1
  • Geek_13197e
    请教老师,像传统的FM等模型,输出的数据是Tabular形式的数据,因此这些评估方法都是合理的。但对于DIN这种序列模型,一个正样本对应一个负样本,然后预测Next Item来计算AUC,是不是不用考虑时间切割的问题了。
    2023-01-16归属地:福建
收起评论
显示
设置
留言
10
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部