手把手带你搭建推荐系统
黄鸿波
谷歌开发者专家,知名游戏公司技术专家
3441 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 36 讲
手把手带你搭建推荐系统
15
15
1.0x
00:00/00:00
登录|注册

19|协同过滤:召回算法中永远不落幕的经典

你好,我是黄鸿波。
在前面的章节中,我们讲解了数据、算法以及简单的推荐服务,从本章开始,我们将开启一个全新的篇章:算法。本章我们会围绕算法和模型进行展开。
这节课我们先来讲解协同过滤算法,我将其分为了下面三个部分。
什么是协同过滤算法、协同过滤算法的基本原理是什么?
协同过滤算法中的常见问题和弊端。
搭建一个简单的协同过滤算法。

协同过滤算法的基本原理

在实际的工程项目中,拿到用户的行为信息对一个线上产品来说非常容易,而如何利用好用户的行为数据才是重中之重。
在众多捕捉用户行为的推荐算法中,协同过滤算法是最基础也是最重要的算法之一,其核心思想就是对用户历史行为进行处理和挖掘,从而找到用户的喜好,并通过用户所喜好的内容进行召回、推荐。
我们经常会看到“猜你喜欢”“购买此商品的人也购买了某商品”等功能,这些功能常常就是使用协同过滤算法作为其最基础的召回算法,进行内容信息的召回。
一般我们可以将协同过滤算法分为两种类型:基于邻域的协同过滤算法和基于模型的协同过滤算法。其中基于邻域的协同过滤算法又包括基于用户的协同过滤算法和基于内容的协同过滤算法。无论采用哪种协同过滤算法,核心思想都一样:收集用户的行为记录,找到用户的偏好并找到与偏好相似的内容,计算比重再推荐给用户。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

协同过滤算法是推荐系统中的重要算法之一,通过分析用户行为数据实现个性化推荐。文章介绍了协同过滤算法的基本原理、相似度计算方法和基于内容的协同过滤算法。该算法能够捕捉用户偏好和行为模式,但存在计算量大和推荐结果容易重复等缺点。协同过滤算法的优点包括个性化推荐、灵活性高、可扩展性好和算法效果较好,但也存在稀疏性、冷启动、数据稳定性和算法适用性等问题。总的来说,协同过滤算法在推荐系统中具有重要意义,为读者提供了深入了解和应用该算法的基础知识。 文章中详细介绍了基于Item的协同过滤算法的实现过程,包括相似度矩阵的计算和给用户推荐感兴趣的文章的计算。通过Python实现了一个简单的协同过滤算法,让读者能够深入了解算法的具体实现细节。此外,文章还总结了协同过滤算法的核心思想、优缺点以及课后练习,为读者提供了进一步学习和实践的方向。 总的来说,本文通过简洁清晰的语言和具体的代码示例,帮助读者快速了解了协同过滤算法的原理和实现方法,为他们在推荐系统领域的学习和实践提供了有力支持。

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

全部留言(6)

  • 最新
  • 精选
  • 静心
    我在想一个问题,如果是成百万或上千万甚至更多级别的文章,再加上上百万甚至千万级别的用户,这么打循环计算,需要什么样的服务器才可以胜任?

    作者回复: 一般来讲,对于这种比较大的并发量,我们采用的是分布式的计算方式,而不是一台机器就可以胜任的,具体配置主要是根据你的实际情况来。

    2023-08-28归属地:北京
    1
  • 翡翠虎
    每天新增很多(几十万篇)文章的情况下,怎么做相似度计算呢?是一次性批量计算相似度还是有别的方法?

    作者回复: 在每天新增大量文章的情况下,一次性对所有文章进行相似度计算可能会非常耗时和占用大量的计算资源。为了提高计算效率,可以考虑以下几种方法: 增量计算:每天新增的文章可能只是整个文集的一小部分,可以采用增量计算的方式,只计算新增文章与已有文章之间的相似度。这样可以大大减少计算量,只需对新增文章进行相似度计算,而不是对整个文集重新计算。 分布式计算:可以使用分布式计算的框架(如Hadoop、Spark等)来进行相似度计算。将文章数据分割成多个分区,利用多台计算机并行计算各个分区之间的相似度,最后再合并结果。这样可以利用集群的计算能力,提高计算速度和处理大规模数据的能力。 近似相似度计算:在实际应用中,并不需要精确的相似度计算。可以考虑使用一些近似相似度计算的方法(如LSH、MinHash等),通过降低计算复杂度来快速估计文章之间的相似度。这些方法通过哈希函数或采样的方式进行相似度计算,可以在保证一定准确性的情况下,大大降低计算成本。 综合考虑以上方法,可以根据具体的场景和需求选择合适的方法来进行相似度计算。例如,如果对实时性要求较高,可以采用增量计算;如果需要处理海量数据,则可以考虑分布式计算;如果计算复杂度过高,可以尝试近似相似度计算。另外,还可以结合缓存机制和索引技术来提高相似度计算的效率,以满足实际需求。

    2023-05-29归属地:广西
    1
  • alexliu
    "a 和 b 的共现次数为 2,喜欢 a 的用户数是 3,喜欢 b 的用户数是 2,那么我们可以计算出 ab 的相似度 2/6=0.33" 这里是不是应该对6开根号?相似度应该是2/sqrt(6)=0.81吧
    2023-06-07归属地:上海
    2
  • 请教老师,如果要过滤用户已读文章,而用户已读几十万篇甚至更多,召回时怎么处理效率更高?
    2024-02-19归属地:广东
  • Geek_ccc0fd
    问题2:数据集就是user-item的交互行为日志,然后group by user得到每个用户点击/点赞/收藏过的item_list,传入我们的函数中做相似度计算,这里还可以根据行为的不同做加权
    2023-06-02归属地:广东
  • peter
    Q1:相似度的计算有多种方法,一个网站会应用多种方法吗? Q2:相似度计算的规模,或者说矩阵的规模,一般多大? Q3:对于一个用户的相似度的计算,网站多久更新一次? Q4:一个网站后端是用Java开发的,计算相似度的时候,会采用Java吗?有观点认为Java计算慢,是否会采用速度更快的? 比如C、C++,或者python?
    2023-05-30归属地:北京
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部