追加の目的のためのソリューションの最適化 - Amazon Personalize

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

追加の目的のためのソリューションの最適化

Amazon Personalize の主な目的は、履歴およびリアルタイムのインタラクションデータに基づいて、ユーザーにとって最も関連性の高いアイテムを予測することです。これらは、ユーザーが操作する可能性が最も高いアイテムです (例えば、ユーザーがクリックする可能性が最も高いアイテム)。ストリーミング時間 (分) の最大化や収益の増加など、追加の目的がある場合は、関連性と目的の両方に基づいてレコメンデーションを生成するソリューションを作成できます。

null 以外の数値列メタデータ属性を持つ Interactions データセットと Items データセットを作成した後、アイテムメタデータに基づいて追加の目的に最適化されたソリューションを作成できます。Amazon Personalize コンソール、AWS Command Line Interface (AWS CLI)、または AWS SDK を使用できます。

追加の目的のためにソリューションを最適化するには、User-Personalization レシピまたは Personalized-Ranking レシピを使用して新しいソリューションを作成し、目的に関連する Items データセットの数値メタデータ列を選択します。レコメンデーションを生成する場合、Amazon Personalize は、このデータ列の値がより高いアイテムをより重要視します。例えば、ストリーミング時間 (分) を最大化するために VIDEO_LENGTH 列を選択したり、収益を最大化するために PRICE 列を選択したりできます。

目的の要件は次のとおりです。

  • 目的に選択できる列は 1 つだけです。

  • 列は、スキーマ内の数値型である必要があります。

  • 列にスキーマ内の null タイプを含めることはできません。

スキーマとデータ型の詳細については、「データセットとスキーマ」を参照してください。

目的の重点の置き方と関連性のバランシング

関連性よりも目的に基づいてアイテムを推奨する場合、トレードオフが生じる可能性があります。例えば、レコメンデーションを通じて収益を増やしたい場合、高額なアイテムのみのレコメンデーションでは、ユーザーとの関係においてアイテムの関連性が低下し、ユーザーのエンゲージメントとコンバージョンが減少する可能性があります。

関連性と目的のバランスを設定するには、ソリューションを作成するときに、次の目的の感度レベルのいずれかを選択します。

  • Off (オフ): Amazon Personalize は、主にインタラクションデータを使用して、ユーザーにとって最も関連性の高いアイテムを予測します。

  • Low (低): Amazon Personalize は、目的をあまり重要視しません。インタラクションデータを介した関連性がより重要視されます。

  • Medium (中): 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 は、1 以下 0 超の 10 進値に正規化されたすべての rewards_per_user の平均です。値が 1 に近いほど、レコメンデーションから期待できるユーザーあたりの平均利益が大きくなります。

例えば、クリックから得られる収益を最大化することが目的の場合、Amazon Personalize は、ユーザーが上位 25 位の最も高額なレコメンデーションからクリックしたアイテムによって生成された合計収益を、ユーザーがクリックしたすべての推奨アイテムからの収益で除することにより、各ユーザースコアを計算します。その後、Amazon Personalize は、すべてのユーザースコアの正規化された平均を返します。average_rewards_at_k が 1 に近いほど、レコメンデーションから得られるユーザーあたりの平均収益が増大することが期待できます。

メトリクスの生成の詳細については、「メトリクスを使ったソリューションバージョンの評価」を参照してください。

ソリューションの最適化 (コンソール)

Amazon Personalize コンソールを使用して追加の目的のためにソリューションを最適化するには、新しいソリューションを作成し、目的に関連する数値アイテムメタデータの列を選択します。

追加の目的のためにソリューションを最適化するには (コンソール)
  1. https://console.aws.amazon.com/personalize/home で Amazon Personalize コンソールを開き、アカウントにサインインします。

  2. トレーニングに使用するデータセットグループを選択します。

  3. ダッシュボードの [Create solutions] (ソリューションを作成) のセクションで、[Start] (開始) のボタンを選択します。既にソリューションを作成している場合は、[Create solution] (ソリューションを作成) のボタンを選択します。

  4. [Solution name] (ソリューション名) で、ソリューションの名前を指定します。

  5. [Recipe] (レシピ) で、User-Personalization レシピ または Personalized-Ranking レシピ を選択します。

  6. [Solution configuration] (ソリューション設定) で、Interactions データセットに EVENT_TYPE 列または EVENT_TYPE 列と EVENT_VALUE 列の両方がある場合は、オプションで [Event type] (イベントタイプ) と [Event value threshold] (イベント値のしきい値) のフィールドを使用して、モデルのトレーニング時に Amazon Personalize が使用するインタラクションデータを選択します。

    詳細については、「トレーニングに使用するインタラクションデータの選択」を参照してください。

  7. [Objective] (目的) で、目的に関連する Items データセットから数値列を選択します。数値のメタデータ列のみを選択できます。

  8. [Objective sensitivity] (目的の感度) で、レコメンデーションを生成するときに、Amazon Personalize が適用する、追加の目標に対する重点のレベルを選択します。目的の感度は、Amazon Personalize が、目的と、インタラクションデータを介した関連性に基づいて推奨されるアイテムのバランスをとる方法を設定します。詳細については、「目的の重点の置き方と関連性のバランシング」を参照してください。

  9. レシピとビジネスニーズに基づいて、ハイパーパラメータのオプションを設定します。異なるレシピは異なるハイパーパラメータを使用します。使用可能なハイパーパラメータについては、レシピの説明を表示します。 の個々のレシピのドキュメントを参照してください。

  10. [Next] (次へ) を選択します。

  11. [Create solution version] (ソリューションバージョンを作成) のページで、ソリューションの新しいソリューションバージョンを作成します。詳細については、「ソリューションバージョンの作成 (コンソール)」を参照してください。ソリューションバージョンを作成すると、ソリューションバージョンのメトリクスで最適化パフォーマンスを表示できます。最適化パフォーマンスの測定 を参照してください。

ソリューションの最適化 (AWS CLI)

User-Personalization または Personalized-Ranking レシピを使用する場合にのみ、目的に合わせて最適化できます。AWS CLI を使用して追加の目的のためにソリューションを最適化するには、新しいソリューションを作成し、solutionConfig オブジェクトの optimizationObjective キーを使用して目的の詳細を指定します。optimizationObjective には以下のフィールドがあります。

  • itemAttribute: 目的に関連する Items データセットの数値メタデータ列の名前を指定します。

  • objectiveSensitivity: レコメンデーションを生成するときに、ソリューションが目的を重要視するレベルを指定します。目的の感度レベルは、Amazon Personalize が、目的と、インタラクションデータを介した関連性に基づいて推奨されるアイテムのバランスをとる方法を設定します。objectiveSensitivity は、OFF、[LOW] (低)、MEDIUM、または HIGH とすることができます。詳細については、「目的の重点の置き方と関連性のバランシング」を参照してください。

create-solution AWS CLI コマンドの例を次に示します。solution namedataset group arn、および recipe arn の値を独自の値に置き換えます。

optimizationObjective について、COLUMN_NAME を、目的に関連する Items データセットの数値メタデータ列名に置き換えます。objectiveSensitivity について、[OFF] (オフ)、[LOW] (低)、[MEDIUM] (中)、または [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 SDK)

User-Personalization または Personalized-Ranking レシピを使用する場合にのみ、目的に合わせて最適化できます。

AWS SDK を使用して追加の目的のためにソリューションを最適化するには、新しいソリューションを作成し、当該ソリューション向けに solutionConfig オブジェクトの optimizationObjective キーを使用して目的の詳細を指定します。optimizationObjective には以下のフィールドがあります。

  • itemAttribute: 目的に関連する、データグループの Items データセットの数値メタデータ列の名前を指定します。

  • objectiveSensitivity: レコメンデーションを生成するときに、ソリューションが目的を重要視するレベルを指定します。目的の感度レベルは、Amazon Personalize が、目的と、インタラクションデータを介した関連性に基づいて推奨されるアイテムのバランスをとる方法を設定します。objectiveSensitivity は、OFFLOWMEDIUM、または HIGH にすることができます。詳細については、「目的の重点の置き方と関連性のバランシング」を参照してください。

次のコードを使用して、AWS SDK for Python (Boto3) または AWS SDK for Java 2.x で追加の目的を持つソリューションを作成します。

ソリューションの準備が整ったら、新しいソリューションバージョンを作成します (コードの例については、「ソリューションバージョンの作成 (AWS SDK)」を参照してください)。ソリューションバージョンを作成すると、ソリューションバージョンのメトリクスで最適化パフォーマンスを表示できます。最適化パフォーマンスの測定 を参照してください。

SDK for Python (Boto3)

追加の目的向けに最適化されたソリューションを作成するには、次の create_solution メソッドを使用します。solution namedataset group arn、および recipe arn の値を独自の値に置き換えます。

optimizationObjective について、COLUMN_NAME を、目的に関連する Items データセットの数値メタデータ列名に置き換えます。objectiveSensitivity について、[OFF] (オフ)、[LOW] (低)、[MEDIUM] (中)、または [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 リソースネーム (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 サンプルリポジトリの objective_optization フォルダーを参照してください。 GitHub