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
値があります。有効な負の値は、
0
、n
、no
、f
、およびfalse
です。有効な正の値は、
1
、y
、yes
、t
、およびtrue
です。Amazon ML はバイナリ入力の大文字と小文字は無視し、周囲の空白は取り除きます。たとえば、
" FaLSe "
は有効なバイナリ値です。同じデータソース内で、使用するバイナリ値を混在させることができます (true
、no
、および1
など)。バイナリ属性のための Amazon ML の出力は、0
と1
のみです。 - カテゴリ
-
限られた数の一意の文字列値を取る属性に
CATEGORICAL
を選択します。たとえば、ユーザー ID、月、郵便番号はカテゴリ値です。カテゴリ属性は単一文字列として扱われ、さらにトークン分割されることはありません。 - 数値
-
数量を値として取る属性には
NUMERIC
を選択します。たとえば、温度、重量、およびクリック率は数値です。
数字を含むすべての属性が数値であるとは限りません。日付、ID などのカテゴリ属性は、多くの場合、数字で表されます。数値とみなされるには、数字が別の数字と比較できる必要があります。たとえば、顧客 ID
664727
からは顧客 ID124552
について何も分かりませんが、重量10
という属性は、その属性が重量5
を持つ属性よりも重いことを意味します。日付は、ある月の 1 日が別の月の 2 日よりも前あるいは後のどちらにでも来る可能性があるため、数値ではありません。注記
スキーマの作成に Amazon ML を使用する場合は、数字を使用するすべての属性に
Numeric
データ型が割り当てられます。Amazon ML がスキーマを作成する場合は、誤った割り当てをチェックし、それらの属性をCATEGORICAL
に設定します。 - [Text] (テキスト)
-
単語の文字列である属性には
TEXT
を選択します。テキスト属性は、読み込むとき Amazon ML によりトークンに変換され、空白で区切られます。たとえば、
email subject
はemail
とsubject
になり、email-subject here
はemail-subject
とhere
になります。
トレーニングスキーマの変数のデータ型が評価スキーマの変数のデータ型と一致しない場合、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 つのオプションがあります。
-
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 となります。
-
Amazon ML API を使用してスキーマを提供します。
Amazon ML API を呼び出してデータソースを作成する予定の場合は、スキーマファイルを Amazon S3 にアップロードして、
CreateDataSourceFromS3
API のDataSchemaLocationS3
属性でそのファイルへの URI を提供します。詳細については、「CreateDataSourceFromS3」を参照してください。最初に Amazon S3 に保存する代わりに、
CreateDataSource
*APIs
のペイロードで直接スキーマを提供することができます。これを行うには、DataSchema
、CreateDataSourceFromS3
、またはCreateDataSourceFromRDS
API のCreateDataSourceFromRedshift
属性にスキーマの文字列をすべて配置します。詳細については、「Amazon 機械学習 API リファレンス」を参照してください。