01|推荐系统:我们应该怎样学习推荐系统?
什么是推荐系统?
- 深入了解
- 翻译
- 解释
- 总结
推荐系统在互联网时代扮演着越来越重要的角色,通过记录和分析用户行为,为用户提供个性化的推荐内容,从而提高用户体验和增加网站粘性。推荐系统的核心包括召回和排序两个部分,以及数据存储处理、服务端API接口和Web层用户访问等多个部分。推荐系统不仅在电商领域有应用,还可以在旅游、短视频、新闻资讯等领域发挥作用。学习推荐系统对于搭建企业级推荐系统具有重要意义。学习推荐系统的步骤包括对推荐系统全局有一个大致的了解,了解一些简单的召回算法和排序算法,了解召回算法和排序算法对数据和特征的需求,以及了解一个简单的推荐系统是如何工作的。这些步骤涵盖了对推荐系统的概念、算法技术、数据处理和用户反馈等方面的学习。文章提出了两道思考题,分别是设计一个产品以及设计一个适用于该产品的推荐系统,鼓励读者参与交流讨论。整体而言,本文为读者提供了学习推荐系统的指导和思考方向。
《手把手带你搭建推荐系统》,新⼈⾸单¥59
全部留言(13)
- 最新
- 精选
- 香格里拉飞龙期待后续,不知道讲embedding召回时会不会讲faiss,入门课程也希望能更接近业界
作者回复: 同学你好,我在后续的embedding的召回中会提到如何使用faiss来搭配向量进行召回,我的这个课程实际上是一个实战类型的课程,主要是带着大家从头到尾来搭一个推荐系统项目,所以,更加注重整个推荐系统的工程化体系。
2023-04-10归属地:北京34 - GAC·DU推荐系统和图数据库结合是不是会更好一些?对目前的各大平台的推荐系统体验并不好,之前在京东买个电动剃须刀,付款后推荐系统还推剃须刀,给用户的感觉就是推了个寂寞。
作者回复: 推荐系统可以和图数据库结合,但是这个不是绝对的。 至于您说的很多电商推荐系统推荐的不好,这个其实和对用户的分析以及对产品的定位有关。 在我们的课程中,将推荐系统服务端搭建的时候(大概在第15节课左右),会给大家留一个小作业,就是已经推荐过的内容就不在推荐,我觉得这个是比较利于用户体验的。当然,我们可以将其进行拓展,变成这一类的物品在短期内都可以不用推荐。 所以,这是很考验推荐策略的,也和产品定位有很大的关系。
2023-04-10归属地:北京23 - 海欧目前排序模型部分已经发展到基于注意力机制和序列的din,dien深度模型,老师可以在课程里增加这部分模型的介绍和工程实战么
作者回复: 同学你好,我可以在后面的课程中去有意识的加入一些这部分的内容,或者以附加课程的形式加入。 你说的很对,这一部分确实现在很多,但是实际上,对于一个中小型团队来说,这里面需要增加很多算力,所以,在小团队中其实用的并不是特别多。
2023-04-11归属地:北京2 - 欢少の不忘初心关于老师的问题:从公司的角度需要开发关于房产的推荐系统,从个人的角度需要开发关于博客文章类的推荐系统,想给用户带来交互性,体验性更强的系统服务。从房产来说主要是房源的推荐,从博客来说主要是文章的推荐。 我是一个推荐系统的新人,关于文章中的一些名词不是很懂我大概学习整理了一下。 协同过滤算法:核心思想是利用用户的历史行为数据寻找用户之间的相似性。这个可以分成两大块,基于用户协同过滤,基于物品协同过滤。从用户来说就是把一个用户喜好的商品同时推荐给具有相同喜好的人。从物品来说,一个用户购买了某个商品,把相似的商品同时推荐给用户。这个算法存在的问题就是冷启动,新用户,新物品无法推荐数据稀疏过拟合等问题需要特殊处理。 LFM算法:也称矩阵分界算法,他可以解决协同过滤算法的稀疏问题。他是通过将用户和物品抽象成一个低维向量,通过向量之间的内积计算用户对物品的兴趣度进行推荐。同时也存在了数据过拟合问题,需要根据具体场景进行调参和优化。 LR算法:(逻辑回归)是一种常见的分类算法,通过将输入特征与权重进行线性组合然后将结果传递给一逻辑函数,然后将输出连续转换为二分类输出即预测样品属于正类或负类的概率。他也有一些问题,会受噪声和异常值的影响不适合处理多分类问题。这里可以采用正则化LR,Lasso回归,岭回归。 DeepFM与XDeepFM是深度学习的推荐系统模型。 通过老师的讲解以及专业名词的学习与了解使我受益匪浅,感谢老师!期待后续
作者回复: 同学,你好,你的理解是没问题的,加油。
2023-04-23归属地:江苏1 - peter请教老师几个问题: Q1:能否详细讲一下环境搭建? 老师的课很好,尤其是实战,想从头跟下来。代码是python写的,我是小白,但估计勉强可以看懂。如果环境搭建成功,可以跑老师的代码,效果就非常好。环境搭建也许有一些坑,容易导致“入门到放弃”的心情。所以,老师能否详细讲一下环境搭建?包括win10下环境和linux下环境。 我的笔记本是win10,已经安装了虚拟机,ubuntu20。以正课形式,或者加餐形式,或者一个文档与代码放到一起,都可以。 Q2:老师在互联网公司做过推荐系统吗?老师目前在游戏公司工作,游戏公司需要推荐系统吗? Q3:chatGPT可以创建推荐系统吗? Q4:“召回”这个词,给人的感觉是“选择了,但觉得不好,又打回来”,词义有点偏负面,但文中的意思是“召回层的意思就是找到用户可能喜欢的内容的候选集”。 感觉这个词用得有点别扭。
作者回复: 同学你好: 1、我的课程里面的所有环境搭建都是一步一步的,没有任何跳跃,完全没有基础的,基本上也没什么问题; 2、我做过至少3套推荐系统,我们公司有一款App,就是类似于LOL盒子那种,周边资讯、社区和同人的文章、帖子等,这里面的推荐系统就是我带团队从0到1搭建的; 3、ChatGPT可以和推荐系统结合,这个有时间我可以讲一讲; 4、召回是推荐系统的专有名词,意思是把你可能喜欢的内容都筛选出来。
2023-04-11归属地:北京1 - 董俊俊老师,一个php程序员该如何学习您的课程,感觉这些算法都好复杂?
作者回复: 其实这些算法看起来很复杂,但是我讲的时候会讲的相对通俗易懂,只要掌握基本的原理,其实无论你是做php还是Java,都很容易听懂这门课的。
2023-05-22归属地:湖北 - Serendipity我在学校读研,目前在研究推荐系统。读的一些论文比如NCF,NGCF,LightGCN,KGCN,KGAT这些模型究竟用在推荐系统的哪一个模块上,是召回模块还是排序模块,因为论文中不曾提及这些东西,只谈了性能指标的提升,如果我后续基于这些模型进行改进,搭建一个推荐系统原型又该如何做呢。感觉学术研究的推荐系统跟工业的推荐系统真的差不少。
作者回复: 这些论文中提到的模型通常用于推荐系统中的排序模块,其主要作用是基于用户历史行为和物品信息对候选集进行排序,从而提供个性化的推荐结果。具体而言,NCF、NGCF以及LightGCN等模型一般用于通过embedding学习来产生用户和物品的低维度向量表示,然后通过向量点积或者多层感知机来计算用户和物品之间的关联度,最后实现排序模块的功能。而KGCN和KGAT这两个知识图谱相关模型则利用了知识图谱中的知识关系,融合了多种信息源,并结合用户行为和物品信息来推荐,从而提高排序质量。 如果你想搭建一个推荐系统原型,可以先根据业务场景和数据特点选择合适的模型并进行调参。具体来说,可以根据数据的稀疏程度、物品种类和用户数量、用户与物品的交互类型等因素来确定推荐模型的适用范围和性能指标。在模型优化方面,可以考虑基于深度学习或增强学习等技术,从数据增强、模型结构优化、多目标优化等角度出发,进行进一步的研究和优化。
2023-05-12归属地:日本 - 一轩明月期望设计的产品: 抓取自己主要的信息源数据(公众号,blog,播客,推特,arxiv摘要......)每天给自己推荐一份阅读清单,能根据点击反馈匹配”阅读口味“ 当前困惑: 浏览”推荐算法工程师“(3年以下/无限制)招聘信息时,常能看到类似”熟悉Hadoop/Spark,具有海量数据处理能力“,“熟悉 Python/java/C++”的描述。向老师请教: 1. 所谓“熟悉”大数据处理工具,要达到什么程度,比如 shuffle、计算图的实现与优化都要清楚?还是会调 api,写 SQL 洗数据就可以? 2. 按我理解,数据科学的 python,大数据工具的 java、scala,cuda 算子/计算效率的 C++,应聘时三门语言都做到纯熟很难,从“强大的工程能力”要求出发,应该怎样取舍?哪些是必须项,哪些只是加分项? 谢谢
作者回复: 同学,你好。 针对你的第一个问题,熟悉大数据处理工具通常是指了解工具的基本原理和使用方法,根据具体业务场景进行数据分析、挖掘和处理。不同的公司和岗位对于“熟悉”的程度要求可能会有所不同,但通常应该包括了解分布式存储、分布式计算等基本概念,能使用常见的集群管理软件如Hadoop或Spark进行数据处理和分析,并了解数据处理的性能优化等方面的知识。 对于你的第二个问题,三门语言确实是数据科学领域常用的语言,其中Python在数据科学领域使用最为广泛,Java和Scala则在大数据处理领域应用较多,而C++通常用于GPU加速等高性能计算场景。但是,不同的公司和岗位对于所需技能和语言掌握程度的要求也可能有所不同,具体要求你可以参考岗位描述和招聘要求。 在选择技能和语言方面,可以根据自己的职业规划和兴趣爱好等因素进行取舍。如果你希望从事数据科学领域的工作,那么Python是必不可少的一门语言,如果你希望从事大数据处理领域的工作,那么Java或Scala等语言可能更为重要。如果你比较注重效率和性能,可以学习C++或使用GPU加速等技术。 如果说加分项的话,我觉得只要把一门学精、学透,这样才是加分项,而不是哪一门是加分项。
2023-05-07归属地:北京 - 麦克范儿感谢黄老师的分享,看完了1-2讲还是有很多收获的。我目前从事BI工作,想学习下咱们的课程后争取往数据科学相关的岗位转型。想问下咱们这个课程教的知识和项目您觉得可以写到简历中并且应对一般的面试吗?如果我以后想深耕这块领域是否还需要再多补充很多底层的数学或算法知识呢?谢谢!
作者回复: 同学你好,首先,推荐系统和BI实际上是有非常密切的关系的,但是他们的技术栈其实差别还是比较大的,如果您想通过学习推荐系统然后往数据科学相关的岗位来转型,我感觉有点行不通。 其次,我们的课程内容、知识体系写到简历里应付一般的面试是完全没有问题的,如果要深耕这一块的内容,应该着重去看相关的论文,然后再在论文的研读中查漏补缺。
2023-04-26归属地:加拿大 - 全国花式伸脖子蹬腿锦标赛冠军�...老师,召回层和排序层没理解。 召回层的意思就是找到用户可能喜欢的内容的候选集,这里的内容可能有成百上千个,也可能更多。 排序层的意思就是将召回层拿到的召回集根据用户的喜好,再一次进行排序。 为什么不能直接排好呢,召回层是不是也是根据用户喜好生成召回集的,这两层不是都是根据用户的喜好来的吗
作者回复: 同学你好,这里面主要有2方面问题: 1、推荐系统需要处理大量的数据,如果不使用召回集,那么所有的物品都会被送入排序层进行排序,这样会降低推荐系统的性能和效率。 2、推荐系统需要考虑多种特征,如用户行为、时间、物品信息等,这些特征都会对推荐结果产生影响,如果不使用召回集,那么所有的特征信息都需要放入排序层,这样会让排序层变得异常复杂,而且还可能导致数据稀疏问题。
2023-04-24归属地:北京