优化解决方案以实现额外目标 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

优化解决方案以实现额外目标

Amazon Personalize 化的主要目标是根据历史和实时互动数据,为您的用户预测最相关的商品。这些是你的用户最有可能与之交互的项目(例如,他们最有可能点击的项目)。如果您有额外的目标,例如最大限度地提高直播分钟数或增加收入,则可以创建一个基于相关性和目标生成建议的解决方案。

创建交互数据集和具有非空数字列元数据属性的 Item 数据集之后,您可以根据项目元数据创建针对额外目标进行优化的解决方案。您可使用 Amazon Personalize 控制台,Amazon Command Line Interface(Amazon CLI),或Amazon开发工具包。

要针对其他目标优化解决方案,请使用 “用户个性化配方” 或 “个性化排名” 配方创建新的解决方案,然后在项目数据集中选择与目标相关的数字元数据列。在生成推荐时,Amazon Personalize 化更重视此列数据值较高的商品。例如,您可以选择 VIDEO_LENGTH 列以最大限度地提高直播分钟数,或者选择 PRICE 列以最大化收入。

目标要求如下:

  • 您只能为您的目标选择一列。

  • 该列在您的架构中必须有数字类型。

  • 该专栏不能有null键入架构。

有关架构和数据类型的更多信息,请参阅。数据集和架构.

平衡目标重点和相关性

更多地根据自己的目标而非相关性推荐物品时,可能会有一种权衡。例如,如果您想通过推荐来增加收入,那么仅针对昂贵物品的推荐可能会使物品与您的用户不那么相关,并降低用户参与度和转化率。

要在相关性和目标之间配置平衡,请在创建解决方案时选择以下目标敏感度级别之一:

  • 关闭:Amazon Personalize 化主要使用互动数据来预测与您的用户最相关的商品。

  • Low: Amazon Personalize 化不太重视你的目标。通过互动实现的相关性数据更重要。

  • 中等: Amazon Personalize 化通过互动数据同样重视您的目标和相关性。

  • High: Amazon Personalize 化更加重视你的目标。通过互动实现的相关性数据不太重要

衡量优化性能

当您为具有优化目标的解决方案创建解决方案版本(训练模型)时,Amazon Personalize 会生成average_rewards_at_k指标。对于的分数average_rewards_at_k告诉你解决方案版本在实现目标方面的表现如何。要计算此指标,Amazon Personalize 化计算每位用户的奖励如下:

rewards_per_user = total rewards from the user's interactions with their top 25 reward generating recommendations / total rewards from the user's interactions with recommendations

最终选项目average_rewards_at_k是所有人的平均值rewards_per_user标准化为小于或等于 1 且大于 0 的小数值。值越接近 1,每位用户可以从推荐中获得的平均收益就越多。

例如,如果您的目标是最大限度地提高点击收入,Amazon Personalize 化将用户从前 25 个最昂贵的推荐中点击的商品所产生的总收入除以用户点击的所有推荐商品的收入,从而计算每个用户的得分。然后,Amazon Personalize 化返回所有用户分数的标准化平均值。越接近average_rewards_at_k是 1,平均而言,每位用户可以从推荐中获得的收入越多。

有关生成指标的更多信息,请参阅。第 4 步:使用指标评估解决方案版本.

优化解决方案(控制台)

要使用 Amazon Personalize onize 控制台优化解决方案以实现其他目标,请创建一个新的解决方案,然后选择与您的目标相关的数字项元数据列。

针对额外目标优化解决方案(控制台)

  1. 在打开 Amazon Personalize 控制台https://console.aws.amazon.com/personalize/home然后登录您的账户。

  2. 选择要用于训练的数据集组。

  3. 创建解决方选择控制面板部分,选择启动按钮。如果您已创建解决方案,请选择创建方案按钮。

  4. 适用于解决方案名称中,为该解决方案指定一个名称。

  5. 适用于Recipe,选择任一选项配方用户个性化配方要么个性化排名配方.

  6. InSolution name 配置,如果交互数据集具有 EVENT_TYPE 或同时具有 EVENT_TYPE 和 EVENT_VALUE 列,则可以选择使用Event type事件值阈值字段以选择 Amazon Personalize 化在训练模型时使用的交互数据。

    有关更多信息,请参阅选择用于训练的交互数据.

  7. 适用于目标中,从项目数据集中选择与目标相关的数字列。您只能选择数字元数据列。

  8. 适用于客观敏感性中,选择 Amazon Personalize 化在生成推荐时对其他目标的重视级别。目标敏感度用于配置 Amazon Personalize 化如何根据您的目标与互动数据的相关性来平衡推荐商品。有关更多信息,请参阅 平衡目标重点和相关性

  9. 根据您的食谱和业务需求配置任何超参数选项。使用不同超级参数的不同配方。有关可用的超级参数,请参阅中的各个配方文档。第 1 步:选择配方.

  10. 选择 Next(下一步)。

  11. 在存储库的创建方案版本页面中,为解决方案创建新的解决方案版本。有关详细信息,请参阅 创建解决方案版本(控制台)。创建解决方案版本后,可以在该解决方案版本指标中查看优化性能。请参阅 衡量优化性能

优化解决方案 (Amazon CLI)

只有使用用户个性化或个性化排名方法,才能针对目标进行优化。要优化解决方案以实现额外目标,请使用Amazon CLI,创建一个新的解决方案并使用optimizationObjective键入solutionConfig对象。这些区域有:optimizationObjective具有以下字段:

  • itemAttribute:从项目数据集中指定与目标相关的数字元数据列的名称。

  • objectiveSensitivity:指定解决方案在生成建议时对目标的重视程度。目标敏感度级别用于配置 Amazon Personalize 化如何根据您的目标与互动数据的相关性来平衡推荐商品。这些区域有:objectiveSensitivity可以是OFF,低,MEDIUM要么HIGH. 有关更多信息,请参阅 平衡目标重点和相关性

以下是一个示例演示的create-solution Amazon CLI命令。替换solution namedataset group arn, 和recipe arn具有您自己的值。

适用于optimizationObjective,替换COLUMN_NAME其中包含与目标相关的 Item 数据数据集中的数字元数据列名称。适用于objectiveSensitivity,指定 OFF、低、中或高。

aws personalize create-solution \ --name solution name \ --dataset-group-arn dataset group arn \ --recipe-arn recipe arn \ --solution-config "{\"optimizationObjective\":{\"itemAttribute\":\"COLUMN_NAME\",\"objectiveSensitivity\":\"MEDIUM\"}}"

解决方案准备就绪后,创建新的解决方案版本(有关示例命令,请参阅配置解决方案 (Amazon CLI))。创建解决方案版本后,可使用解决方案版本指标查看优化性能。请参阅 衡量优化性能

优化解决方案 (Amazon开发工具包)

只有使用用户个性化或个性化排名方法,才能针对目标进行优化。

要优化解决方案以实现额外目标,请使用AmazonSDK,创建新的解决方案并使用optimizationObjective键入solutionConfig对象为该解决方案。这些区域有:optimizationObjective具有以下字段:

  • itemAttribute:从数据集组的项目数据集中指定与目标相关的数字元数据列的名称。

  • objectiveSensitivity:指定解决方案在生成建议时对目标的重视程度。目标敏感度级别用于配置 Amazon Personalize 化如何根据您的目标与互动数据的相关性来平衡推荐商品。这些区域有:objectiveSensitivity可以是OFFLOWMEDIUM要么HIGH. 有关更多信息,请参阅 平衡目标重点和相关性

使用以下代码创建一个解决方案,其中包含其他目标Amazon SDK for Python (Boto3)或者Amazon SDK for Java 2.x.

解决方案准备就绪后,请创建新的解决方案版本(例如代码请参阅创建解决方案版本 (Amazon开发工具包))。创建解决方案版本后,可使用解决方案版本指标查看优化性能。请参阅 衡量优化性能

SDK for Python (Boto3)

要创建针对其他目标进行优化的解决方案,请使用以下命令create_solution方法。替换solution namedataset group arn, 和recipe arn具有您自己的值。

适用于optimizationObjective,替换COLUMN_NAME其中包含与目标相关的 Item 数据数据集中的数字元数据列名称。适用于objectiveSensitivity,指定 OFF、低、中或高。

import boto3 personalize = boto3.client('personalize') create_solution_response = personalize.create_solution( name= 'solution name', recipeArn= 'recipe arn', datasetGroupArn = 'dataset group arn', solutionConfig = { "optimizationObjective": { "itemAttribute": "COLUMN_NAME", "objectiveSensitivity": "MEDIUM" } } ) solution_arn = create_solution_response['solutionArn'] print('solution_arn: ', solution_arn)
SDK for Java 2.x

要创建针对其他目标进行优化的解决方案,请使用以下命令createPersonalizeSolution方法并将以下内容作为参数传递:Amazon Personalize 化服务客户端、数据集组的亚马逊资源名称 (ARN)、解决方案名称、配方 ARN、物料属性和目标敏感度级别。

public static String createPersonalizeSolution(PersonalizeClient personalizeClient, String datasetGroupArn, String solutionName, String recipeArn, String itemAttribute, String objectiveSensitivity) { try { OptimizationObjective optimizationObjective = OptimizationObjective.builder() .itemAttribute(itemAttribute) .objectiveSensitivity(objectiveSensitivity) .build(); SolutionConfig solutionConfig = SolutionConfig.builder() .optimizationObjective(optimizationObjective) .build(); CreateSolutionRequest solutionRequest = CreateSolutionRequest.builder() .name(solutionName) .datasetGroupArn(datasetGroupArn) .recipeArn(recipeArn) .solutionConfig(solutionConfig) .build(); CreateSolutionResponse solutionResponse = personalizeClient.createSolution(solutionRequest); return solutionResponse.solutionArn(); } catch (PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return "";

示例 Jupyter 笔记本

有关演示如何创建针对其他基于目标项目元数据优化的解决方案示例 Jupyter 笔记本示例,请参阅objective_ 优化的文件夹Amazon Personalize 样本GitHub 存储库