手把手带你搭建推荐系统
理论 + 实践,打造千人千面的推荐系统
黄鸿波  谷歌开发者专家,知名游戏公司技术专家
专栏
已完结·共 36 讲
|
3444 人已学
|
收藏
徐石头
从课表上知道这门课后期待已久,从上个月盼到这个月,公司产品推荐系统逐渐承载不了需求,请教下老师如果小公司搭建推荐系统对硬件成本是不是要求比较高,没有专门的人力负责这块,人员成本和经济成本有限的前提下有没有比较好的解决方案,我想这也是小公司痛点。
作者回复:同学,你好,其实对于小公司或者小团队来讲,搭建推荐系统的要求并不需要特别高,首先我们要评估好用量。 在我们的这套课程中,或者说真实企业的项目中,一共会分成下面几个部分: 1、推荐系统的模型项目:主要是推荐系统的算法运算、模型运算、推理等,这个可以单独用一个服务器; 2、前端的服务器,这个可以单独一个服务器,这个服务器要求不高,主要是web请求页面; 然后就是几个数据库,redis,MongoDB,以及MySQL(如果需要的话),这几个部分可以和前端共用一个服务器,也可以单独分开,这个就看预算了; 至于开发人员和成本,我觉得2~3个人的小团队,有2个月左右,一般来讲问题不大,如果前期没有很好的数据,可以尝试以冷启动或者我课程中的基于规则的推荐来启动这个项目。
2023-04-10
GAC·DU
推荐系统和图数据库结合是不是会更好一些?对目前的各大平台的推荐系统体验并不好,之前在京东买个电动剃须刀,付款后推荐系统还推剃须刀,给用户的感觉就是推了个寂寞。
作者回复:推荐系统可以和图数据库结合,但是这个不是绝对的。 至于您说的很多电商推荐系统推荐的不好,这个其实和对用户的分析以及对产品的定位有关。 在我们的课程中,将推荐系统服务端搭建的时候(大概在第15节课左右),会给大家留一个小作业,就是已经推荐过的内容就不在推荐,我觉得这个是比较利于用户体验的。当然,我们可以将其进行拓展,变成这一类的物品在短期内都可以不用推荐。 所以,这是很考验推荐策略的,也和产品定位有很大的关系。
2023-04-10
风轻扬
想啥来啥,最近正想系统了解一下推荐系统,极客就给安排上了,非常期待老师的更新。 另外,想请教一下老师,我查了一下flask,是python的一个框架,爬虫啥的也都是python,不咋懂python的研发,能学这门课吗?平时主要用java开发
作者回复:我个人觉得是没问题的,我们的课程代码分成3个部分。 1、数据获取:这部分是讲爬虫,我们是用Python来写的,用的是Python中的scrapy框架; 2、推荐模型搭建:这部分是讲各个模型怎么写,以及对数据库的操作; 3、服务端的搭建:这部分是webservice。 在这三部分中,第一部分和第三部分,实际上用任何语言都可以开发,Java中也有很好的爬虫框架,也有比较好的服务端框架,比如springboot等; 那么第二部分模型篇,其实用Java也可以实现,只不过对于机器学习来说,Python的库更多一些。我们只要了解算法本质,其实语言只是一个工具而已,不用过于纠结语言。
2023-04-10
香格里拉飞龙
期待后续,不知道讲embedding召回时会不会讲faiss,入门课程也希望能更接近业界
作者回复:同学你好,我在后续的embedding的召回中会提到如何使用faiss来搭配向量进行召回,我的这个课程实际上是一个实战类型的课程,主要是带着大家从头到尾来搭一个推荐系统项目,所以,更加注重整个推荐系统的工程化体系。
2023-04-10
peter
请教老师几个问题: Q1:Netflix推荐系统“开放”具体指什么?是指开源吗?或者是类似工具一类的可以拿来直接用?或者SDK?或者只是提供架构图一类的原理性解释? Q2:近似在线层,既然是“粗排序”,怎么会是“精召回”呢?应该是“粗召回”才更合理啊。 Q3:在线层依赖近似在线层的话,怎么保证在线层的实时性? 文中提到“等到近似在线层处理完成后,会将结果输入到在线层。而在线层更多地是做了一个排序工作,它把离线特征数据和从近似在线层得到的待推荐列表组合起来”,从这句话看,在线层是依赖近似在线层。如果有依赖,近似在线层是分钟级,而在线层是50毫秒,就无法保证实时性了啊。 Q4:NetFlix的三层架构是通用的吗? Q5:推荐系统对大数据依赖大吗?大数据框架出现之前有推荐系统吗?
作者回复:同学你好,我来回答你的这几个问题: 1、课程中所说的开放,指的是他们的论文,而不是开源,就是Netflix已经发表了论文,详细地说明了这一套是怎么做的; 2、我是这么理解的,近似在线层是在召回层之后,实际上是对召回层的数据根据用户的信息再一次做筛选,因此可以理解为是更精细的召回,但是相对于排序来说,它的内容还是太多,所以是粗排序; 3、在线层依赖于近似在线层的结果,但是近似在线层实际上是对用户最近几分钟的历史行为来做更新,我们主要是取近似在线层更新的结果,所以,近似在线层的计算耗时并不影响在线层取内容; 4、Netflix的三层架构基本上现在的推荐系统都是这么来做的,相对通用; 5、推荐系统对大数据的依赖可大可小,主要看用户和内容的规模,因此,大数据框架出现之前,实际上也是可以利用其它的存储方式来获取数据进行计算,而且在大数据出现之前,一般业务量也不会特别大,所以,我认为,这个是时代发展的结果。
2023-04-12
GAC·DU
在线层存储用户实时轨迹数据,近似在线层存储业务逻辑数据,离线层存储用户历史轨迹数据。离线数据存储在Hadoop的分布式文件系统中,其余两者存储在Kafka消息队列中。后端服务系统接收数据后,做进一步的关联查询,把最终结果推给前端服务。不知道思考的对不对?思考的过程中觉得虽然做了分层,对执行性能上做了优化,但是耦合度太高,尤其是近似实时层,承上启下,重要程度不言自明,能否可以做一个降级的方案,做到即使某一层挂了也能做到最小程度的推荐?
作者回复:同学你好,你的这个理解稍微有一点点偏差。首先在线层没有做存储功能,只是去收集实时数据,然后给到近似在线层和离线层。离线层存储的有2个,一个是历史轨迹,一个是本地信息,比如用户画像、用户数据、内容数据、内容画像等,kafka的消息队列,不做存储,你可以理解为一个管道,kafka只是这根管子,数据是在这里面排队的。 这些数据会经历离线的召回、近似在线层的排序和在线层的重排序,然后给到用户。 如果需要做降级的话,我们一般可以把近似在线层的值同时存入到两种数据库,比如MongoDB和Redis,如果Redis取不到就从MongoDB中取。层与层之间也是这样。
2023-04-12
peter
请教老师几个问题: Q1:能否详细讲一下环境搭建? 老师的课很好,尤其是实战,想从头跟下来。代码是python写的,我是小白,但估计勉强可以看懂。如果环境搭建成功,可以跑老师的代码,效果就非常好。环境搭建也许有一些坑,容易导致“入门到放弃”的心情。所以,老师能否详细讲一下环境搭建?包括win10下环境和linux下环境。 我的笔记本是win10,已经安装了虚拟机,ubuntu20。以正课形式,或者加餐形式,或者一个文档与代码放到一起,都可以。 Q2:老师在互联网公司做过推荐系统吗?老师目前在游戏公司工作,游戏公司需要推荐系统吗? Q3:chatGPT可以创建推荐系统吗? Q4:“召回”这个词,给人的感觉是“选择了,但觉得不好,又打回来”,词义有点偏负面,但文中的意思是“召回层的意思就是找到用户可能喜欢的内容的候选集”。 感觉这个词用得有点别扭。
作者回复:同学你好: 1、我的课程里面的所有环境搭建都是一步一步的,没有任何跳跃,完全没有基础的,基本上也没什么问题; 2、我做过至少3套推荐系统,我们公司有一款App,就是类似于LOL盒子那种,周边资讯、社区和同人的文章、帖子等,这里面的推荐系统就是我带团队从0到1搭建的; 3、ChatGPT可以和推荐系统结合,这个有时间我可以讲一讲; 4、召回是推荐系统的专有名词,意思是把你可能喜欢的内容都筛选出来。
2023-04-11
小嘟嘟
开篇很赞,非常具有吸引力,求更新
作者回复:感谢支持。
2023-04-11
讲师

黄鸿波

谷歌开发者专家,知名游戏公司技术专家

黄鸿波,知名游戏公司人工智能领域专家,高级算法工程师,谷歌机器学习方向开发者专家,拥有多年软件开发经验,著有《TensorFlow 进阶指南基础、算法与应用》一书。 黄鸿波专注于算法及深度学习领域,带领团队为公司开发了推荐系统、智能问答、游戏强化学习对战机器人等产品,从 0 到...查看更多
编辑推荐
看过的人还看了
AI 大模型之美
徐文浩
bothub 创始人

33讲 | 32429 人已学习

¥68¥199
MySQL 实战 45 讲
林晓斌
网名丁奇,前腾讯云数据库负责人

49讲 | 224937 人已学习

¥68¥199
数据结构与算法之美
王争
前 Google 工程师

81讲 | 283805 人已学习

¥68¥199
左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家

119讲 | 181001 人已学习

¥98¥399
设计模式之美
王争
前 Google 工程师,《数据结构与算法之美》专栏作者

113讲 | 123470 人已学习

¥98¥299
从 0 开始学架构
李运华
网名“华仔”,前阿里资深技术专家(P9)

66讲 | 152624 人已学习

¥68¥199