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

模型实战准备(二) | 模型特征、训练样本的处理

评分的时间戳
用户好评电影ID
用户最喜欢的电影风格
用户好评电影的发布年份标准差
用户好评电影的发布年份均值
用户评分标准差
用户平均评分
用户评分总数
userId
genre
releaseYear
title
movieId
点击、观看、购买等隐性反馈数据
评分数据
模型自动判断特征的有效性
Spark中的agg聚合操作
Spark中的groupBy操作
场景特征
用户特征
电影特征
存储物品特征
存储用户特征
hset操作
使用window函数
样本标签
物品特征生成
用户特征生成
特征选择
统计型特征处理方法
特征提取
Redis
避免引入未来信息
样本生成
特征工程
特征数据存储
训练样本处理
模型特征
模型实战准备

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

你好,我是王喆,欢迎来到模型实战准备第二课。
这节课,我们来讲实战中所需的模型特征和训练样本的处理。为什么我们要专门花一节课的时间讲这些呢?因为在推荐模型篇中,我们的重点在于学习模型结构的原理和实现,而要实现并且训练这些模型,我们就必须先解决训练所需的样本和特征的处理问题。
这节课我们先来把模型实战的准备工作做完。具体来说,今天,我会带你用 Spark 来处理深度学习模型训练所需的样本和特征,再把特征存储到 Redis 中,供模型线上服务时调用。

为什么选择 Spark 为 TensorFlow 处理特征和样本?

这个时候,你可能会有疑问,我们的深度学习模型将在 TensorFlow 上进行训练,为什么要用 Spark 处理样本?可不可以直接让 TensorFlow 解决所有的事情呢?这是一个好问题,在我们学习具体的技术之前,先解决这个架构上的疑问是很有必要的。
在业界的实践中,我们需要记住一个原则,就是让合适的平台做合适的事情。比如说,数据处理是 Spark 的专长,流处理是 Flink 的专长,构建和训练模型是 TensorFlow 的专长。在使用这些平台的时候,我们最好能够用其所长,避其所短。这也是一个业界应用拥有那么多个模块、平台的原因。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了使用Spark处理深度学习模型训练所需的样本和特征,并将特征存储到Redis中供模型线上服务调用的过程。文章强调了选择合适的平台进行合适的处理,详细介绍了从MovieLens数据集中提取物品特征、用户特征和场景特征的方法,并分享了经验。作者强调了模型自己去判断特征的有效性,并提供了生成模型所需训练样本的方法。此外,文章还讨论了避免引入未来信息的问题,并介绍了使用Spark中的window函数滑动生成历史行为相关特征的方法。最后,对特征数据存入线上供模型服务使用的问题进行了讨论,详细介绍了将特征存储到Redis的操作。整体而言,本文以实战的角度,深入浅出地介绍了模型特征、训练样本的处理方法,为读者提供了实用的技术指导。

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

全部留言(18)

  • 最新
  • 精选
  • onepencil
    线上会组装当前访问时的历史序列及历史平均值等,可以利用flink实时落盘这些线上特征,这样线下就不用再离线生成,也就杜绝了特征穿越问题

    作者回复: 赞,这是业界的解决方法之一,存储特征的snapshot。

    2020-11-16
    3
    53
  • Sebastian
    老师好,想问下使用hset把用户和物品的特征存入redis的场景下,如果用户上亿物品也上亿的话,存入redis会使用很大的资源。实际场景下并不是所有用户都是活跃用户,很多情况下可能用不上。那是否是在redis只存入活跃用户的特征呢?但是如果这样解决,遇到非活跃用户是否就没有特征值了? 从您的实践经验里有什么好的方法吗?

    作者回复: 我在存储模块那节课说过,SparrowRecsys项目确实对存储模块进行了一定程度的简化,实际应用中还是要多考虑分级存储,redis实际上当作一个缓存层来使用。 关于大量数据key value数据的存储和线上查找,可以多调研rocksdb,cassandra,dynamodb和mongodb。

    2020-11-16
    2
    11
  • 那时刻
    把评分大于等于 3.5 分的样本标签标识为 1,意为“喜欢”,评分小于 3.5 分的样本标签标识为 0,意为“不喜欢”。这样可以完全把推荐问题转换为 CTR 预估问题。请问老师,3.5分这个值是怎么来的呢? 另外一个问题,我们把评分时间戳作为代表时间场景的特征放到特征工程中。请问把时间戳用于特征工程,有木有需要注意的地方?比如是否是周末,假日等?老师在实际应用中有哪些实践么?

    作者回复: 两个问题都很好,希望大家都有这样实践中的思考。 第一个问题。基本原则是我在分析完分数的总体分布后得出的,3.5分基本是正负样本比例1:1的分界线,另外大于3.5分也符合我们直观意义上的高分,所以认为3.5分是比较合理的。 第二个问题。确实像你说的这样,我们实践中经常从时间戳中提取出周末,假日,季节这些特征,因为这些时间特征往往影响着数据的一些潜在模式,所以还是非常有价值的。

    2020-11-17
    4
    9
  • AI
    老师好,为什么用户id和电影id要作为特征进行输入,我的理解是id不是相当于一个索引吗?

    作者回复: 用户id和电影id都是非常重要的特征,因为他们之间的关系包含了用户的历史行为信息,其中又隐含了非常多的用户的兴趣偏好。

    2021-03-01
    2
    8
  • ZLZ
    王老师,请问我在训练CTR模型过程中,有两种训练样本处理方式,第一种是使用T-1天的数据进行shuffle,其中80%作为train dataset,20%作为训练过程中的val dataset,即使用T-1天的数据进行模型训练,针对T天的数据进行线上预测;第二种方式是使用T-2天的数据作为train dataset,T-1天的数据作为val dataset,即2使用T-2天的数据进行模型训练,针对第T天的数据进行线上预测;我理解第一种方式是不是容易造成信息穿越,例如在某一天有某个活动,但是第二天没有这个活动,那模型在第二天会效果不好,但是第二种方式线上是采用T-2天的模型,相比于第一种方式(线上使用的是第T-1的模型),是不是效果会打折扣

    作者回复: 是这样,第一种方式是不建议采用的。第二种我建议缩短数据分割的粒度,比如改成T-1小时

    2021-05-18
    4
    7
  • 萬里長空
    老师,问一个spark-udf的问题,看官网上定义udf的时候要使用register,但是您这里并没有使用,是sql与DataFrame的区别吗?

    作者回复: 是的,是spark sql和直接操作dataframe的区别。直接操作dataframe不用register

    2020-11-20
    6
  • 倪钰鑫
    老师好,我想问下用户行为的时间序列,最一开始的那个用户行为的历史数据我们都是置0吗?比如您上面所说的“userAvgRating”,在B上是填A的打分3,那么在A上呢?因为这里收集到的信息A是最前面的,那此时就是置为0吗?还是说可以选一个全局中值填进去呢?

    作者回复: 这是个好问题,涉及到默认值选取的问题。常规做法是把全局的均值填进去,但其实没有什么统一的最好的方法。

    2021-01-23
    2
    5
  • abc-web
    王老师,想问一下,如果标签或其他属性是中文内容需要进行特征处理还是直接进行word2vec?谢谢!

    作者回复: 先分词再word2vec

    2021-01-24
    3
  • //add rating features val movieRatingFeatures = samplesWithMovies3.groupBy(col("movieId")) .agg(count(lit(1)).as("movieRatingCount"), format_number(avg(col("rating")), NUMBER_PRECISION).as("movieAvgRating"), stddev(col("rating")).as("movieRatingStddev")) .na.fill(0).withColumn("movieRatingStddev",format_number(col("movieRatingStddev"), NUMBER_PRECISION)) 老师,特征处理中电影的打分特征应该也是要做window处理吧,谢谢~

    作者回复: 是这样,最好要进行window处理。可以自行修改提交PR

    2021-01-26
    2
  • Jay
    刚入坑,好像一直没有看到关于特征组合的内容,这个点一直没有理解清楚,啥时候会讲讲呢?

    作者回复: 组合特征当然可以通过人工组合的手段进行组合,这点我们仍然可以沿用之前传统机器学习的经验。 对于深度学习模型来说,也可以交由模型的内部结构来组合,这一点后面关于模型的讲解还会涉及到。

    2020-11-18
    2
    2
收起评论
显示
设置
留言
18
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部