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

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

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

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

数値メタデータの列を持つ Interactions データセットと Items データセットを作成したら、アイテムのメタデータに基づいて追加の目的に最適化されたソリューションを作成できます。追加の目標に合わせてソリューションを最適化するには、User Personalized Ranking レシピまたは Personalized Ranking レシピを使用して新しいソリューションを作成し、目標に関連する項目データセットの数値メタデータ列を選択します。たとえば、ストリーミング分を最大化するには VIDEO_LENGTH 列を選択し、収益を最大化するには PRICE 列を選択します。

Amazon Personalize では、このデータ列の値が高い商品がより重要になります。目標に対して選択できる列は 1 つだけです。メタデータは数値である必要があります。

目標に合わせてソリューションを最適化するには、Amazon Personalize eコンソールのAWS Command Line Interface(AWS CLI)、またはAWSSDK

客観的強調と関連性のバランスをとる

関連性よりも目的に基づいて商品を推奨する場合、トレードオフが発生する可能性があります。たとえば、レコメンデーションによって収益を増加させたい場合、高価なアイテムのみに対するレコメンデーションによって、ユーザーとの関連性が低下し、ユーザーのエンゲージメントとコンバージョンが減少する可能性があります。

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

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

  • 低: Amazon Personalize、あなたの目標を重視しません。インタラクションデータの関連性がより重要です。

  • ミディアム: Amazon Personalize、インタラクションデータを通じて、お客様の目的と関連性を均等に強調します。

  • 高: Amazon Personalize、お客様の目標をより重視します。インタラクションデータの関連性はあまり重要ではありません。

最適化パフォーマンスの測定

最適化の目的を持つソリューションのソリューションバージョンを作成(モデルのトレーニング)すると、Amazon Personalize はaverage_rewards_at_kメトリクス。のスコアaverage_rewards_at_kは、ソリューションバージョンが目的を達成するためにどれほどうまくいくかを表します。Amazon Personalize では、インタラクションによって生成された報酬の合計を、レコメンデーションが目標を達成する方法(関連性ではなく)に基づいてランク付けされた上位25のレコメンデーションから可能な報酬の合計で割って算出されます。結果は、値が1に近いほど、推奨値から期待できるユーザーあたりの平均利益が増えるように正規化されます。

たとえば、収益を最大化することが目的である場合、Amazon Personalize は、インタラクションによって生成された総収益(たとえば、ユーザーがクリックしたすべての商品からの収益)を、収益生成元上位 25 の推奨収益の合計で割ります。近いほど、average_rewards_at_kが 1 の場合、レコメンデーションからユーザーあたりの平均収益が増加すると予想されます。

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

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

Amazon Personalize eコンソールで追加の目標に合わせてソリューションを最適化するには、新しいソリューションを作成し、目標に関連する数値項目メタデータの列を選択します。

追加の目的に応じてソリューションを最適化するには (コンソール)

  1. で Amazon Personalize コンソールを開きます。https://console.aws.amazon.com/personalize/homeにアクセスし、アカウントにサインインします。

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

  3. ソリューションを作成します。ダッシュボードの [ダッシュボード] セクションで、[を起動ボタンを使用します。ソリューションをすでに作成している場合は、[OK] を選択します。ソリューションを作成します。ボタンを使用します。

  4. を使用する場合ソリューション名で、ソリューションの名前を指定します。

  5. を使用する場合レシピには、次のいずれかを選択します。ユーザー・パーソナライゼーションレシピまたはパーソナライズされたランキングレシピ

  6. Eclipseソリューション構成を使用する場合、インタラクションデータセットに EVENT_TYPE 列または両方の EVENT_TYPE 列と EVENT_VALUE 列がある場合は、オプションでイベントタイプおよびイベント値のしきい値フィールドを使用して、Amazon Personalize がモデルをトレーニングするときに使用するインタラクションデータを選択します。

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

  7. を使用する場合目的で、目的に関連する数値列を Items データセットから選択します。数値メタデータ列のみを選択できます。

  8. を使用する場合客観的な感度で、レコメンデーションを生成するときに、Amazon Personalize eの追加目標に重点を置くレベルを選択します。目標の感度によって、Amazon Personalize がお客様の目標と関連性に基づいて推奨商品のバランスを調整する方法が構成されます。詳細については、「客観的強調と関連性のバランスをとる」を参照してください。

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

  10. [Next] を選択します。

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

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

「ユーザー・パーソナライゼーション」または「パーソナライゼーション-ランク」レシピを使用してのみ、目標に合わせて最適化できます。追加の目的に応じてソリューションを最適化するには、AWS CLIを使用して、新しいソリューションを作成し、目的の詳細を指定します。optimizationObjectiveキーを使用します。solutionConfigオブジェクト。-optimizationObjectiveには以下のフィールドがあります。

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

  • objectiveSensitivity: レコメンデーションを生成するときにソリューションが目標に配置する強調レベルを指定します。目標感度レベルでは、Amazon Personalize がお客様の目標と関連性に基づいて推奨項目のバランスを調整する方法を設定します。-objectiveSensitivityできる。OFF, 低,MEDIUMまたはHIGH。詳細については、「客観的強調と関連性のバランスをとる」を参照してください。

の例を次に示します。create-solution AWS CLIコマンドを実行します。置き換え、solution name,dataset group arn, およびrecipe arn値を自分の値に設定します。

を使用する場合optimizationObjective、置き換えCOLUMN_NAMEは、目標に関連する Items データセットの数値メタデータ列名に置き換えます。を使用する場合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\"}}"

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

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

「ユーザー・パーソナライゼーション」または「パーソナライゼーション-ランク」レシピを使用してのみ、目標に合わせて最適化できます。

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

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

  • objectiveSensitivity: レコメンデーションを生成するときにソリューションが目標に配置する強調レベルを指定します。目標感度レベルでは、Amazon Personalize がお客様の目標と関連性に基づいて推奨項目のバランスを調整する方法を設定します。-objectiveSensitivityできる。OFF,LOW,MEDIUMまたはHIGH。詳細については、「客観的強調と関連性のバランスをとる」を参照してください。

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

ソリューションの準備ができたら、新しいソリューションバージョンを作成します(たとえば、ソリューションバージョンの作成 (AWSSDK)). ソリューションバージョンを作成したら、ソリューションバージョンのメトリックを使用して最適化パフォーマンスを表示できます。「最適化パフォーマンスの測定」を参照してください。

SDK for Python (Boto3)

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

を使用する場合optimizationObjective、置き換えCOLUMN_NAMEは、目標に関連する Items データセットの数値メタデータ列名に置き換えます。を使用する場合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 "";

サンプルJupyter ノートブック

追加の目標ベースのアイテムメタデータ用に最適化されたソリューションの作成方法を示すサンプル Jupyter ノートブックについては、「Handling with」を参照してください。optimizationフォルダを表示します。Amazon Personalize サンプルGitHub リポジトリ