

Amazon Machine Learning サービスの更新や、その新しいユーザーの受け入れは行っていません。このドキュメントは既存のユーザー向けに提供されていますが、更新は終了しています。詳細については、「[Amazon Machine Learning とは](https://docs.aws.amazon.com/machine-learning/latest/dg/what-is-amazon-machine-learning.html)」を参照してください。

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

# Amazon ML のデータスキーマを作成する
<a name="creating-a-data-schema-for-amazon-ml"></a>

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

## スキーマの例
<a name="schema-example"></a>

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 フィールドの使用
<a name="using-the-targetattributename-field"></a>

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

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

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

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

```
"targetAttributeName": "exampleAttributeTarget",
```

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

## rowID フィールドの使用
<a name="using-the-rowid-field"></a>

 `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 フィールドの使用
<a name="assigning-data-types"></a>

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` からは顧客 ID `124552` について何も分かりませんが、重量 `10` という属性は、その属性が重量 `5` を持つ属性よりも重いことを意味します。日付は、ある月の 1 日が別の月の 2 日よりも前あるいは後のどちらにでも来る可能性があるため、数値ではありません。  
スキーマの作成に Amazon ML を使用する場合は、数字を使用するすべての属性に `Numeric` データ型が割り当てられます。Amazon ML がスキーマを作成する場合は、誤った割り当てをチェックし、それらの属性を `CATEGORICAL` に設定します。

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

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

各データ型に関連付けられた統計の詳細については、「[記述統計](data-insights.md#descriptive-statistics)」を参照してください。

## Amazon ML にスキーマを提供する
<a name="methods-for-creating-a-data-schema"></a>

すべてのデータソースにはスキーマが必要です。Amazon ML にスキーマを提供するには、2 つの方法から選択できます。
+  Amazon ML が入力データファイル内の各属性のデータ型を推測し、自動的にスキーマを作成するのを許可します。
+  Amazon Simple Storage Service (Amazon S3) データをアップロードするときに、スキーマファイルを提供します。

### Amazon ML によるスキーマの作成を許可する
<a name="allowing-amazon-create-your-schema"></a>

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

### スキーマを提供する
<a name="providing-schema-to-amazon-ml"></a>

 スキーマファイルを作成したら、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 となります。

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

    Amazon ML API を呼び出してデータソースを作成する予定の場合は、スキーマファイルを Amazon S3 にアップロードして、`CreateDataSourceFromS3` API の `DataSchemaLocationS3` 属性でそのファイルへの URI を提供します。詳細については、「[CreateDataSourceFromS3](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_CreateDataSourceFromS3.html)」を参照してください。

    最初に Amazon S3 に保存する代わりに、`CreateDataSource`\* `APIs` のペイロードで直接スキーマを提供することができます。これを行うには、`DataSchema`、`CreateDataSourceFromS3`、または `CreateDataSourceFromRDS` API の `CreateDataSourceFromRedshift` 属性にスキーマの文字列をすべて配置します。詳細については、「[Amazon 機械学習 API リファレンス](https://docs.aws.amazon.com/machine-learning/latest/APIReference/)」を参照してください。