推荐系统三十六式
刑无刀
“贝壳找房”资深算法专家,8 年推荐系统工程师
43607 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
开篇词 (1讲)
原理篇 · 深度学习 (2讲)
原理篇 · 其他应用算法 (3讲)
推荐系统三十六式
15
15
1.0x
00:00/00:00
登录|注册

07 | 人以群分,你是什么人就看到什么世界

增加喜欢程度的时间衰减
惩罚对热门物品的喜欢程度
一些改进
拆分Map Reduce任务
缓解大规模用户相似度计算的问题
降低计算复杂度的方法
使用稀疏矩阵存储格式
去除用户已消费物品,排序输出
汇总相似用户喜欢的物品
两两计算用户之间的相似度
向量稀疏,表示用户对物品的态度
向量维度即物品个数
需要注意相似度计算和大规模用户相似度计算的问题
算法简单直接但非常有效
个人隐私场景中应用更佳
推荐用户
推荐物品
推荐计算
相似度计算
构造矩阵
产生推荐结果
计算用户相似度
准备用户向量
聚类用户,产生推荐结果
基于用户口味相似度进行推荐
总结
应用场景
实践
原理
背后的思想
基于用户的协同过滤

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

要说提到推荐系统中,什么算法最名满天下,我想一定是协同过滤。在很多场合,甚至有人把协同过滤和推荐系统划等号,可见二者的关系多么紧密。
协同过滤的重点在于“协同”,所谓协同,也就是群体互帮互助,互相支持是集体智慧的体现,协同过滤也是这般简单直接,历久弥新。

协同过滤

当你的推荐系统度过了只能使用基于内容的推荐阶段后,就有了可观的用户行为了。这时候的用户行为通常是正向的,也就是用户或明或暗地表达着喜欢的行为。这些行为可以表达成一个用户和物品的关系矩阵,或者说网络、或者说是图,都是一个东西。
这个用户物品的关系矩阵中填充的就是用户对物品的态度,但并不是每个位置都有,需要的就是把那些还没有的地方填起来。这个关系矩阵是协同过滤的命根子,一切都围绕它来进行。
协同过滤是一个比较大的算法范畴。通常划分为两类:
基于记忆的协同过滤(Memory-Based);
基于模型的协同过滤(Model-Based)。
基于记忆的协同过滤,现在看上去极其简单,就是记住每个人消费过什么东西,然后给他推荐相似的东西,或者推荐相似的人消费的东西。基于模型的协同过滤则是从用户物品关系矩阵中去学习一个模型,从而把那些矩阵空白处填满。
接下来一段时间,我们就围绕这两个类别的协同过滤与你好好聊聊。今天我先来说的是基于记忆的协同过滤的一种——基于用户,或者叫做 User-Based, User to User。

基于用户的协同过滤

背后的思想

你有没有过这种感觉,你遇到一个人,你发现他喜欢的书、喜欢的电影也基本上都是你喜欢的,从此以后,你就想老是想问他:还有什么好推荐的,最近又看了什么书,最近又看了什么电影?甚至不惜和他撞衫,和他穿一个风格的衣服。
对喽,这个感觉非常地自然直接,它就是基于用户的协同过滤背后思想。详细来说就是:先根据历史消费行为帮你找到一群和你口味很相似的用户;然后根据这些和你很相似的用户再消费了什么新的、你没有见过的物品,都可以推荐给你。
这就是我们常说的人以群分,你是什么人,你就会遇到什么人,所以说,要谨慎交友啊。
这其实也是一个给用户聚类的过程,把用户按照兴趣口味聚类成不同的群体,给用户产生的推荐就来自这个群体的平均值;所以要做好这个推荐,关键是如何量化“口味相似”这个看起来很直接简单的事情。这关系到一个用户会跟哪些人在同一个房间内,万一进错了房间,影响就会不好。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

基于用户的协同过滤算法是推荐系统中的重要算法之一,其核心思想是根据用户的历史消费行为找到与其口味相似的用户群体,然后根据这些相似用户的消费行为为目标用户进行推荐。文章介绍了在实现基于用户的协同过滤算法时可能遇到的问题以及解决办法。首先,针对构造矩阵的问题,介绍了稀疏矩阵存储格式,如CSR和COO。其次,针对相似度计算问题,提出了采样计算和向量化计算的方法,以及拆分Map Reduce任务的做法。此外,还讨论了一些改进办法,如惩罚对热门物品的喜欢程度和增加喜欢程度的时间衰减。最后,指出了基于用户的协同过滤算法的应用场景,包括推荐物品和推荐用户。总的来说,基于用户的协同过滤算法在推荐系统中具有重要作用,能够根据用户的历史行为为其推荐符合口味的物品,同时文章也提供了解决实现过程中可能遇到的问题的方法和一些改进办法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《推荐系统三十六式》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(37)

  • 最新
  • 精选
  • jt120
    看了前面,想吐槽,这不是推荐系统实战书里的东西吗?越往后看,发展干货越多,套路啊。 期待更多的干货

    作者回复: 放学别走,你给我等着。

    2018-03-19
    16
  • xzyline
    本身不是做推荐的,有什么比较好的途径可以实践一下这些推荐知识。

    作者回复: Kaggle 上参加比赛。

    2018-03-19
    9
  • Citi Lai
    今天對於技術細節描述稍微抽象,是否有建議範例程式碼的參考?謝謝!

    作者回复: 专栏以手机阅读为主,所以就尽量不放代码,只讲原理。后面会有图书计划,那里面会补上代码。适合深度阅读。

    2018-03-19
    2
    9
  • 星星之火
    邢老师你好。如果矩阵太稀疏,一个人只作用一两个物品的话,用协同过滤效果不太好。可以采用哪些方法解决呢?

    作者回复: 先考虑把基于内容的做好。

    2018-03-19
    3
  • @lala0124
    老师,您好。我想问一下计算推荐分数的MapReduce过程的Reduce不是对相同key的value 执行某种操作吗?那这里的key是一个三元组,key相同的标准是什么?有说的不对的地方还请老师指正。

    作者回复: 三元组你可以把他们拼成一个字符串。就是key了。

    2018-03-22
    1
  • 微微一笑
    迫切期待工程篇

    作者回复: 在路上了。

    2018-03-19
    1
  • Grace
    本节讲的推荐计算是根据用户的日志实时更新的吗?谢谢

    作者回复: 相似度计算不是,推荐部分可以。

    2018-03-19
    1
  • 江枫
    老师好,Pui的MR计算过程,查用户u的相似用户列表,以及相似用户对物品i的Rji值查询,在map搞个hashmap估计放不下,那是需要外部搞个redis等高速缓存查询吗?或者之前先做个MR,reduce到一起。

    作者回复: 可以。

    2018-03-25
  • 江枫
    老师好,Pui的计算,如果Rji有一项是0,那么对应的SIMuj那一项会加在分母里吗?另外用户量很大的情况下,算TopK的相似用户,是否可以考虑用lsh这一类方法?

    作者回复: 当然要加。 看情况,可以试试。

    2018-03-25
  • 曾阿牛
    原理和代码无缝结合在一起,如果有相关书籍推荐那更好了

    作者回复: 这个专栏后续有图书出版。

    2018-03-21
收起评论
大纲
固定大纲
协同过滤
基于用户的协同过滤
背后的思想
显示
设置
留言
37
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部