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

15 | 协同过滤:最经典的推荐模型,我们应该掌握什么?

课后思考
小结
矩阵分解算法
协同过滤算法
推荐模型

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

你好,我是王喆。今天我们要开启推荐模型篇的学习。
推荐模型篇是整个课程中最重要的一个模块,因为推荐模型直接决定了最终物品排序的结果,它的好坏也直接影响着推荐效果的优劣。而且,从某种意义上讲,推荐系统的整体架构都是围绕着推荐模型搭建的,用于支持推荐模型的上线、训练、评估、服务。因此,我一直把推荐模型称作“推荐系统这个皇冠上的明珠”
而提起推荐模型,我们就不能不提协同过滤算法。它可能是推荐系统自诞生以来最经典的算法,且没有之一。虽然我们课程的主题是“深度学习”推荐系统,但协同过滤以及它后续衍生出来的各类模型,都与深度学习推荐模型有着千丝万缕的联系。因此,在进入深度学习模型之前,掌握协同过滤及其衍生模型是非常有必要的。
今天,我就来给你讲讲经典协同过滤和它的衍生模型矩阵分解的原理,以及相关的 Spark 实现。

协同过滤算法的基本原理

我在特征工程篇曾经提到过:“用户行为数据是推荐系统最常用,也是最关键的数据。用户的潜在兴趣、用户对物品的评价好坏都反映在用户的行为历史中”
而协同过滤算法,就是一种完全依赖用户和物品之间行为关系的推荐算法。我们从它的名字“协同过滤”中,也可以窥探到它背后的原理,就是 “协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

推荐系统中的经典推荐模型协同过滤算法及其衍生模型是推荐系统中最重要的模块之一。协同过滤算法依赖用户和物品之间的行为关系进行推荐,通过共现矩阵和用户相似度计算来预测用户对物品的评价。文章介绍了协同过滤算法的基本原理,包括用户行为数据的重要性、共现矩阵的生成和用户相似度的计算方法。此外,还详细阐述了用户评分的预测过程,包括利用相似用户的加权平均值来预测目标用户的评价。矩阵分解算法是对协同过滤算法的改进,通过分解共现矩阵,生成用户向量矩阵和物品向量矩阵,进而得到用户隐向量和物品隐向量。这种算法的实现过程简单直观,通过梯度下降的方法进行共现矩阵的分解。文章还介绍了矩阵分解算法在Spark中的实现过程,以及对推荐系统的重要性和实际应用的思考。总的来说,本文深入浅出地解释了协同过滤算法及矩阵分解算法的原理和实现过程,对于推荐系统的学习具有重要的参考价值。

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

全部留言(29)

  • 最新
  • 精选
  • Geek_63ee39
    问题2: 可以采用余弦相似度可以消除这种影响,例如:用户甲习惯打高分,对A, B, C三个物品打分为[5, 2, 5];用户乙习惯打低分,对A, B, C打分为为[3, 1, 3],虽然这两个评分向量的欧式距离比较远,但它们的余弦相似度比较高,约等于0.96

    作者回复: 这个思路我之前还没想到,但感觉应该是work的,可以尝试。 经典的做法是在生成共现矩阵的时候对用户的评分进行用户级别的校正或者归一化,用当前得分减去用户平均得分作为共现矩阵里面的值。

    2020-11-08
    7
    57
  • Sebastian
    老师好,矩阵分解在工业界落地好像并不常见,从工程实践角度来讲,是有什么特殊的原因吗?

    作者回复: 正常的技术迭代。五年前的推荐系统,矩阵分解是很主流的技术方案。但是矩阵分解没法引入除用户行为外的其他特征,深度学习出来之后就逐渐被取代了。

    2020-11-09
    3
    40
  • Geek_3c29c3
    老师您好,业务的指标是给不同用户推送可能点击概率比较大的广告,提高不同用户对不同广告的点击率,我这边是利用CTR模型来做的,预测每个用户点击某一个广告的概率,最后发现对于不同的广告,点击概率>0.5的人群重合度很大,目前分析有两个原因,一是测试所用的广告标签类似,导致可能点击用户群体相同;二是最可能的,就是喜欢点击广告的,就是那一波人,另外一波人无论什么广告都没有兴趣点击。老师有遇到过这种情况吗?是怎么解决的?

    作者回复: 这是一个非常好的业界问题。我之前也是做计算广告的,确实有过类似的经历。我感觉从数据上说,第二个原因的可能性非常大,你其实可以分析一下原始的数据,是不是说点击人群的范围确实比较小。 至于解决方法我建议从特征设计的角度入手,看看能不能加入一些能增强模型泛化能力的特征,比如大家都有的一些人口属性特征,广告的分类结构特征之类的,希望能把特定人群的一些行为泛化出去。

    2020-11-11
    4
    19
  • 那时刻
    请问老师,文中提到的梯度下降方法对共现矩阵进行分解,和传统的SVD矩阵分解,有什么异同么?

    作者回复: SVD一般不用在工业级应用上,因为在求解大规模稀疏矩阵时复杂度过高。

    2020-11-10
    2
    19
  • 吴十一
    老师,我这边做点击推荐的时候正负样本比例相差很大,除了随机抽样负样本,还有什么比较好的办法呢?

    作者回复: 其实没有什么magic,工作中常用的就是负样本欠采样,和正样本过采样,或者增大正样本学习的权重。 还有一种方法叫SMOTE,可以搜一下,大致意思是通过合成的方式过采样正样本。可以尝试但有一定风险。

    2020-11-18
    3
    17
  • Geek_04634b
    第一个问题既然已经有物品向量了应该直接求cosine sim取topk就行了,第二个问题,均值方差归一化是最标准的做法,我看评论里有说用cosine的,其实cosine和欧氏距离在l2归一化的条件下在数学上是等价的,本质还是要归一化。

    作者回复: 说的非常好,推荐参考。

    2021-02-19
    14
  • Chaosnow
    请问老师,MF如何做到迭代增量训练模型呢?每天全量更新做不到的情况下,只针对每天生产出的新数据训练是否会导致效果变差,比如更新了一部分item的向量从而影响到原本的相对距离。

    作者回复: MF没法做增量更新,新数据来了之后,共现矩阵都变了,整个求解的目标都变了,只能全量更新。

    2020-11-13
    3
    9
  • Macielyoung
    我觉得消除用户评分偏差可以根据用户的平均评分标准化,即原始向量【x1,x2,x3】变成【x1-xp,x2-xp,x3-xp】,这样有利于弱化个人评分标准不同的影响

    作者回复: 非常好,就是经典的做法了

    2021-01-14
    6
  • 你笑起来真好看
    如果用户只有隐式因为,那如何构建als模型的数据集呢?

    作者回复: 隐式行为正反馈取值1,负反馈取值0或-1,默认取0。比如点击取1,曝光无点击取0或-1,无交互取0。

    2020-11-09
    4
    5
  • Geek_3c29c3
    老师早, 人口数型特征就是性别年龄、常驻城市、手机型号等呗; 广告的分类结构特征又是什么意思呢?将广告的标签打成泛泛的类别吗? 把特定人群的一些行为泛化出去的意思是让每个广告>0.5的人群覆盖度更广,差别度更大吗? -------------------------------- 之前的问题: 老师您好,业务的指标是给不同用户推送可能点击概率比较大的广告,提高不同用户对不同广告的点击率,我这边是利用CTR模型来做的,预测每个用户点击某一个广告的概率,最后发现对于不同的广告,点击概率>0.5的人群重合度很大,目前分析有两个原因,一是测试所用的广告标签类似,导致可能点击用户群体相同;二是最可能的,就是喜欢点击广告的,就是那一波人,另外一波人无论什么广告都没有兴趣点击。老师有遇到过这种情况吗?是怎么解决的? --------------------------- 作者回复: 这是一个非常好的业界问题。我之前也是做计算广告的,确实有过类似的经历。我感觉从数据上说,第二个原因的可能性非常大,你其实可以分析一下原始的数据,是不是说点击人群的范围确实比较小。 至于解决方法我建议从特征设计的角度入手,看看能不能加入一些能增强模型泛化能力的特征,比如大家都有的一些人口属性特征,广告的分类结构特征之类的,希望能把特定人群的一些行为泛化出去。

    作者回复: 人口属性特征就是性别年龄、常驻城市、手机型号等呗; 是的 广告的分类结构特征又是什么意思呢?将广告的标签打成泛泛的类别吗? 广告一般都有分类体系对吧,行业->细分行业之类,可以把用户点击、购买过的广告标签放到特征工程中。 把特定人群的一些行为泛化出去的意思是让每个广告>0.5的人群覆盖度更广,差别度更大吗? 是的。

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