Amazon ML のデータスキーマを作成する - Amazon Machine Learning

Amazon Machine Learning サービスの更新や、その新しいユーザーの受け入れは行っていません。このドキュメントは既存のユーザー向けに提供されていますが、更新は終了しています。詳細については、「Amazon Machine Learning とは」を参照してください。

Amazon ML のデータスキーマを作成する

スキーマは、入力データとそれに対応するデータタイプのすべての属性で構成されています。これにより、Amazon ML はデータソース内のデータを理解します。Amazon ML は、スキーマ内の情報を使用して、入力データの読み取りと解釈、統計の計算、正しい属性変換の適用、学習アルゴリズムの微調整を行います。スキーマを指定しない場合、Amazon ML はデータから推測します。

スキーマの例

Amazon ML が入力データを正しく読み取り、正確な予測を生成するには、各属性が正しいデータ型に割り当てられている必要があります。データ型が属性にどのように割り当てられているか、および、属性とデータ型がスキーマにどのように含まれているかの例を見てみましょう。どの顧客が E メールキャンペーンに反応するかを予測するために、「お客様キャンペーン」の例を呼び出します。入力ファイルは 9 つの列がある .csv ファイルです。

1,3,web developer,basic.4y,no,no,1,261,0 2,1,car repair,high.school,no,no,22,149,0 3,1,car mechanic,high.school,yes,no,65,226,1 4,2,software developer,basic.6y,no,no,1,151,0

以下は、このデータのスキーマです。

{     "version": "1.0",     "rowId": "customerId",     "targetAttributeName": "willRespondToCampaign",     "dataFormat": "CSV",     "dataFileContainsHeader": false,     "attributes": [         {             "attributeName": "customerId",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "jobId",             "attributeType": "CATEGORICAL"         }, { "attributeName": "jobDescription", "attributeType": "TEXT" },         {             "attributeName": "education",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "housing",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "loan",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "campaign",             "attributeType": "NUMERIC"         },         {             "attributeName": "duration",             "attributeType": "NUMERIC"         }, { "attributeName": "willRespondToCampaign", "attributeType": "BINARY" } ] }

この例のスキーマファイルでは、rowId の値が customerId となっています。

"rowId": "customerId",

属性 willRespondToCampaign はターゲット属性として定義されています。

"targetAttributeName": "willRespondToCampaign ",

customerId 属性と CATEGORICAL データ型は最初の列に関連付けられていて、jobId 属性と CATEGORICAL データ型は 2 番目の列に関連付けられていて、jobDescription 属性と TEXT データ型は 3 番目の列に関連付けられていて、education 属性と CATEGORICAL データ型は 4 番目の列に関連付けられていて、以下同様に続きます。9 番目の列は willRespondToCampaign 属性と BINARY データ型に関連付けられていて、この属性はターゲット属性としても定義されています。

targetAttributeName フィールドの使用

targetAttributeName 値は、予測する属性の名前です。モデルを作成または評価するときは、targetAttributeName を割り当てる必要があります。

ML モデルのトレーニングや評価をするときは、targetAttributeName は、ターゲット属性の「正しい」回答を含む入力データ内の属性の名前を識別します。Amazon ML は、正解を含むターゲットを使用して、パターンを検出し、ML モデルを生成します。

モデルを評価する際、Amazon ML はターゲットを使用して予測の精度をチェックします。ML モデルを作成して評価したら、割り当てられいない targetAttributeName のデータを使用して、ML モデルで予測を生成することができます。

データソースを作成するとき Amazon ML コンソールで、または、スキーマファイルで、ターゲット属性を定義します。独自のスキーマファイルを作成する場合は、次の構文を使用してターゲット属性を定義します。

"targetAttributeName": "exampleAttributeTarget",

この例で、exampleAttributeTarget はダーゲット属性である入力ファイル内の属性の名前です。

rowID フィールドの使用

row ID は、入力データの属性に関連付けられているオプションのフラグです。指定した場合、row ID とマークされた属性が予測出力に含まれます。この属性を使用すると、予測と観測の対応性を関連付けしやすくなります。良い row ID の例は、カスタマー ID または同様の一意の属性です。

注記

行 ID は参照用です。ML モデルをトレーニングするとき、Amazon ML がそれを使用することはありません。行 ID として属性を選択すると、ML モデルのトレーニングへは使用されなくなります。

データソースを作成するとき Amazon ML コンソールで、または、スキーマファイルで、row ID を定義します。独自のスキーマファイルを作成する場合は、次の構文を使用して row ID を定義します。

"rowId": "exampleRow",

前述の例で、exampleRow は行 ID として定義された入力ファイル内の属性の名前です。

バッチ予測を生成する場合、次のような出力が得られる場合があります。

tag,bestAnswer,score 55,0,0.46317 102,1,0.89625

この例では、RowID は属性 customerId を表します。たとえば、customerId 55 は低い信頼度 (0.46317) で E メールキャンペーンに反応することが予測され、一方、customerId 102 は高い信頼度 (0.89625) で E メールキャンペーンに反応することが予測されます。

AttributeType フィールドの使用

Amazon ML では、属性に 4 つのデータ型があります。

バイナリ

2 つの可能な状態のみを持つ属性に BINARY を選択します (yes または no など)。

たとえば、ある人が新規顧客であるかどうかを追跡するための isNew 属性には、その人が新規顧客であることを示す true 値と、その人が新規顧客ではないことを示す false 値があります。

有効な負の値は、0nnof、および false です。

有効な正の値は、1yyest、および true です。

Amazon ML はバイナリ入力の大文字と小文字は無視し、周囲の空白は取り除きます。たとえば、" FaLSe " は有効なバイナリ値です。同じデータソース内で、使用するバイナリ値を混在させることができます (trueno、および 1 など)。バイナリ属性のための Amazon ML の出力は、01 のみです。

カテゴリ

限られた数の一意の文字列値を取る属性に CATEGORICAL を選択します。たとえば、ユーザー ID、月、郵便番号はカテゴリ値です。カテゴリ属性は単一文字列として扱われ、さらにトークン分割されることはありません。

数値

数量を値として取る属性には NUMERIC を選択します。

たとえば、温度、重量、およびクリック率は数値です。

数字を含むすべての属性が数値であるとは限りません。日付、ID などのカテゴリ属性は、多くの場合、数字で表されます。数値とみなされるには、数字が別の数字と比較できる必要があります。たとえば、顧客 ID 664727 からは顧客 ID 124552 について何も分かりませんが、重量 10 という属性は、その属性が重量 5 を持つ属性よりも重いことを意味します。日付は、ある月の 1 日が別の月の 2 日よりも前あるいは後のどちらにでも来る可能性があるため、数値ではありません。

注記

スキーマの作成に Amazon ML を使用する場合は、数字を使用するすべての属性に Numeric データ型が割り当てられます。Amazon ML がスキーマを作成する場合は、誤った割り当てをチェックし、それらの属性を CATEGORICAL に設定します。

[Text]
(テキスト)

単語の文字列である属性には TEXT を選択します。テキスト属性は、読み込むとき Amazon ML によりトークンに変換され、空白で区切られます。

たとえば、email subjectemailsubject になり、email-subject hereemail-subjecthere になります。

トレーニングスキーマの変数のデータ型が評価スキーマの変数のデータ型と一致しない場合、Amazon ML は評価データ型をトレーニングデータ型に合わせて変更します。例えば、トレーニングデータスキーマが TEXT のデータ型を変数 age に割り当てても、評価スキーマが NUMERIC のデータ型を age に割り当てる場合、Amazon ML は評価データで年齢を NUMERIC ではなく TEXT 変数として扱います。

各データ型に関連付けられた統計の詳細については、「記述統計」を参照してください。

Amazon ML にスキーマを提供する

すべてのデータソースにはスキーマが必要です。Amazon ML にスキーマを提供するには、2 つの方法から選択できます。

  • Amazon ML が入力データファイル内の各属性のデータ型を推測し、自動的にスキーマを作成するのを許可します。

  • Amazon Simple Storage Service (Amazon S3) データをアップロードするときに、スキーマファイルを提供します。

Amazon ML によるスキーマの作成を許可する

Amazon ML コンソールを使用してデータソースを作成すると、Amazon ML は変数の値に基づいた単純なルールを使用してスキーマを作成します。Amazon ML で作成したスキーマを確認し、正確でない場合はデータタイプを修正することを強くお勧めします。

スキーマを提供する

スキーマファイルを作成したら、Amazon ML で使用可能にする必要があります。これには 2 つのオプションがあります。

  1. Amazon ML コンソールを使用してスキーマを提供します。

    コンソールを使用してデータソースを作成し、入力データファイルのファイル名に .schema 拡張子を追加してスキーマファイルを組み込みます。例えば、入力データへの Amazon Simple Storage Service (Amazon S3) URI が s3://my-bucket-name/data/input.csv である場合、スキーマへの URIは s3://my-bucket-name/data/input.csv.schema になります。Amazon ML は、データからスキーマを推測するのではなく、提供されたスキーマファイルを自動的に特定します。

    Amazon ML へのデータ入力としてファイルのディレクトリを使用するには、.schema 拡張子をディレクトリパスに追加します。たとえば、データファイルが s3://examplebucket/path/to/data/ という場所にある場合、スキーマへの URI は s3://examplebucket/path/to/data/.schema となります。

  2. Amazon ML API を使用してスキーマを提供します。

    Amazon ML API を呼び出してデータソースを作成する予定の場合は、スキーマファイルを Amazon S3 にアップロードして、CreateDataSourceFromS3 API の DataSchemaLocationS3 属性でそのファイルへの URI を提供します。詳細については、「CreateDataSourceFromS3」を参照してください。

    最初に Amazon S3 に保存する代わりに、CreateDataSource* APIs のペイロードで直接スキーマを提供することができます。これを行うには、DataSchemaCreateDataSourceFromS3、または CreateDataSourceFromRDS API の CreateDataSourceFromRedshift 属性にスキーマの文字列をすべて配置します。詳細については、「Amazon 機械学習 API リファレンス」を参照してください。