07 | 人以群分,你是什么人就看到什么世界
刑无刀
该思维导图由 AI 生成,仅供参考
要说提到推荐系统中,什么算法最名满天下,我想一定是协同过滤。在很多场合,甚至有人把协同过滤和推荐系统划等号,可见二者的关系多么紧密。
协同过滤的重点在于“协同”,所谓协同,也就是群体互帮互助,互相支持是集体智慧的体现,协同过滤也是这般简单直接,历久弥新。
协同过滤
当你的推荐系统度过了只能使用基于内容的推荐阶段后,就有了可观的用户行为了。这时候的用户行为通常是正向的,也就是用户或明或暗地表达着喜欢的行为。这些行为可以表达成一个用户和物品的关系矩阵,或者说网络、或者说是图,都是一个东西。
这个用户物品的关系矩阵中填充的就是用户对物品的态度,但并不是每个位置都有,需要的就是把那些还没有的地方填起来。这个关系矩阵是协同过滤的命根子,一切都围绕它来进行。
协同过滤是一个比较大的算法范畴。通常划分为两类:
基于记忆的协同过滤(Memory-Based);
基于模型的协同过滤(Model-Based)。
基于记忆的协同过滤,现在看上去极其简单,就是记住每个人消费过什么东西,然后给他推荐相似的东西,或者推荐相似的人消费的东西。基于模型的协同过滤则是从用户物品关系矩阵中去学习一个模型,从而把那些矩阵空白处填满。
接下来一段时间,我们就围绕这两个类别的协同过滤与你好好聊聊。今天我先来说的是基于记忆的协同过滤的一种——基于用户,或者叫做 User-Based, User to User。
基于用户的协同过滤
背后的思想
你有没有过这种感觉,你遇到一个人,你发现他喜欢的书、喜欢的电影也基本上都是你喜欢的,从此以后,你就想老是想问他:还有什么好推荐的,最近又看了什么书,最近又看了什么电影?甚至不惜和他撞衫,和他穿一个风格的衣服。
对喽,这个感觉非常地自然直接,它就是基于用户的协同过滤背后思想。详细来说就是:先根据历史消费行为帮你找到一群和你口味很相似的用户;然后根据这些和你很相似的用户再消费了什么新的、你没有见过的物品,都可以推荐给你。
这就是我们常说的人以群分,你是什么人,你就会遇到什么人,所以说,要谨慎交友啊。
这其实也是一个给用户聚类的过程,把用户按照兴趣口味聚类成不同的群体,给用户产生的推荐就来自这个群体的平均值;所以要做好这个推荐,关键是如何量化“口味相似”这个看起来很直接简单的事情。这关系到一个用户会跟哪些人在同一个房间内,万一进错了房间,影响就会不好。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
基于用户的协同过滤算法是推荐系统中的重要算法之一,其核心思想是根据用户的历史消费行为找到与其口味相似的用户群体,然后根据这些相似用户的消费行为为目标用户进行推荐。文章介绍了在实现基于用户的协同过滤算法时可能遇到的问题以及解决办法。首先,针对构造矩阵的问题,介绍了稀疏矩阵存储格式,如CSR和COO。其次,针对相似度计算问题,提出了采样计算和向量化计算的方法,以及拆分Map Reduce任务的做法。此外,还讨论了一些改进办法,如惩罚对热门物品的喜欢程度和增加喜欢程度的时间衰减。最后,指出了基于用户的协同过滤算法的应用场景,包括推荐物品和推荐用户。总的来说,基于用户的协同过滤算法在推荐系统中具有重要作用,能够根据用户的历史行为为其推荐符合口味的物品,同时文章也提供了解决实现过程中可能遇到的问题的方法和一些改进办法。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《推荐系统三十六式》,新⼈⾸单¥59
《推荐系统三十六式》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(37)
- 最新
- 精选
- jt120看了前面,想吐槽,这不是推荐系统实战书里的东西吗?越往后看,发展干货越多,套路啊。 期待更多的干货
作者回复: 放学别走,你给我等着。
2018-03-1916 - xzyline本身不是做推荐的,有什么比较好的途径可以实践一下这些推荐知识。
作者回复: Kaggle 上参加比赛。
2018-03-199 - Citi Lai今天對於技術細節描述稍微抽象,是否有建議範例程式碼的參考?謝謝!
作者回复: 专栏以手机阅读为主,所以就尽量不放代码,只讲原理。后面会有图书计划,那里面会补上代码。适合深度阅读。
2018-03-1929 - 星星之火邢老师你好。如果矩阵太稀疏,一个人只作用一两个物品的话,用协同过滤效果不太好。可以采用哪些方法解决呢?
作者回复: 先考虑把基于内容的做好。
2018-03-193 - @lala0124老师,您好。我想问一下计算推荐分数的MapReduce过程的Reduce不是对相同key的value 执行某种操作吗?那这里的key是一个三元组,key相同的标准是什么?有说的不对的地方还请老师指正。
作者回复: 三元组你可以把他们拼成一个字符串。就是key了。
2018-03-221 - 微微一笑迫切期待工程篇
作者回复: 在路上了。
2018-03-191 - Grace本节讲的推荐计算是根据用户的日志实时更新的吗?谢谢
作者回复: 相似度计算不是,推荐部分可以。
2018-03-191 - 江枫老师好,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
收起评论