トレーニングに使用するアイテムインタラクションデータの選択 - Amazon Personalize

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

トレーニングに使用するアイテムインタラクションデータの選択

Amazon Personalize がソリューションバージョンの作成 (モデルのトレーニング) 時に使用するアイテムインタラクションデータセットのイベントを選択できます。トレーニングの前にアイテムインタラクションデータを選択すると、データの関連するサブセットのみをトレーニングに使用したり、ノイズを除去して、より最適化されたモデルをトレーニングしたりできます。アイテムインタラクションデータセットの詳細については、「 スキーマ」および「アイテムインタラクションデータセット」を参照してください。

アイテムインタラクションデータは次のように選択できます。

  • タイプに基づいてレコードを選択する - ソリューションを設定するときに、アイテムインタラクションデータセットの EVENT_TYPE 列にイベントタイプが含まれている場合、オプションで、トレーニングで使用するイベントタイプを指定できます。例えば、アイテムインタラクションデータセットに [購入]、[クリック]、および [視聴] イベントタイプが含まれており、Amazon Personalize で [視聴] イベントのみを使用してモデルをトレーニングする場合、ソリューションを設定するときに、Amazon Personalize がトレーニングで使用する event type として [視聴] を指定します。

    アイテムインタラクションデータセットの EVENT_TYPE 列に複数のイベントタイプがあり、ソリューションを設定するときにイベントタイプを指定しなかった場合、Amazon Personalize は、タイプにかかわらず、すべてのアイテムインタラクションデータを同じ重みでトレーニングに使用します。

  • タイプと値に基づいてレコードを選択する - ソリューションを設定するときに、アイテムインタラクションデータセットに EVENT_TYPE フィールドと EVENT_VALUE フィールドが含まれている場合、トレーニングからレコードを除外するためのしきい値として特定の値を設定できます。例えば、EVENT_TYPE が [watch] (視聴) のイベントの EVENT_VALUE データが、ユーザーが視聴した動画のパーセンテージ (%) である場合であって、イベント値のしきい値を 0.5 に、イベントタイプを [watch] (視聴) に設定する場合、Amazon Personalize は、EVENT_VALUE が 0.5 以上の [watch] (視聴) インタラクションイベントのみを使用してモデルをトレーニングします。

イベント値およびイベントタイプによるレコードのフィルタリング (AWS SDK)

以下の手順では、AWS SDK for Python (Boto3) を使用して、トレーニングデータセットをフィルタリングするインタラクションスキーマを作成します。Jupyter (iPython) ノートブックを使用して同じタスクを実行できます。詳細については、「Jupyter (iPython) ノートブックでの Amazon Personalize API の開始方法」を参照してください。

前提条件: 前提条件を満たし、Python 環境が「開始方法 (SDK for Python (Boto3))」の説明に従ってセットアップされていることを確認します。

イベント値またはイベントタイプによりトレーニングデータセットで使用されているレコードをフィルタリングするには
  1. 以下に示すように、"name""type" のキーバリューペアを使用して、インタラクションスキーマを作成し、EVENT_TYPE フィールドと EVENT_VALUE フィールドを含めます。

    import boto3 import json personalize = boto3.client('personalize') # Create a name for your schema schema_name = 'YourSchemaName' # Define the schema for your dataset schema = { "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "EVENT_VALUE", "type": "float" }, { "name": "EVENT_TYPE", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" } # Create the schema for Amazon Personalize create_schema_response = personalize.create_schema( name = schema_name, schema = json.dumps(schema) ) #To get the schema ARN, use the following lines schema_arn = create_schema_response['schemaArn'] print('Schema ARN:' + schema_arn )
  2. スキーマに一致するように入力データをフォーマットします。コードサンプルについては、「データ形式ガイドライン」を参照してください。

  3. Amazon Simple Storage Service (Amazon S3) バケットにデータをアップロードします。コードサンプルについては、「Amazon S3 バケットへのアップロード」を参照してください。

  4. CreateDatasetImportJob API を使用して Amazon Personalize にデータをインポートします。ソリューションを作成するときに必要になるため、データセットグループの Amazon リソースネーム (ARN) を記録してください。コードサンプルについては、「バルクレコードのインポート (AWS SDK)」を参照してください。

  5. ソリューションの作成時に使用するレシピの ARN を取得します。ソリューションを作成するときに必要になります。

    # Display the ARNs of the recipes recipe_list = personalize.list_recipes() for recipe in recipe_list['recipes']: print(recipe['recipeArn']) # Store the ARN of the recipe that you want to use recipe_arn = "arn:aws:personalize:::recipe/aws-recipe-name"
  6. CreateSolution API を呼び出します。イベントタイプ (例: “purchase”) を指定する場合、それを eventType パラメータに設定します。イベント値 (たとえば、10) を指定する場合、それを eventValueThreshold パラメータに設定します。イベントタイプとイベント値の両方を指定することもできます。

    # Create the solution create_solution_response = personalize.create_solution( name = "your-solution-name", datasetGroupArn = dataset_group_arn, recipeArn = recipe_arn, eventType = 'watched', solutionConfig = { "eventValueThreshold": "0.5" } ) # Store the solution ARN solution_arn = create_solution_response['solutionArn'] # Use the solution ARN to get the solution status solution_description = personalize.describe_solution(solutionArn = solution_arn)['solution'] print('Solution status: ' + solution_description['status'])
  7. ソリューションがある場合は、そのソリューションを使用して、CreateSolutionVersion リクエストでソリューション ARN を指定して、モデルをトレーニングします。

    # Create a solution version create_solution_version_response = personalize.create_solution_version(solutionArn = solution_arn) # Store the solution version ARN solution_version_arn = create_solution_version_response['solutionVersionArn'] # Use the solution version ARN to get the solution version status. solution_version_description = personalize.describe_solution_version( solutionVersionArn = solution_version_arn)['solutionVersion'] print('Solution version status: ' + solution_version_description['status'])

ステータスが ACTIVE になると、トレーニングは完了です。詳細については、「ソリューションとソリューションバージョンの作成」を参照してください。

モデルをトレーニングしたら、そのパフォーマンスを評価する必要があります。モデルを最適化するには、eventValueThreshold またはその他のハイパーパラメータを調整する必要があります。詳細については、「メトリクスを使用してソリューションバージョンを評価する」を参照してください。