写点什么

Amazon Personalize,适合每个人的实时个性化和推荐

  • 2019-10-14
  • 本文字数:3809 字

    阅读完需:约 12 分钟

Amazon Personalize,适合每个人的实时个性化和推荐

毫无疑问,机器学习提供了各种各样令人兴奋的研究主题,但其中最值得关注的当属个性化和推荐。


乍看起来,将用户与他们喜欢的项目匹配起来听起来似乎很简单。然而,开发有效的推荐程序系统是一项极具挑战性的任务。几年前,Netflix 甚至还举办了一场电影推荐比赛,为此还提供了 100 万美元的奖金! 实际上,如今构建、优化和部署实时个性化需要分析、应用机器学习、软件工程和系统操作方面的专业知识。很少有组织拥有应对这些挑战所需的知识、技能和经验,他们要么放弃使用推荐的想法,要么构建出的模型效果不佳。


20 多年来,Amazon.com 大规模构建了推荐程序系统,整合了购买体验(从产品发现到结账)整个过程中的个性化推荐。


为了帮助所有 AWS 客户都享有同样出色的体验,我们非常高兴地宣布推出 Amazon Personalize,这是一款完全托管的服务,让没有多少机器学习经验的开发人员也可构建个性化和推荐服务。

隆重推出 Amazon Personalize

Amazon Personalize 如何简化个性化和推荐? 如之前的博文所述,您可以使用 Factorization Machines(因子分解机)等算法在 Amazon SageMaker 上构建推荐模型。但是,这需要大量的数据准备和专家调整才能获得良好的结果。


使用 Amazon Personalize 创建推荐模型要简单得多。借助自动执行复杂机器学习任务的新流程 AutoML,Personalize 执行并加速设计、训练和部署机器学习模型所需的艰巨工作。


Amazon Personalize 支持存储在 Amazon S3 中的数据集和流数据集,例如从 JavaScript 跟踪器或服务器端实时发送的事件。简要流程如下所示:


1.创建描述数据集的 schema,使用 Personalize 预留的关键字作为用户 ID、项目 ID 等。


2.创建一个数据集组,其中包含用于构建模型和用于预测的数据集:用户项交互(也称为“谁喜欢什么”)、用户和项目。后面两个是可选的,我们将在下面的示例中看到。


3.将数据发送到 Personalize。


4.创建解决方案,即选择推荐配方并在数据集组上进行训练。


5.创建一个活动来预测新样本。


将存储在 Amazon S3 中的数据发送到 Personalize 只是意味着将数据文件添加到数据集组。提取会自动触发。


而使用流数据是不同的。发送事件的一种方法是使用 AWS Amplify JavaScript 库,该库与 Personalize 中的事件跟踪服务集成。另一种方法是使用您喜欢的语言通过 AWS 开发工具包将它们发送到服务器端:可以从 AWS 内部(例如,在 Amazon EC2 或 AWS Lambda 中)或外部托管代码的任何来源进行提取。


下面让我们看个示例。让我们基于 MovieLens 数据集构建一个解决方案!

MovieLens 数据集

MovieLens 是众所周知存储电影推荐的数据集。它有不同尺寸和格式:在这里,我们将使用 ml-20m,其中包含 138000 位用户对 27000 部电影的 2000 万次评分。


此数据集包含一个名为“ratings.csv”的文件,该文件用于存储用户项交互。第一行如下所示:


userId,movieId,rating,timestamp1,2,3.5,11124860271,29,3.5,11124846761,32,3.5,11124848191,47,3.5,11124847271,50,3.5,1112484580
复制代码


它的内容如下所示:用户 1 给电影 2 评分 3.5 分。电影 29、32、47、50 等以此类推! 这正是我们构建推荐模型所需要的。我们开始吧。

为数据集创建 schema

第一步是为此数据集创建 Avro schema。.这很简单,我们只需要使用 Amazon Personalize 中定义的一些关键字。


{"type": "record","name": "Interactions","namespace": "com.amazonaws.personalize.schema","fields":[    {"name": "ITEM_ID", "type": "string"},    {"name": "USER_ID", "type": "string"},    {"name": "TIMESTAMP", "type": "long"}],"version": "1.0"}
复制代码

准备数据集

下载并解压缩数据集后,加载“ratings.csv”文件并应用以下处理:


  • 随机评论。

  • 仅保留评分为 4 及以上的电影,并删除评分列:我们只希望我们的模型可以推荐用户真正喜欢的电影。

  • 将列重命名为 schema 中使用的名称。

  • 只保留 100000 次交互以最大限度地减少训练时间(毕竟这只是一个演示!)。

  • 所有这一切都可以通过 Pandas Python 库轻松实现,该库是用于列式数据处理的万能方法。同时,我们还会将处理过的文件上传到 Amazon S3 存储桶。


import pandas, boto3 from sklearn.utils import shuffleratings = pandas.read_csv('ratings.csv')ratings = shuffle(ratings)ratings = ratings[ratings['rating']>3.6]ratings = ratings.drop(columns='rating')ratings.columns = ['USER_ID','ITEM_ID','TIMESTAMP']ratings = ratings[:100000]ratings.to_csv('ratings.processed.csv',index=False)s3 = boto3.client('s3')s3.upload_file('ratings.processed.csv','jsimon-ml20m','ratings.processed.csv')
复制代码

创建数据集组

首先,我们需要创建一个包含用户项数据集及其 schema 的数据集组。我们使用 AWS CLI 执行此操作:正如您将看到的,许多这些 CLI 操作需要先前调用的 Amazon 资源名称 (ARN) 输出,因此请确保在实验时跟踪所有内容。


$ aws personalize create-dataset-group --name jsimon-ml20m-dataset-group$ aws personalize create-schema --name jsimon-ml20m-schema \--schema file://jsimon-ml20m-schema.json$ aws personalize create-dataset --schema-arn $SCHEMA_ARN \--dataset-group-arn $DATASET_GROUP_ARN \--dataset-type INTERACTIONS 
复制代码

导入数据集

在这个简单的示例中,我们将按需导入数据。还可以安排导入作业以定期加载新数据。我们需要传递一个允许从 Amazon S3 存储桶读取数据的角色。


$ aws personalize create-dataset-import-job --job-name jsimon-ml20m-job \--role-arn $ROLE_ARN--dataset-arn $DATASET_ARN \--data-source dataLocation=s3://jsimon-ml20m/ratings.processed.csv
复制代码


这需要一些时间,我们可以使用 describe-dataset-import-job API 来检查完成情况。此时将返回大量信息,但我们只需查询导入状态。


$ aws personalize describe-dataset-import-job \--dataset-import-job-arn $DATASET_IMPORT_JOB_ARN \--query "datasetImportJob.latestDatasetImportJobRun.status""CREATE IN_PROGRESS"
复制代码


把以上内容结合在一起:创建解决方案


导入数据集后,我们需要选择一个配方来构建我们的推荐模型。配方不仅仅是一种算法:它还包括预定义的功能转换、算法的初始参数以及自动模型调整。因此,有了配方,就无需掌握个性化方面的专业知识。


Amazon Personalize 附带了几个适用于不同用例的配方,高级用户也可以添加自己的配方。


以下是可用配方列表。


arn:aws:personalize:::recipe/awspersonalizehrnnmodelarn:aws:personalize:::recipe/awspersonalizehrnnmodel-for-coldstartarn:aws:personalize:::recipe/awspersonalizehrnnmodel-for-metadataarn:aws:personalize:::recipe/awspersonalizeffnnmodelarn:aws:personalize:::recipe/awspersonalizedeepfmmodelarn:aws:personalize:::recipe/awspersonalizesimsmodelarn:aws:personalize:::recipe/search-personalizationarn:aws:personalize:::recipe/popularity-baseline
复制代码


推荐专家肯定会喜欢它们带来的灵活性,但对于该主题不熟悉的开发人员呢?


如前所述,Amazon Personalize 支持 AutoML,这是一种自动搜索最佳配方的新技术,所以我们启用它。默认情况下启用超参数优化。最后但同样重要的是,Amazon Personalize 解决方案可以根据传入流量自动扩展:我们只需要定义我们想要支持的每秒事务数 (TPS) 的最小数量。


因此,我们可以如下所示创建解决方案:


$ aws personalize create-solution --name jsimon-ml20m-solution \ --minTPS 10 --perform-auto-ml \ --dataset-group-arn $DATASET_GROUP_ARN \ --query 'solution.status' "CREATE IN_PROGRESS"
复制代码


选择、训练和调整最佳配方需要一段时间。完成上述所有操作后,我们可以查看解决方案指标。


$ aws personalize get-metrics --solution-arn $SOLUTION_ARN
复制代码


实时推荐新项目


如果我们对模型感到满意,现在就可以创建一个活动来进行部署。每次部署解决方案时,它都会自动更新。


$ aws personalize create-campaign --name jsimon-ml20m-solution \--solution-arn $SOLUTION_ARN --update-mode AUTO
复制代码


现在,我们来推荐一些电影。


$ aws personalize-rec get-recommendations --campaign-arn $CAMPAIGN_ARN \--user-id $USER_ID --query "itemList[*].itemId"["1210", "260", "2571", "110", "296", "1193", ...]
复制代码


这样就可以了! 如您所见,我们通过一些 API 调用成功构建了一个推荐模型。我们需要做的就是定义一个 schema 并上传数据集。我们依靠 Amazon Personalize 通过 AutoML 选择最佳配方,并优化其超参数。该解决方案在完全托管的基础设施上进行训练和部署,让我们可以更加专注于构建我们的应用程序。


立即注册预览版!


我希望这篇博文提供了丰富的有用信息。我们只是触及了 Amazon Personalize 功能的冰山一角。该服务的预览版已在美国东部(弗吉尼亚)和美国西部(俄勒冈)推出。


预览期间服务不收费。预览版完成后,该服务将纳入 AWS 免费套餐。注册后的前两个月,您将获得:


1.数据处理和存储:每月高达 20 GB


2.训练:每月训练小时数多达 100 小时


3.推理:每月多达 50 TPS 小时的实时推荐


要开始使用,请访问 aws.amazon.com/personalize/。现在您可以体验一下,与我们分享您的想法。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/amazon-personalize-real-time-personalization-and-recommendation-for-everyone/


2019-10-14 11:241409
用户头像

发布了 1906 篇内容, 共 146.2 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

浅谈低零融合表单设计器兼容方案

inBuilder低代码平台

低代码 零代码平台

YashanDB 知识库|手把手教你回收表空间,释放磁盘的正确姿势!

数据库砖家

数据库

AI 如何为 RPA 赋予 “超能力”及避坑指南

Techinsight

RPA RPA评测 RPAxAI RPA Agent RPA智能体

2025多链代币开发全景指南:从BSC到TON的实战策略与技术选型

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 公链开发代币开发

从“好玩”到“好用”:企业级智能体落地的关键飞跃|甲子光年

Techinsight

智能体 AI 智能体 智能体评估

怎么用AI生成UML时序图?AI高阶绘图技巧盘点!

职场工具箱

人工智能 UML 时序图 AI软件 AIGC

AI Agent落地竞速,金智维卡位千亿级企业市场

Techinsight

智能体 企业级开发 AI 智能体 AI GENTS 智能体评估

“三苏领航”文旅协同推介会:整合资源,赋能粤派文旅发展

极客天地

豆包1.5·深度思考模型发布!效果好、低延迟、多模态

火山引擎开发者社区

AI 豆包

Multi-SWE-bench:首个多语言代码修复基准开源

火山引擎开发者社区

语言 & 开发 豆包

游戏服务器不加防护能活多久?

网络安全服务

CDN 游戏服务器 高防服务器 高防IP DDoS 攻击

YashanDB 知识库|YAS-02143 登录失败?可能不是密码错,而是 JDK 版本太老了

数据库砖家

数据库·

JimuBI 积木报表 v1.9.5发布,大屏和仪表盘,免费数据可视化

JEECG低代码

数据可视化 数据大屏 大屏设计器 仪表盘设计 积木BI

YashanDB 知识库|yasql 登录失败?可能是你没处理好特殊字符!

数据库砖家

数据库·

智能体领域:C端产品潜力显现,企业级产品各显神通

Techinsight

agent

一文看透企业智能体江湖:综合平台 VS 垂直霸主,谁才是企业刚需答案?

Techinsight

智能体 agent 企业级 智能体评估

SAE 实现应用发布全过程可观测

阿里巴巴云原生

阿里云 Serverless 云原生

玩转MCP | 一文看懂如何在 Trae IDE 中解锁 MCP

火山引擎开发者社区

火山引擎 MCP

活动回顾|Apache Cloudberry™ (Incubating) Meetup·2025 杭州站

酷克数据HashData

YashanDB 知识库|yasboot 查询状态显示 off?原来是启动方式搞错了!

数据库砖家

数据库·

YashanDB 知识库|如何用闪回功能救回误删的数据?全流程实战演示

数据库砖家

数据库·

有了AI Agents,RPA还有生存空间吗?

Techinsight

RPA AI Agents

RPA 技术赋能电商运营:从数据抓取到订单处理的全流程自动化实践

Techinsight

电商

Gone 框架的脚手架工具gonectl介绍

大鹏

企业异地组网面临的问题及SD-WAN解决方案详解

Ogcloud

组网 企业组网 异地组网 企业异地组网

OceanBase如何支持应用多活

陈一之

高可用架构 oceanbase 应用多活

海外云手机怎样帮企业省钱玩转海外社媒?

Ogcloud

云手机 海外云手机 海外社媒运营 海外社媒推广

月暗开源 Kimi-Audio,单一框架执行多种语音任务;照片秒变可对话数字人,LemonAI 推出 Slice Live丨日报

声网

运维实战|快速搭建适配 YashanDB 的 Prometheus Exporter!手把手教学

数据库砖家

数据库

Bolt.diy 一键部署,“一句话”实现全栈开发

阿里巴巴云原生

阿里云 云原生

小白也可以看懂的 MCP 介绍

火山引擎开发者社区

MCP

Amazon Personalize,适合每个人的实时个性化和推荐_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章