データセットとスキーマ - Amazon Personalize

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

データセットとスキーマ

Amazon Personalizeデータセットはデータのコンテナです。データセットには、次の 3 つの種類があります。

  • ユーザー— このデータセットには、ユーザーに関するメタデータが格納されます。これには、年齢、性別、ロイヤリティメンバーシップなど、パーソナライゼーションシステムで重要なシグナルとなり得る情報が含まれます。

  • アイテム— このデータセットには、アイテムに関するメタデータが格納されます。これには、価格、SKU タイプ、在庫状況などの情報が含まれます。

  • インタラクション— このデータセットは、ユーザーとアイテム間の対話からの履歴データとリアルタイムデータを格納します。このデータには、ユーザーの場所やデバイス(モバイル、タブレット、デスクトップなど)など、ユーザーの閲覧コンテキストに関するインプレッションデータやコンテキストメタデータを含めることができます。少なくとも、インタラクションデータセットを作成する必要があります。

データセット型の Users や Items はメタデータ型と呼ばれ、特定のレシピでのみ使用されます。詳細については、「ステップ 1: レシピの選択」を参照してください。

データセットは、Amazon Personalize データセットグループ内に編成されます。データセットグループには、各タイプのデータセットを 1 つのみ含めることができます。データセットごとにスキーマが関連付けられている必要があります。Aschemaは、Amazon Personalize にデータの構造を通知し、Amazon Personalize がデータを解析できるようにします。スキーマには、値がデータセット型と一致する必要がある名前キーがあります。

トレーニングデータを Amazon Personalize にインポートするときに、データセットとスキーマを作成します。詳細については、「」を参照してください。データの準備とインポート

データセットとスキーマの要件

次の表に示すように、各データセットには必須フィールド、予約キーワード、および必須のデータ型があります。

データセットタイプ 必須フィールド 予約キーワード
ユーザー

USER_ID (string)

1 メタデータフィールド (カテゴリstringまたは数値型)

アイテム

ITEM_ID (string)

1 つのメタデータフィールド (カテゴリまたはテキストstringフィールドまたは数値フィールド)

TIMESTAMP (long)

インタラクション

USER_ID (string)

ITEM_ID (string)

TIMESTAMP (long)

EVENT_TYPE (string)

EVENT_VALUE (float,null)

印象 (string)

RECOMMENDATION_ID (string,null)

データセットを Amazon Personalize に追加する前に、そのデータセットにスキーマを定義する必要があります。スキーマを定義してデータセットを作成すると、スキーマを変更できなくなります。

スキーマを作成するときは、以下のガイドラインに従う必要があります。

  • スキーマは、Avro 形式。サポートする Avro データ型については、スキーマのデータ型

  • スキーマフィールドは任意の順序で表示できますが、データファイル内の対応する列ヘッダーの順序と一致する必要があります。

  • 各データセットタイプには、スキーマ内に特定の非メタデータフィールドが必要です(前の表を参照)。必須フィールドをその必須データ型として定義する必要があります。

  • スキーマは、ネストされた構造のないフラット JSON ファイルである必要があります。たとえば、フィールドを複数のサブフィールドの親にすることはできません。

  • スキーマフィールドには、一意の英数字の名前が必要です。たとえば、両方のGENRES_FIELD_1フィールドとGENRESFIELD1fields。

スキーマのデータ型

スキーマは、Avro 形式。Amazon Personalize は、配列やマップなどの複雑なタイプをサポートしていません。カテゴリメタデータや表示回数データなど、複数の値を持つフィールドの場合は、文字列。データの書式を設定する場合は、縦棒文字「|」を使用して各値を区切ります。

私たちは、フィールドのための次のAvroタイプのみをサポートしています(予約キーワードには、追加のタイプ要件があります。 ):

  • float

  • double

  • int

  • long

  • 文字列

  • ブール値 (値trueおよびfalseはデータでは小文字でなければなりません)

  • null

次を使用できます。nullforEVENT_VALUEおよびRECOMMENDATION_ID予約済みキーワード、インタラクション、ユーザー、アイテムのメタデータフィールドです。の追加null型をフィールドに追加すると、不完全なデータ(空白の値を持つメタデータなど)を使用して、パーソナライズされたレコメンデーションを生成できます。次の例では、GERIENS フィールドに NULL 型を追加する方法を示します。

{ "name": "GENRES", "type": [ "null", "string" ], "categorical": true }

メタデータフィールド

メタデータには、必須ではない、または予約キーワードを使用しない文字列型フィールドまたは文字列型フィールドが含まれます。メタデータスキーマには、次の制約があります。

  • ユーザーとアイテムのスキーマには、メタデータフィールドが少なくとも 1 つ必要です。

  • Users スキーマには最大 5 つのメタデータフィールド、Items スキーマには最大 50 個のメタデータフィールドを追加できます。

  • type の独自のメタデータフィールドを追加する場合stringを含める必要があります。categorical属性やtextual属性 (Items スキーマのみが textual 属性を持つフィールドをサポートします)。そうしないと、Amazon Personalize はモデルのトレーニング時にフィールドを使用しません。

予約キーワード

予約済みキーワードは、メタデータ以外のオプションのフィールドです。これらのフィールドは、使用時に必須のデータ型としてフィールドを定義する必要があるため、予約済みと見なされます。予約済みキーワードは次のとおりです。

  • EVENT_TYPE: 1 つ以上のイベントタイプを持つ Interactions データセットの場合 (をクリックします。およびダウンロードを使用するには、EVENT_TYPEfields。EVENT_TYPE フィールドは、string

  • EVENT_VALUE: ユーザーが視聴した動画の割合など、イベントの値データを含むインタラクションデータセットの場合は、EVENT_VALUE型付きフィールドfloatオプションでnull

  • TIMESTAMP: 各アイテムの作成日のタイムスタンプを持つ Items データセットでは、CREATION_TIMESTAMP型を持つフィールドlong。Amazon Personalize の使用CREATION_TIMESTAMPデータを使用して、アイテムの年齢を計算し、それに応じてレコメンデーションを調整します。「」を参照してください作成のタイムスタンプデータ

  • 印象: インプレッション数が明示的なインタラクションデータセットの場合は、IMPRESSION型付きフィールドString。インプレッションは、ユーザーが特定のアイテムと対話したとき(クリックまたは視聴したときなど)に表示されたアイテムのリストです。詳細については、「」を参照してください。インプレッションデータ

  • 推奨ID: 以前のレコメンデーションを暗黙のインプレッションデータとして使用する Interactions データセットの場合、オプションでRECOMMENDATION_ID型付きフィールドStringオプションでnull

    追加する必要はありません。RECOMMENDATION_IDフィールドAmazon Personalize、レコメンデーションの生成時に暗黙的なインプレッションを使用できます。渡すことができますrecommendationId PutEvents それなしで操作します。詳細については、「」を参照してください。インプレッションデータ

スキーマの例

データセットタイプのスキーマの例については、以下のセクションを参照してください。

スキーマを作成するAWSPython SDK

  1. 使用する Avro 形式のスキーマを定義します。

  2. スキーマは、デフォルトの Python フォルダにある JSON ファイルに保存されます。

  3. 次のコードを使用してスキーマを作成します。

    import boto3 personalize = boto3.client('personalize') with open('schema.json') as f: createSchemaResponse = personalize.create_schema( name = 'YourSchema', schema = f.read() ) schema_arn = createSchemaResponse['schemaArn'] print('Schema ARN:' + schema_arn )
  4. Amazon Personalize では、新しいスキーマの ARN が返されます。後で使用するために、これを保存します。

Amazon Personalize では、スキーマを管理するためのオペレーションが用意されています。たとえば、 ListSchemas API を使用して、使用可能なスキーマのリストを取得できます。

スキーマを作成した後は、そのスキーマと一致するデータセットで使用します。詳細については、入力データをフォーマットするを参照してください。