Amazon Personalize
開発者ガイド

データセットとスキーマ

Amazon Personalize は、3 種類の履歴データセット型を認識します。各型には、値がデータセット型と一致する名前キーを持つ関連スキーマがあります。3 つの型を以下に示します。

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

  • Items – このデータセットでは、アイテムに関するメタデータを提供します。これには、価格、SKU タイプ、在庫状況などの情報が含まれます。

  • Interactions – このデータセットは、ユーザーとアイテム間の過去のインタラクションデータを提供することを目的としています。

データセット型の Users や Items はメタデータ型と呼ばれ、特定のレシピでのみ使用されます。詳細については、「事前定義済みレシピの使用」を参照してください。メタデータのデータセットについては、USER_ID および ITEM_ID を除くすべての文字列が、以下の例に示すように、スキーマで categorical としてマークされている必要があります。

注記

データセットグループには、各タイプのデータセットを 1 つのみ含めることができます。

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

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

USER_ID (string)

1 メタデータフィールド

アイテム

ITEM_ID (string)

1 メタデータフィールド

インタラクション

USER_ID (string)

ITEM_ID (string)

TIMESTAMP (long)

EVENT_TYPE (string)

EVENT_VALUE (string)

データセットを Amazon Personalize に追加する前に、そのデータセットにスキーマを定義する必要があります。各データセットタイプには特定の要件があります。Amazon Personalize のスキーマは Avro 形式で定義します。詳細については、「Apache Avro」を参照してください。

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

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

  • 各データセットタイプには、スキーマに特定のフィールドが必要です。必須フィールドとその必須データ型を定義する必要があります。

  • 一部のスキーマでは、フィールド名のキーワードが予約されています。スキーマのフィールド名に予約キーワードを使用する場合は、必要なデータ型として定義する必要があります。

  • 必須フィールドと予約キーワードは「メタデータフィールド」とみなされません。

  • 必須ではない、または予約キーワードを使用しない追加されたフィールドはメタデータです。メタデータフィールドは、文字列型または非文字列型のいずれかです。

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

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

  • スキーマとその関連データセットには、最大 5 つのメタデータフィールドを含めることができます。

以下の例は、インタラクションスキーマを示しています。EVENT_TYPE フィールドおよび EVENT_VALUE フィールドはオプションであり、Amazon Personalize によって認識される予約キーワードです。

{ "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "EVENT_TYPE", "type": "string" }, { "name": "EVENT_VALUE", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" }

次の例は、Avro 形式のユーザースキーマを示しています。[USER_ID] フィールドのみが必須です。AGE および GENDER フィールドはメタデータです。

{ "type": "record", "name": "Users", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "AGE", "type": "int" }, { "name": "GENDER", "type": "string", "categorical": true } ], "version": "1.0" }

次の例は、アイテムスキーマを示しています。[ITEM_ID] フィールドのみが必須です。表示される GENDER フィールドはメタデータです。

{ "type": "record", "name": "Items", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "ITEM_ID", "type": "string" }, { "name": "GENRE", "type": "string", "categorical": true } ], "version": "1.0" }

AWS コンソールを使用している場合は、入力データのデータセットの作成時に新しいスキーマを作成します。既存のスキーマを選択することもできます。詳細については、「ステップ 1: トレーニングデータをインポートする」を参照してください。

AWS CLI を使用している場合、「ステップ 1: トレーニングデータをインポートする」の例を参照してください。

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

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