开发者学堂课程【跟阿里云技术专家学习智能推荐系统: 实操10分钟实现一个简单的推荐架构(一)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/662/detail/11078
实操10分钟实现一个简单的推荐架构(一)
内容介绍:
一、推荐系统的模块
二、介绍
三、推荐方案架构
四、实操构建简单的推荐系统
一、推荐系统的模块
当今市场上的很多 APP 都有 Feed 流推荐,包括广告推荐、内容推荐等,而他们本质上是一个推荐系统。
推荐系统的模块,例如当一个用户进到新闻的APP,用户在这个系统里具有 UserID,网站上的每一条新闻都是一个潜在的待推荐对象,要从海量新闻中找出a可能感兴趣的新闻,就需要利用推荐系统的两个模块,召回模块和排序模块。
召回模块可以把原先很多的新闻例如10万个候选新闻缩小范围,假设经过召回模块的一些召回算法,计算出来得到a可能会喜欢的500个新闻,然后再去进行排序模块,因为经过召回模块后只能确定a可能喜欢的500个新闻,但不知道a在这500个新闻里最喜欢哪个。
排序模块就是把召回的500个结果进行一次排序,比如 A 最喜欢 ID 是33的这条新闻,第二喜欢 ID 为12的新闻,这样可以生成最终的推荐顺序。
整个推荐业务的流程可以分为召回和排序两个模块,但是在一个非常简单的推荐系统中,只有召回模块也可以完成推荐。
假设把范围做到足够小,比如只有十个新闻,不需要知道a最喜欢哪个,直接把这十个都推荐出去即可。今天的视频内容讲述搭建一个仅有召回模块的简单推荐系统。
二、介绍协同过滤算法
在召回领域有很多算法,例如矩阵分解算法、协同过滤算法等,此处讲解协同过滤的基本逻辑。
比如用户 ABC 中,用户 A 喜欢 Rice、Lamb、Milk,用户B喜欢 Noodle、Fish、Red wine,用户 C 喜欢 Rice、Milk,所以会发现 A 和 C 会有些相似的口味,他们都喜欢吃饭,然后都爱喝牛奶,但可以发现A还喜欢吃 Lamb,则我们就可以理解为 A 和 C 有相似的口味,这个时候A喜欢的某个东西,C 没有尝试过,我们就可以假设 C 也会喜欢 A 的另一种食物,就可以把它作为 C 的召回结果。
可以理解为先发现相似的物品或者相似的人,然后根据相似的人和相似的物品之间的关联性去找出推荐的物品。可以发现推荐系统里两个东西经常被同一个人去买,比如手机和手机壳,但是突然有一个人,只购买了手机,此时就可以把手机壳推荐给该用户。今天所讲述的推荐系统就是以协同过滤算法为基础来完成。
三、推荐架构方案
推荐架构简图如下:
图示为完整的架构简图,原始的一些数据包括 User Table、Item Table、Behaviour Table 等。
完整的推荐流程首先会用到阿里云的数仓工具 Dataworks,进行数据的预处理、特征工程、周期性调度配置等。
之后会进入到 PAI 的模块,包括 PAI-Studio、PAI-AutoLearning、PAI-EAS,他们都是 PAI 旗下的产品,PAI-Studio 提供排序算法计算和召回算法计算,计算的结果在排序算法以后生成模型,这个模型部署到 EAS,EAS 是一个在线服务系统,会把你的数据或是模型合并成一个 API,这样用户就可以直接通过 API 进行调用。
在召回模块首先把协同过滤后的召回数据生成出来,然后把数据传到阿里云 TableStore(表格式存储数据库)中,PAI-AutoLearning 会和这个数据库打通,并且配置召回策略,比如手机和手机壳的关系在 Studio 里计算出来后,然后再把这种关系传到 TableStore 里,通知把这个表进行配置,这个时候就可以发到 EAS 里成为在线服务。
例如当用户购买手机之后,就会自动推荐手机壳给该用户。搭建整套推荐系统会应用五款产品,分别是:
l Dataworks
数据的预处理、特征工程、周期性调度配置
l PAI-Studio
提供排序算法计算和召回算法计算
l PAI-AutoLearning
配置召回策略
l PAI-EAS
在线服务系统,把数据或是模型合并成一个 API
l TableStore
表格式存储数据库