15 | 协同过滤:最经典的推荐模型,我们应该掌握什么?
该思维导图由 AI 生成,仅供参考
协同过滤算法的基本原理
- 深入了解
- 翻译
- 解释
- 总结
推荐系统中的经典推荐模型协同过滤算法及其衍生模型是推荐系统中最重要的模块之一。协同过滤算法依赖用户和物品之间的行为关系进行推荐,通过共现矩阵和用户相似度计算来预测用户对物品的评价。文章介绍了协同过滤算法的基本原理,包括用户行为数据的重要性、共现矩阵的生成和用户相似度的计算方法。此外,还详细阐述了用户评分的预测过程,包括利用相似用户的加权平均值来预测目标用户的评价。矩阵分解算法是对协同过滤算法的改进,通过分解共现矩阵,生成用户向量矩阵和物品向量矩阵,进而得到用户隐向量和物品隐向量。这种算法的实现过程简单直观,通过梯度下降的方法进行共现矩阵的分解。文章还介绍了矩阵分解算法在Spark中的实现过程,以及对推荐系统的重要性和实际应用的思考。总的来说,本文深入浅出地解释了协同过滤算法及矩阵分解算法的原理和实现过程,对于推荐系统的学习具有重要的参考价值。
《深度学习推荐系统实战》,新⼈⾸单¥68
全部留言(29)
- 最新
- 精选
- Geek_63ee39问题2: 可以采用余弦相似度可以消除这种影响,例如:用户甲习惯打高分,对A, B, C三个物品打分为[5, 2, 5];用户乙习惯打低分,对A, B, C打分为为[3, 1, 3],虽然这两个评分向量的欧式距离比较远,但它们的余弦相似度比较高,约等于0.96
作者回复: 这个思路我之前还没想到,但感觉应该是work的,可以尝试。 经典的做法是在生成共现矩阵的时候对用户的评分进行用户级别的校正或者归一化,用当前得分减去用户平均得分作为共现矩阵里面的值。
2020-11-08757 - Sebastian老师好,矩阵分解在工业界落地好像并不常见,从工程实践角度来讲,是有什么特殊的原因吗?
作者回复: 正常的技术迭代。五年前的推荐系统,矩阵分解是很主流的技术方案。但是矩阵分解没法引入除用户行为外的其他特征,深度学习出来之后就逐渐被取代了。
2020-11-09340 - Geek_3c29c3老师您好,业务的指标是给不同用户推送可能点击概率比较大的广告,提高不同用户对不同广告的点击率,我这边是利用CTR模型来做的,预测每个用户点击某一个广告的概率,最后发现对于不同的广告,点击概率>0.5的人群重合度很大,目前分析有两个原因,一是测试所用的广告标签类似,导致可能点击用户群体相同;二是最可能的,就是喜欢点击广告的,就是那一波人,另外一波人无论什么广告都没有兴趣点击。老师有遇到过这种情况吗?是怎么解决的?
作者回复: 这是一个非常好的业界问题。我之前也是做计算广告的,确实有过类似的经历。我感觉从数据上说,第二个原因的可能性非常大,你其实可以分析一下原始的数据,是不是说点击人群的范围确实比较小。 至于解决方法我建议从特征设计的角度入手,看看能不能加入一些能增强模型泛化能力的特征,比如大家都有的一些人口属性特征,广告的分类结构特征之类的,希望能把特定人群的一些行为泛化出去。
2020-11-11419 - 那时刻请问老师,文中提到的梯度下降方法对共现矩阵进行分解,和传统的SVD矩阵分解,有什么异同么?
作者回复: SVD一般不用在工业级应用上,因为在求解大规模稀疏矩阵时复杂度过高。
2020-11-10219 - 吴十一老师,我这边做点击推荐的时候正负样本比例相差很大,除了随机抽样负样本,还有什么比较好的办法呢?
作者回复: 其实没有什么magic,工作中常用的就是负样本欠采样,和正样本过采样,或者增大正样本学习的权重。 还有一种方法叫SMOTE,可以搜一下,大致意思是通过合成的方式过采样正样本。可以尝试但有一定风险。
2020-11-18317 - Geek_04634b第一个问题既然已经有物品向量了应该直接求cosine sim取topk就行了,第二个问题,均值方差归一化是最标准的做法,我看评论里有说用cosine的,其实cosine和欧氏距离在l2归一化的条件下在数学上是等价的,本质还是要归一化。
作者回复: 说的非常好,推荐参考。
2021-02-1914 - Chaosnow请问老师,MF如何做到迭代增量训练模型呢?每天全量更新做不到的情况下,只针对每天生产出的新数据训练是否会导致效果变差,比如更新了一部分item的向量从而影响到原本的相对距离。
作者回复: MF没法做增量更新,新数据来了之后,共现矩阵都变了,整个求解的目标都变了,只能全量更新。
2020-11-1339 - Macielyoung我觉得消除用户评分偏差可以根据用户的平均评分标准化,即原始向量【x1,x2,x3】变成【x1-xp,x2-xp,x3-xp】,这样有利于弱化个人评分标准不同的影响
作者回复: 非常好,就是经典的做法了
2021-01-146 - 你笑起来真好看如果用户只有隐式因为,那如何构建als模型的数据集呢?
作者回复: 隐式行为正反馈取值1,负反馈取值0或-1,默认取0。比如点击取1,曝光无点击取0或-1,无交互取0。
2020-11-0945 - Geek_3c29c3老师早, 人口数型特征就是性别年龄、常驻城市、手机型号等呗; 广告的分类结构特征又是什么意思呢?将广告的标签打成泛泛的类别吗? 把特定人群的一些行为泛化出去的意思是让每个广告>0.5的人群覆盖度更广,差别度更大吗? -------------------------------- 之前的问题: 老师您好,业务的指标是给不同用户推送可能点击概率比较大的广告,提高不同用户对不同广告的点击率,我这边是利用CTR模型来做的,预测每个用户点击某一个广告的概率,最后发现对于不同的广告,点击概率>0.5的人群重合度很大,目前分析有两个原因,一是测试所用的广告标签类似,导致可能点击用户群体相同;二是最可能的,就是喜欢点击广告的,就是那一波人,另外一波人无论什么广告都没有兴趣点击。老师有遇到过这种情况吗?是怎么解决的? --------------------------- 作者回复: 这是一个非常好的业界问题。我之前也是做计算广告的,确实有过类似的经历。我感觉从数据上说,第二个原因的可能性非常大,你其实可以分析一下原始的数据,是不是说点击人群的范围确实比较小。 至于解决方法我建议从特征设计的角度入手,看看能不能加入一些能增强模型泛化能力的特征,比如大家都有的一些人口属性特征,广告的分类结构特征之类的,希望能把特定人群的一些行为泛化出去。
作者回复: 人口属性特征就是性别年龄、常驻城市、手机型号等呗; 是的 广告的分类结构特征又是什么意思呢?将广告的标签打成泛泛的类别吗? 广告一般都有分类体系对吧,行业->细分行业之类,可以把用户点击、购买过的广告标签放到特征工程中。 把特定人群的一些行为泛化出去的意思是让每个广告>0.5的人群覆盖度更广,差别度更大吗? 是的。
2020-11-123