針對其他目標最佳化解決方案 - Amazon Personalize

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

針對其他目標最佳化解決方案

重要

根據預設,所有新解決方案都會使用自動訓練。透過自動訓練,您會在解決方案處於作用中狀態時產生訓練成本。為了避免不必要的成本,您可以在完成後更新解決方案以關閉自動訓練。如需訓練成本的相關資訊,請參閱 Amazon Personalize 定價

如果您使用使用者個人化配方或個人化排名配方,除了最大化關聯性之外,您還可以最佳化目標的 Amazon Personalize 解決方案,例如最大化收入。

使用項目建議配方時,Amazon Personalize 的主要目標是根據歷史和即時項目互動資料,預測使用者最相關的項目。這些是您的使用者最有可能與之互動的項目 (例如,他們最有可能點選的項目)。如果您有其他目標,例如最大化串流分鐘數或增加收入,您可以建立解決方案,根據相關性和目標產生建議。

若要針對其他目標最佳化解決方案,請使用使用者個人化配方或個人化排名配方建立新的解決方案,然後選擇與目標相關的項目資料集中的數值中繼資料欄。產生建議時,Amazon Personalize 更重視此資料欄具有較高值的項目。例如,您可以選擇 VIDEO_LENGTH 欄來最大化串流分鐘,或選擇PRICE欄來最大化收入。

您可以使用 Amazon Personalize 主控台、 AWS Command Line Interface (AWS CLI) 或 AWS SDKs。如需使用 Amazon Personalize 主控台的詳細資訊,請參閱 建立解決方案 (主控台)

指導方針和要求

目標要求如下:

  • 您只能為您的目標選擇一個資料欄。

  • 資料欄在您的結構描述中必須有數值類型。

  • 資料欄在您的結構描述中不能有 null類型。

如需結構描述和資料類型的詳細資訊,請參閱 為 Amazon Personalize 結構描述建立結構描述JSON檔案

平衡目標重點和相關性

根據您的目標而非相關性建議項目時,可能會有權衡。例如,如果您想要透過建議提高收入,僅昂貴項目的建議可能會降低項目與您的使用者的關係,並減少使用者參與度和轉換。

若要設定關聯性與目標之間的平衡,請在建立解決方案時選擇下列其中一個目標敏感度層級:

  • 關閉:Amazon Personalize 主要使用項目互動資料來預測使用者最相關的項目。

  • 低:Amazon Personalize 不太重視您的目標。透過項目互動資料的相關性更為重要。

  • 中:Amazon Personalize 透過項目互動資料,將同等重點放在目標和相關性上。

  • 高: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 會將使用者點擊的項目所產生的總收入除以使用者點擊的所有建議項目中的收入,以計算每個使用者分數。然後,Amazon Personalize 會傳回所有使用者分數的標準化平均值。average_rewards_at_k 越接近 1,平均而言,您可以預期每個使用者從建議中獲得的收入越多。

如需產生指標的詳細資訊,請參閱 使用指標評估 Amazon Personalize 解決方案版本

最佳化解決方案 (AWS CLI)

您只能使用使用者個人化或個人化排名配方來最佳化目標。若要使用 最佳化其他目標的解決方案 AWS CLI,請建立新的解決方案,並使用 solutionConfig 物件中的 optimizationObjective金鑰指定您的目標詳細資訊。optimizationObjective 具有下列欄位:

  • itemAttribute:從與您的目標相關的項目資料集指定數值中繼資料資料欄的名稱。

  • objectiveSensitivity:指定解決方案在產生建議時放置在目標上的重點程度。目標敏感度層級可設定 Amazon Personalize 如何透過項目互動資料,根據您的目標與相關性來平衡建議項目。objectiveSensitivity 可以是 OFF、 LOWMEDIUMHIGH。如需詳細資訊,請參閱平衡目標重點和相關性

以下是 create-solution AWS CLI 命令的範例。將 solution namedataset group arnrecipe arn值取代為您自己的值。

對於 optimizationObjective,將 取代COLUMN_NAME為與您目標相關的項目資料集中的數值中繼資料資料欄名稱。針對 objectiveSensitivity,指定 OFF、MEDIUM、 LOW或 HIGH。

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\"}}"

當您的解決方案準備就緒時,請建立新的解決方案版本 (如需範例命令,請參閱 建立解決方案 (AWS CLI))。建立解決方案版本後,您可以使用解決方案版本指標來檢視最佳化效能。請參閱 測量最佳化效能

最佳化解決方案 (AWS SDKs)

您只能使用使用者個人化或個人化排名配方來最佳化目標。

若要使用 最佳化其他目標的解決方案 AWS SDKs,請建立新的解決方案,並使用解決方案 solutionConfig 物件中的 optimizationObjective金鑰指定您的目標詳細資訊。optimizationObjective 具有下列欄位:

  • itemAttribute:從資料集群組的項目資料集中,指定與您目標相關的數值中繼資料資料欄的名稱。

  • objectiveSensitivity:指定解決方案在產生建議時放置在目標上的重點程度。目標敏感度層級可設定 Amazon Personalize 如何透過項目互動資料,根據您的目標與相關性來平衡建議項目。objectiveSensitivity 可以是 OFFLOWMEDIUMHIGH。如需詳細資訊,請參閱平衡目標重點和相關性

使用下列程式碼,使用 AWS SDK for Python (Boto3) 或 建立具有其他目標的解決方案 AWS SDK for Java 2.x。

當您的解決方案準備就緒時,請建立新的解決方案版本 (例如,程式碼請參閱 建立解決方案版本 (AWS SDKs))。建立解決方案版本後,您可以使用解決方案版本指標來檢視最佳化效能。請參閱 測量最佳化效能

SDK for Python (Boto3)

若要建立針對其他目標最佳化的解決方案,請使用下列create_solution方法。將 solution namedataset group arnrecipe arn值取代為您自己的值。

對於 optimizationObjective,將 取代COLUMN_NAME為與您目標相關的項目資料集中的數值中繼資料資料欄名稱。針對 objectiveSensitivity,指定 OFF、MEDIUM、 LOW或 HIGH。

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 Resource Name (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 "";
SDK for JavaScript v3
// Get service clients and commands using ES6 syntax. import { CreateSolutionCommand, PersonalizeClient } from "@aws-sdk/client-personalize"; // create the personalizeClient const personalizeClient = new PersonalizeClient({ region: "REGION"}); // set the solution parameters. export const createSolutionParam = { datasetGroupArn: 'DATASET_GROUP_ARN', /* required */ recipeArn: 'RECIPE_ARN', /* required */ name: 'NAME', /* required */ solutionConfig: { optimizationObjective: { itemAttribute: "COLUMN_NAME", /* specify the numerical column from the Items dataset related to your objective */ objectiveSensitivity: "MEDIUM" /* specify OFF, LOW, MEDIUM, or HIGH */ } } }; export const run = async () => { try { const response = await personalizeClient.send(new CreateSolutionCommand(createSolutionParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

Jupyter 筆記本範例

如需示範如何建立針對其他目標型項目中繼資料最佳化的解決方案的範例 Jupyter 筆記本,請參閱 Amazon Personalize 範例 GitHub 儲存庫的 objective_optimization 資料夾