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

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

データセットとスキーマ

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

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

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

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

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

データセットは、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 (floatnull)

印象 (string)

RECOMMENDATION_ID (stringnull)

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

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

  • スキーマは、Avro フォーマット。サポートする Avro データ型については、」スキーマのデータ型

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

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

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

スキーマのデータ型

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

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

  • float

  • double

  • int

  • long

  • 文字列

  • boolean

  • null

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

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

メタデータフィールド

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

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

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

  • string の独自のメタデータフィールドを追加する場合は 、categorical 属性を含める必要があります。そうしないと、Amazon Personalize はモデルのトレーニング時にフィールドを使用しません。

予約キーワード

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

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

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

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

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

  • 推奨ID: 以前のレコメンデーションを暗黙のインプレッションデータとして使用する Interactions データセットの場合、オプションでRECOMMENDATION_IDtype fieldsStringオプションでnull

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

スキーマの例

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

AWS Python 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 を使用して、使用可能なスキーマのリストを取得できます。

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