Amazon Personalize:不用写代码也能开发个性化推荐系统

推荐系统并不是大厂专属

2021年,传说每个人手里都有几款时间陷阱App,一旦打开,少则几分钟,多则几个小时就没了。

直说吧,主要就是说某音、某宝、某某头条这种APP,用户用的时候都沉浸其中,不知不觉间时间就过去了,许多人都有类似的体验。

这种投其所好,给用户感兴趣内容的做法已经有大约二十年历史了,最早做这类尝试的就是亚马逊电商平台,推荐系统能帮助用户快速找到感兴趣的商品,让你买的开心。

有数据称,亚马逊电商平台35%的营收都是靠推荐系统带来的。另外一个著名的案例是Netflix,据了解,Netflix有80%的流时间是通过推荐系统贡献的。

可见,一个好的推荐系统对于一个平台来说是非常重要的,它能增加用户活跃度和用户粘性,是一个大平台的必要元素,那么,推荐系统就只是大平台的专属吗?

在亚马逊云科技看来,但凡是有数据的、有业务场景、有需求的企业都能在业务中使用推荐系统。亚马逊云科技为这类企业提供的武器就叫Amazon Personalize。

个性化推荐系统的难点

推荐系统本身就是帮用户找到可能感兴趣的内容。社交网站的热搜,媒体的各种Top推荐,电商网站的热卖以及各种榜单也都属于推荐,但这种推荐是无差别面向所有人,而不是具体某个人,背后靠的是统计技术,靠的是写好的规则,所以,这非常的不个性化。

如果要依靠统计技术和规则来进行针对个人的推荐,其工作量会非常大,比如要推荐的内容种类多了,或者过时了,每个人的喜好和关注点都不同,各种因素变动都可能需要推荐系统做出及时调整,如果依赖统计和规则设定来做,不仅工作量巨大,而且效果也不尽如人意。

大数据、机器学习等技术的出现让面向个人的个性化推荐系统成为可能——根据网站用户的海量交互数据进行收集整理,针对这些数据进行分析,做出推荐模型,然后对网站一个个用户的偏好进行预测。

除了大型互联网公司以外,大部分企业很少会有专门的数据科学家和算法专家团队来做这样一套系统,这种团队的人才往往集中在不差钱的互联网公司,拿着非常高的工资,其成本不是一般企业所能负担得起的。

由于推荐系统本身所使用的技术和推荐系统本身的工作流程相对固定,也就有了产品化的可能。亚马逊云科技的Amazon Personalize作为一款产品化的推荐系统方案,能让中小企业也用得上推荐系统,将个性化推荐的技术进步福利带给更多人。

作为开发者,如果你哪天被领导勒令开发一个推荐系统,隐隐约约觉得领导是在变相逼你辞职的话,可以试试Amazon Personalize,没准职场又一春就这么悄无声息的来了呢?!

AmazonPersonalize是个啥?

Amazon Personalize是基于机器学习技术的个性化推荐服务,源于亚马逊电商同款,它是一种跟智能语音工具Amazon Polly、图像识别工具Amazon Rekognition、翻译工具Amazon Translate一样的现成的工具。

我所说的所谓“现成”,指的是不需要机器学习专业知识就能使用的机器学习服务,只需要按需要的场景,比如个性化推荐的场景、相似物品推荐的场景和个性化排名的场景,选择场景对应的算法就行,具体有哪几个可选的话,下文会截图来说。

Amazon Personalize:不用写代码也能开发个性化推荐系统

Amazon Personalize的运行逻辑非常简单:

首先需要开发者提供数据,最关键的是要有(用户-项目)交互数据。此外,最好还能提供要被推荐的物品的数据和用户的数据,提供给Amazon Personalize来做机器学习的那套东西,然后输出可提供个性化推荐用的API,最后就能嵌入到业务应用中了。

Amazon Personalize:不用写代码也能开发个性化推荐系统

要想用AmazonPersonalize,总共分三步:第一步,数据导入,具体说是告诉Amazon Personalize你传的是什么数据;第二步,自动进行模型训练;第三步,按照提示将模型部署起来进行模型推理。

接下来我们就按照这个流程尝试一下,看看本菜鸟是怎么不写一行代码,只修改了两个JSON文档就体验了Amazon Personalize的。

Amazon Personalize:不用写代码也能开发个性化推荐系统

上手尝试Amazon Personalize

一,导入数据

研究一番之后,我发现最难也最麻烦的部分就是准备数据。

Amazon Personalize:不用写代码也能开发个性化推荐系统

首先,要创建一个数据集组,如图,我命名为boxer-personalize-dataset-group。

然后,在创建的数据集组中上传(用户-项目)交互数据,以及单独的用户数据以及项目数据。

数据从哪儿来呢?

我查看了一些资料后,发现Github上的aws-samples里有Amazon Personalize Samples,将示例代码下载下来后可以获取我们需要的csv格式的数据。

https://github.com/aws-samples/amazon-personalize-samples
#Amazon Personalize Samples示例代码下载地址#

值得一提的是,在samples代码中提示可以用SDK的方式来做实验,这需要在亚马逊云上用Cloudformation创建一组资源来做,需要用到Amazon SageMaker的Notebook,需要介绍各种代码,听起来就很麻烦对不对,我就想用亚马逊云科技的控制台来点几下鼠标键盘来完成操作。

看一眼下载的数据,这里是600多名用户对9700多部电影的评分,(用户-项目)交互数据在这里就是打分数据rating.csv里的数据。

Amazon Personalize:不用写代码也能开发个性化推荐系统

交互数据里的数据是这样的,一共有四列数据:userId、movieId、rating以及timestamp,在给到Amazon Personalize之前需要上传到Amazon S3上。

Amazon Personalize:不用写代码也能开发个性化推荐系统

同时,很重要的一步是要告诉Amazon Personalize这些数据是干什么的,需要创建一个叫Schema(亚马逊云科技中文翻译成“架构”,有点不明所以,就简单认为是数据说明书吧)的东西。

Amazon Personalize:不用写代码也能开发个性化推荐系统

点击确定的时候报错,提示缺少user_id和item_id字段,看来这两个字段是一定要有的,所以,直接复制表格里的字段是不行的。为了方便起见,我直接改数据表里的字段名字吧,好跟Schema对应上。

Amazon Personalize:不用写代码也能开发个性化推荐系统

到这一步,第一个(用户-项目)交互数据的Schema就算设置好了。但是Amazon S3那边还是有问题了,S3需要设置桶策略(注意,不是IAM),不然Amazon Personalize在从S3里拿数据的时候会提示权限不够,所以,需要将如下代码复制进去。

Amazon Personalize:不用写代码也能开发个性化推荐系统

我的bucket的名字是personalize-boxer2021,注意替换

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Effect": "Allow",
           "Principal": {
                "Service":"personalize.amazonaws.com"
           },
           "Action": "s3:ListBucket",
           "Resource": "arn:aws:s3:::personalize-boxer2021"
       },
       {
           "Effect": "Allow",
           "Principal": {
                "Service":"personalize.amazonaws.com"
           },
           "Action": "s3:GetObject",
           "Resource": "arn:aws:s3:::personalize-boxer2021/*"
       }
    ]
}

设置完成后,按照提示,输入文件的S3地址就能开始导入数据了。

其实到这里数据导入工作就可以完成了,也能顺利完成实验。但是为了显得丰富一点,我们接着上传第二个数据。

第二个数据是关于电影的数据信息,它存放在item-data.csv表格里,也需要把它传到S3里。

如图可见,一共有三列数据,item_id和Genre比较有用,电影上映时间在这里就没什么用,直接忽略。

Amazon Personalize:不用写代码也能开发个性化推荐系统

我给这组数据设置的Schema长这样:

Amazon Personalize:不用写代码也能开发个性化推荐系统

按照提示,输入S3地址,点击提交即可,等个大约十分钟,数据导入成功,界面显示如下图这样。

Amazon Personalize:不用写代码也能开发个性化推荐系统

看到绿色的Active标识符就表示数据导入成功,系统识别了这些数据

第二步,创建解决方案。

当数据集上传完成后,特别是(用户-项目)数据上传完成之后,解决方案的按钮就亮了,点击创建方案。

Amazon Personalize:不用写代码也能开发个性化推荐系统

选择Recipe(译为配方)下拉菜单。

Amazon Personalize:不用写代码也能开发个性化推荐系统

如上图所示,它提供了三大类模型算法,Similar items相似物品推荐,Personalized Ranking个性化排名,以及User personalization用户个性化推荐。


Amazon Personalize:不用写代码也能开发个性化推荐系统

随便选择一个推荐热门item的算法(aws-popularity-count),创建一个解决方案,可选配置还有包括超参数优化和自动机器学习等选项,这里为了简单化就全部按默认来。

Amazon Personalize:不用写代码也能开发个性化推荐系统

点击完成,开始进行创建解决方案,这是一个机器学习训练的过程,需要多等一会儿。一样的操作,还可以选择另外两种推荐算法:相似物品推荐和个性化排名,分别建立解决方案。

第三步,创建Campaign活动。

Amazon Personalize:不用写代码也能开发个性化推荐系统

进行一些基础的配置后,将该解决方案进行部署,为下一步的推理做准备。接下来需要等待一会儿,直到Campaign活动创建成功。

第四步,检验成果,测试推理过程。

1,推荐热门item

Amazon Personalize:不用写代码也能开发个性化推荐系统

随机输入一个ID为66的用户,查看推荐结果。

Amazon Personalize:不用写代码也能开发个性化推荐系统

系统推荐ID为66号的用户看item_id为上图所示的几个电影,这些是什么电影呢?

查了表格发现,318是肖申克的救赎,356是阿甘正传,296是昆汀·塔伦蒂诺的《低俗小说》,593是《沉默的羔羊》,2571是《黑客帝国》,这几部影片多少还是有些相似的,起码都是名气比较大的不得不看系列。

2,测试推荐相似item(电影)。

Amazon Personalize:不用写代码也能开发个性化推荐系统

系统推荐出与代号为858的电影相似的电影,858对应的是著名的黑帮片《教父》,来看看系统推荐的哪些是相同类型的电影吧。

Amazon Personalize:不用写代码也能开发个性化推荐系统

系统推荐出了大概30来个相似的电影,1221是《教父第二部》,1213是马丁斯科塞斯的黑帮片《好家伙》,1196是《星球大战五》,1210是《星球大战三》,2959是大卫芬奇的《搏击俱乐部》,影片类型虽然并不一致,但是好在评分都很高,也都属于必看佳片。

3,测试推荐个性化排名。

Amazon Personalize:不用写代码也能开发个性化推荐系统

设置如上图所示,我们想看看用户ID为55的人,对于代号为188、976、234、3456、65的电影感兴趣的程度。

Amazon Personalize:不用写代码也能开发个性化推荐系统

推理得分如上图所示,代号为65的电影《抓狂双宝》是一部喜剧片,它的评分是最高的,也就是说ID是55的人对于《抓狂双宝》非常感兴趣。

紧随其后的234《勇闯快活岛》也是一部喜剧片,感兴趣程度略低,而188的《魔翼杀手》是一部惊悚恐怖片,ID是55的人就不大感兴趣了。

最后,3456的《天堂的颜色》则是一部儿童剧情片,3456《永别了,武器》作为一部1934年的老片,普通人是很难对这类电影提起兴趣吧,ID是55的人也不感兴趣。

最后,本次体验的一点感受

Amazon Personalize跟Amazon SageMaker的自动化的机器学习一样,都无需写一行代码(沉思:JSON半结构化文档算不算代码呢?)就能完成操作,都是入门门槛很低,但上限都很高,不过,对机器学习越了解自然效果越好。

使用AmazonPersonalize跟体验SageMaker最大的不同在于收费上,因为它并不会创建一个一直在运行的实例,所以不用担心实验进行的太慢,扣费扣的心疼,它是按照业务吞吐量来收费的,是一种成本友好型方案。

整体而言,AmazonPersonalize还是很强大的,开发者如果使用了亚马逊云科技提供的event ingestion SDK,用户的实时数据就能传递给Amazon Personalize,不经过服务器直接传递进去,能做出更及时的反馈和响应,用到这一步的话,一个在线实时推荐系统就闪亮登场了。

此外,据了解,AmazonPersonalize支持线上和线下部署两种模式,部署方式还是挺灵活的,另外,两种部署方式的收费方式也略有差异。

最后,对于大部分不关心代码实现的人,选择我这种控制台点鼠标的方式也能用,如果想看代码,想了解更多实现过程,有更多细致入微的强大操作,那就用Cloudformation创建资源,用SageMaker的Notebook来完成这些实验吧。

我认为,亚马逊云对IT产业最大的贡献在于推动技术的普及,它不以PPT见长,而是以高度的产品化能力让创新技术落地,让即使是没什么技术积累的个人能掌握各种高级武器,让没什么技术积累的企业也能用起来各种技术。

Amazon Personalize:不用写代码也能开发个性化推荐系统

7月上海、8月北京、9月深圳,2021年的亚马逊云科技中国峰会即将召开,年度峰会对上海、北京、深圳实行雨露均沾策略,想要深入了解亚马逊云科技在智能湖仓或者其他领域的更多实践,大家可以择期就近围观。

展开阅读全文

页面更新:2024-05-16

标签:亚马逊   代码   系统   科技   字段   算法   模型   场景   解决方案   机器   项目   数据   用户   电影   技术

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top