14 | 融会贯通:Sparrow RecSys中的电影相似推荐功能是如何实现的?
14 | 融会贯通:Sparrow RecSys中的电影相似推荐功能是如何实现的?
讲述:王喆
时长15:15大小13.93M
“清点技能库”,看看我们已有的知识储备有哪些
如何实现相似电影推荐功能?
1. 数据和模型部分
2. 线上服务部分
3. 前端部分
相似电影推荐的结果和初步分析
小结
课后思考
赞 21
提建议
精选留言(16)
- 金鹏2020-11-05在小视频行业,基于CTR或播放量的商业逻辑进行推荐策略的调整,在实际过程中往往会变成大量推荐低俗、擦边内容,短期各个指标会上涨,但从长远来看,其实是损害了整个商业收益。所以在短视频一般会以播放时长ts做为商业指标。
作者回复: 非常好的insight。CTR对一些标题党、低俗预览图之类的确实有偏好。也可以在正样本的定义上下功夫,把真正播放超过一定时长的作为正样本,算是可以在CTR模型的框架上继续做改进。
共 3 条评论31 - InfoQ_ea311a6b3a822020-11-04计算相似度的时候考虑电影的内容信息,如利用描述等生成内容Embedding,和之前训练得到的Embedding连接起来,再进行相似度的计算。
作者回复: 非常好的解决方案。
19 - 那时刻2020-11-04我觉得除了热门电影头部推荐之外,还有用户对电影的评论,以及用户观影行为,比如很多人看电影是把热门电影轮流看一遍。
作者回复: 是这样,这导致热门电影的个性化程度不高。所以一般使用tfidf等方法给训练样本一个权重之类的方法来降低热门电影的影响。
16 - 浣熊当家2020-11-07对于最后的问题的改进,之前老师讲Node2Vec的时候,提到了BFS倾向于结构性, DFS倾向于同质性,所以为了减轻热门电影的扎堆推荐,可以调整随意游走的概率,让他更倾向于同质性(DFS)吗?因为热门影片可能处于节点的中心位置这样的结构性, 然后同一种的影片(比如动画片,惊悚片,。。)属于同质性。 不知道我又没有理解对
作者回复: 非常好的思路。像node2vec一样,更改热门影片的随机游走权重是一个可行的解决方法。如果有实践结果的话也欢迎进一步跟大家分享!
共 4 条评论15 - 浣熊当家2020-11-07对于玩具总动员那个例子,老师提到推荐结果类别不够精准, 不过我的想法是,对于一个物品的分类,有很多种方面,虽然我们的模型在电影类别方面不够精准, 但是他却反映了另一个方面,就是热门(或者经典)。这也是个很好的共性,比如有些人的兴趣就是看热门影片。 只要在最后在排序的时候,过滤掉用户已经看过,和推荐过n次依然没有看的(说明不感兴趣),这样的推荐应该很make sense。 就想2老师最后说的,评价系统好不好的终极标准是观看时间和点击率,而且我的直觉感觉推荐热门电影的点击率就会比其他的高。 所以我有个最后的问题,我们主管的测评评价电影的相似度的时候,往往由于思维局限,会忽略某些事物本质的关联,对模型尽量少的人工干预,会不会更科学展开
作者回复: 你说的非常好,这也是我说的有时候要交给AB测试去决定是不是一个好的模型,而不要交给人的直觉。毕竟我们的spot check只是解决一些非常明显的错误,不能够保证效果一定好。
共 2 条评论14 - Alan2021-03-08答:热门电影的头部效应造成的,有一定影响因素!但我们要分析为何它们这些电影会成为热门呢?热门特性,可以大概的猜测几点:经典、新颖、价值高、文化核心、受众用户群、时间效应等等。所以就像老师召回层的多路召回策略又会衍生出几个问题:1、如何调整热门推荐与个性化推荐权重。2、随着时间效应消失,热门度对个体对用户群又是怎么影响的,又如何实现精准的推荐呢?3、推荐系统针对个人与用户群场景如何切换? 大致上可以 Embedding 方法上的改进建议:1、Attention机制的Embedding算法 2、类别标签TF-CR权重计算等 。 最后,具体问题具体分析,请结合业务改进推荐系统,又如其他同学提及的短视频推荐:停留时间、点击率、点赞数、点击转化率等作为热门评估指标。展开
作者回复: 非常赞同你的分析和改进思路,推荐其他同学参考。
10 - Wiiki2020-11-05王老师,请教一下关于Embedding的问题。如果我有这样的一个需求,需要融合时序,位置空间,还有内容等信息到一个Embedding,通常针对这种情况都是怎么生成Embedding的?是不是说Embedding的出现,代表着传统手动,凭经验生成特征的方式已经没有应用场景了?谢谢~
作者回复: 感觉位置空间这种类似context特征的不太好整合,Embedding可以整合物品侧或者用户侧的全部特征。具体的整合方法还是推荐参考阿里的EGES。算是一个比较经典的案例了。
7 - JustDoDT2020-11-04在推荐最终展示前在加一层简单的规则过滤,例如利用电影类别把非儿童的电影剔除掉。
作者回复: 其实是很好的重排层的策略性方法,没问题。
6 - คิดถึง2021-08-26老师好,如果我想更换MovieLens 20M Dataset数据集的话,重新训练的具体步骤大概是什么?
作者回复: 直接替换项目中的相应数据集就可以了
2 - MutouMan2021-05-08可能也和电影的受众有关,当年皮克斯推出玩具总动员时,其中一个宣传策略就是成年人也可以看的动画片。所以玩具总动员和真实的谎言对成年人的吸引力可以认为是相似的。另一点动画片我们常常认为是儿童看的多,但是儿童看的多也不代表他们回去评价。更多的评价还是来自爸爸妈妈们。为了改进embedding,我觉得:1. 可以加入电影类型、风格等side information,让模型也考虑电影风格的影响;2. 是不是也可以加入时间戳,我看了100部电影,很大可能前十部和最后十部电影完全不同。或者采样的时候,随机游走的时候,边的权重可以相应调整。展开
作者回复: 说的很好,所以有的时候潜在的数据pattern我们不一定都能解释的了,但是模型能够学到这些pattern
2 - lyx2021-10-09老师你好,请问如果在召回的时候就采用了embedding计算相似度的策略,然后在排序的时候又用embedding之前的cosine相似度,这感觉没差呀?就相当于直接用embedding相似度选topN了。
作者回复: 这个场景下召回层和排序层没有区别,不用过多拘泥于细节,理解原理为主
1 - c2021-04-17王老师你好,有个问题,线上服务建立候选集的时候,文章里面提到利用sql等方式进行查询,这样的话对于大量物品会不会有耗时问题,真实环境一般是怎么处理的,能稍微说一下吗?
作者回复: 基于传统数据库的sql方式当然是比较老式的方式。一般来说会建立一个candidate retrieval api来处理这个事情,这个api内部可以通过预处理,内存数据库,提前load等不同的方式来把candidate提前处理好。
1 - 哇哈哈2022-09-18 来自上海请问老师在召回层和排序层都用了embedding,两处使用embedding的差异是什么呢
- lyx2021-10-09看源码,ranker中似乎采用的是embedding的余弦相似度而不是这里说的內积相似度呢?
作者回复: 是这样,可以尝试改成内积相似度后的效果
- Geek_seven2021-08-14请问老师,在这个“相似电影推荐”例子中,有“召回层”吗?排序阶段:是在redis中存储的所有的embedding vector,利用类似lsh进行向量检索。这相当于对所有候选物品进行检索,也就不存在召回的概念吧?谢谢~
- Sebastian2020-11-06老师好,推荐服务上线后,对于用户badcase发现和处理的有没有什么典型流程,以及如何用于完整模型
作者回复: 这个必须具体模型具体分析。大家的业务场景,模型要素变量太多,这个问题上没有银弹。