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

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

针对附加目标优化解决方案

优化解决方案的能力为预览版,可能会随时发生变化。更改将仅影响使用此功能的解决方案,并且不会导致数据丢失。

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

创建具有数值元数据列的 Interperties 数据集和 Item 数据集后,您可以创建一个针对基于项目元数据的附加目标进行优化的解决方案。要针对附加目标优化解决方案,请使用用户个性化配方或个性化排名配方创建新解决方案,然后在 Item 数据集中选择与您的目标相关的数字元数据列。例如,您可以选择 Video_LOGING 列以最大化流式处理分钟数,或选择 PREDE 列以最大化收入。

在生成建议时,Amazon Personalize 对于此列数据值较高的商品具有更高的重要性。您只能为目标选择一列,元数据必须为数字。

要针对某个目标优化解决方案,您可以使用 Amazon Personalize 控制台Amazon Command Line Interface(Amazon CLI),或Amazon开发工具包。

平衡目标重点和相关性

在推荐商品时,更多地是基于您的目标而不是相关性的商品时,可能会有一种折衷 例如,如果您希望通过建议增加收入,则仅针对昂贵项目的建议可能会使项目与用户的相关性降低,并降低用户参与度和转化率。

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

  • Off (关闭) Amazon Personalize 主要使用交互数据来预测与您的用户最相关的商品。

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

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

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

衡量优化性能

当您为具有优化目标的解决方案创建解决方案版本(培训模型)时,Amazon Personalize 会生成average_rewards_at_k指标。适用于的分数average_rewards_at_k告诉您解决方案版本在实现目标方面的性能如何。Amazon Personalize 计算此指标的方法是将互动产生的总奖励(例如,点击总收入)除以推荐的可能奖励总额。得分越高,每个用户可以期望从推荐中获得的平均收益就越多。

例如,如果您的目标是实现收入最大化,Amazon Personalize 会将互动产生的总收入(例如,用户点击的所有项目的收入)除以推荐的可能总收入。由此产生的average_rewards_at_k分数告诉你平均可以从推荐中获得多少收入。

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

优化解决方案(控制台)

要使用 Amazon 个性化控制台优化附加目标的解决方案,请创建一个新的解决方案,然后选择与您的目标相关的数字项目元数据列。

针对附加目标优化解决方案(控制台)

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

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

  3. 创建解决方案部分中,选择启动按钮。如果您已创建了解决方案,请选择创建解决方案按钮。

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

  5. 适用于Recipe中,选择用户个性化配方或者个性化排名配方

  6. In解决方案配置,如果您的数据具有 EVENT_TYPE 或 EVENT_VALE_TENTANT 列,请使用以下字段选择 Amazon Personalize 在训练模型时使用的交互数据。

    • 事件类型: 如果您的数据在 EVENT_TYPE 列中有多个事件类型,并且您只想使用单一类型的事件进行训练,则可以选择输入事件类型,例如单击。在训练模型时,Amazon Personalize 将仅使用此类型的事件。您只能输入一种类型。如果您不提供事件类型,Amazon Personalize 将使用所有交互数据来训练模型,而不考虑类型。

    • 事件值阈值: 如果 “交互” 数据集具有 “EVENT_VALUE_阈值” 列,并且您希望基于值训练事件,请根据需要输入一个值。Amazon Personalize Simple (Amazon Simple) 仅具有大于或等于此值的事件来训练模型。如果未提供值,Amazon Simple(无论价值)将使用所有交互数据训练模型。

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

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

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

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

  10. 选择 Next (下一步)

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

优化解决方案 (Amazon CLI)

您只能使用 “用户个性化” 或 “个性化排名” 配方为目标进行优化。要针对附加目标优化解决方案,使用Amazon CLI,创建一个新的解决方案并使用optimizationObjective键在solutionConfig对象。这些区域有:optimizationObjective具有以下字段:

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

  • objectiveSensitivity:指定解决方案在生成建议时对目标的重视级别。目标敏感度级别配置 Amazon Personalize 余额如何根据您的目标和通过互动数据相关性推荐商品。这些区域有:objectiveSensitivityOFF, 低,MEDIUM或者HIGH。有关更多信息,请参阅 平衡目标重点和相关性

以下是一个示例配置文件create-solution Amazon CLI命令。将solution namedataset group arn, 和recipe arn值与您自己的值。

适用于optimizationObjective,将替换为COLUMN_NAME使用与您的目标相关的 “项目” 数据集中的数字元数据列名称。适用于objectiveSensitivity中,指定 “关”、“低”、“中” 或 “高”。

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开发工具包)

您只能使用 “用户个性化” 或 “个性化排名” 配方为目标进行优化。

要针对附加目标优化解决方案,使用Amazon软件开发工具包,创建新解决方案并使用optimizationObjective键在solutionConfig解决方案的对象。这些区域有:optimizationObjective具有以下字段:

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

  • objectiveSensitivity:指定解决方案在生成建议时对目标的重视级别。目标敏感度级别配置 Amazon Personalize 余额如何根据您的目标和通过互动数据相关性推荐商品。这些区域有:objectiveSensitivityOFFLOWMEDIUM或者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使用与您的目标相关的 “项目” 数据集中的数字元数据列名称。适用于objectiveSensitivity中,指定 “关”、“低”、“中” 或 “高”。

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 服务客户端、数据集组的 Amazon 资源名称 (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 "";