常年混迹于网络,相信你对各大网站和应用的「个性化推荐」系统已经再熟悉不过了。html
不过!!这一切都必须基于一个前提:这些推荐系统真的能充分了解你的喜爱,并准确推荐你真的会喜欢须要的东西!要想作到这一点可并不容易。回想一下本身的实际体验,是否有不少时候,这些推荐系统的推荐并不合你口味的,甚至是毫无必要的,例如在你购买一款很耐用的大件产品后,反而会密集推送更多同类产品……算法
对商家来讲,若是推荐系统提供的推荐内容准确率低,此类推荐可能影响用户情绪,致使用户参与度下降,最终引起业务营收损失。所以不少企业会编写自定义代码解决此类问题,即经过代码将个性化系统针对每位用户存储在数据库内的数据进行比较,借此提供更为准确的推荐内容,同时删除推荐中用户已经购买过的条目。但老实说,这一实现过程至关耗时且极易出错。数据库
Amazon Personalize 是一种客户体验个性化服务,能够帮助开发人员经过 Amazon.com 使用的机器学习技术来构建应用程序,从而提供实时个性化推荐,而无需 ML 专业知识。api
借助 Amazon Personalize,开发人员能够轻松构建可以提供普遍的个性化体验的应用程序,包括特定产品推荐、个性化的产品重排序和定制直销。Amazon Personalize 是一项彻底托管型机器学习服务,超越了严格的基于静态规则的推荐系统,而且能够训练、调整和部署定制的ML模型,以跨行业(如零售、媒体和娱乐)向客户提供高度定制的建议。安全
最近,Amazon Personalize 服务正式迎来「推荐过滤器」(Recommendation Filters)功能。推荐过滤器可对用户已经购买的产品、以往观看过的视频以及消费过的其余数字内容进行过滤与推荐,借此提升个性化推荐结果的准确率。网络
基于 Amazon 公司过去20多年的个性化经验,Amazon Personalize 使用户可以经过个性化产品、内容推荐以及更具针对性的宣传促销活动提升客户参与度。在机器学习技术的加持下,Amazon Personalize 将为网站与应用程序生成质量更高的推荐。机器学习
更重要的是,无需任何机器学习经验,开发人员便可直接使用简单 API,经过数次单击轻松构建起复杂的个性化功能。Amazon Personalize 将负责处理并检查您的数据,肯定其中有意义的内容,自动选择正确的机器学习算法,并根据数据完成自定义模型的训练与优化。全部数据都将通过加密,在保障隐私与安全的同时,保证数据仅被用于为用户生成推荐。学习
推荐过滤器的设置与使用很是简单。首先,咱们可使用 Amazon Personalize 控制台或 API 经过 Amazon Personalize专用的 DSL(领域特定语言)建立过滤器。接下来就可使用 GetRecommendations 或 GetPersonalizedRanking API,或者经过批量推理做业以批量形式生成推荐内容。测试
本文将引导你们逐步完成在 Amazon Personalize 中设置及使用推荐过滤器的完整流程。优化
要定义及使用过滤器,咱们首先须要设置如下Personalize资源。在完成本文中的演练以前,你们须要在Amazon Personalize控制台中按照控制台入门指南中的说明进行操做:
{ "type": "record", "name": "Interactions", "namespace": "com.amazonaws.concierge.schema", "fields": [ { "name": "ITEM_ID", "type": "string" }, { "name": "USER_ID", "type": "string" }, { "name": "TIMESTAMP", "type": "long" }, { "name": "EVENT_TYPE", "type": "string" }, { "name": "EVENT_VALUE", "type": [ "null", "float" ] } ], "version": "1.0" }
至此咱们已经完成了 Amazon Personalize 资源的设置,接下来是对过滤器进行定义与测试。
Amazon Personalize 使用本身的领域特定语言(即过滤器表达式)以肯定须要在一组推荐中排除或包含的条目。过滤器表达式的做用域为数据集组;你们只能使用该表达式过滤处于同一数据集组范围内的促销活动或解决方案版本(批量推荐)。Amazon Personalize 可以根据用户的交互历史记录实现条目过滤,如下为过滤器表达式的部分示例。
EXCLUDE itemId WHERE INTERACTIONS.event_type in ("Purchase")
EXCLUDE itemId WHERE INTERACTIONS.event_type in ("View","Click","Download")
EXCLUDE itemId WHERE INTERACTIONS.event_type in ("*")
咱们能够对交互数据集中所包含的任意事件类型进行过滤。关于更多详细信息,请参阅数据集与 Schema。关于过滤器定义 DSL 的更多详细信息,请参阅相关说明文档。
咱们可使用以前提到的 DSL 在 Amazon Personalize 控制台上建立过滤器。要建立过滤器,请完成如下操做步骤:
建立过滤器后,咱们将进入包含过滤器详细信息的页面。在这里,你们能够查看关于过滤器的更多细节信息,包括过滤器ARN以及所建立的对应过滤器表达式。你们也能够在此页面上删除过滤器,或者经过摘要页面建立更多过滤器。
咱们还能够经过Amazon Personalize中的createFilter API建立过滤器。关于更多详细信息,请参阅相关说明文档。
Amazon Personalize 控制台可帮助用户从 Campaigns 页面中实时检查实时推荐。在此页面中,你们能够在检索用户推荐的同时应用过滤器。为此,请导航至 Campaign 选项卡;该数据集应与建立过滤器时使用的数据集相同。然后,咱们能够测试应用过滤条件并观察对推荐结果的影响。
如下截屏所示,为未使用过滤器时的推荐结果。
从 Interactions 数据集处,你们能够看到该用户以往购买过的一些推荐条目。Interactions 数据集中包含如下数据点:
USER_ID,ITEM_ID,EVENT_TYPE,TIMESTAMP 1,2657,Purchase,964983426 1,2985,Purchase,964983034
以上数据片断所示,表明 UserId 1已经购买过推荐内容中的第三与第四项条目。
如下截屏所示,为在使用预约义过滤器从推荐中删除先前购买过的条目以后,给出的推荐结果。
结果代表,过滤器已经从推荐内容中删除了先前购买过的条目(条目 ID 2657与2985);过滤器将删除与该用户的事件类型 Purchase 交互过的条目。
要经过控制台将过滤器应用于批量推荐,请参照实时推荐的相同过程。但请注意在 Create batch inference job 页面上选择过滤器名称,以将先前建立的过滤器应用于本次批量推荐。
咱们也能够将 FilterArn 做为附加及可选参数添加至 GetRecommendations调用当中,经过 SDK 或者 API 将过滤器应用于实时推荐。使用 filterArn 做为参数键,并将 filterArn 做为其值字符串。FilterArn是 CreateFilter API 调用所返回的一条惟一标识键。咱们还能够在过滤器的详细信息页面上找到过滤器的 ARN。
如下示例代码为 GetRecommendations API 的请求正文,此请求正文负责将过滤器应用于推荐结果:
{ "campaignArn": "arn:aws:personalize:us-west-2:000000000000:campaign/test-campaign", "userId": "1", "itemId": "1", "numResults": 5, "filterArn": "arn:aws:personalize:us-west-2:000000000000:filter/test-filter" }
若要在使用 SDK 时将过滤器应用于批量推荐,请在请求正文中提交 filterArn 做为可选参数。使用 filterArn 做为参数键,并将 filterArn 做为其值字符串。
Amazon Personalize 中的推荐过滤器可帮助用户根据业务需求对推荐内容进行微调,且咱们无需分神设计任何后处理逻辑。关于经过 Amazon Personalize 优化用户体验的更多详细信息,请参阅 Amazon Personalize 是什么?