

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

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

# 機械学習のデータ変換
<a name="data-transformations-for-machine-learning"></a>

 データは、機械学習モデルのトレーニングに使用されます。良いトレーニングデータの重要な特徴は、学習と一般化のために最適化された方法で提供されることです。この最適なフォーマットでデータをまとめるプロセスは、業界では*機能変換*として知られています。

**Topics**
+ [機能変換の重要性](importance-of-feature-transformation.md)
+ [データレシピを使用した機能変換](feature-transformations-with-data-recipes.md)
+ [customize a recipe](recipe-format-reference.md)
+ [推奨レシピ](suggested-recipes.md)
+ [データ変換リファレンス](data-transformations-reference.md)
+ [データ再配置](data-rearrangement.md)

# 機能変換の重要性
<a name="importance-of-feature-transformation"></a>

 クレジットカードの取引が不正であるかどうかを判断することを目的とした機械学習モデルを考えてみましょう。アプリケーションの背景知識とデータ分析に基づいて、入力データに含めることが重要なデータフィールド (または機能) を決定できます。たとえば、取引金額、販売者名、住所、クレジットカード所有者の住所を学習プロセスに提供するのは重要です。一方、ランダムに生成されたトランザクション ID には情報が含まれておらず (実際にランダムであることが分かっている場合)、有用ではありません。

 どのフィールドを含めるかを決めたら、これらの機能を変換して学習プロセスに役立てます。変換により、入力データにバックグラウンド経験が追加され、機械学習モデルはこの経験からのメリットを得られます。たとえば、次の販売者住所は文字列として表されます。

 「123 Main Street, Seattle, WA 98101」 

 これ自体では、これとまったく同じ住所に関連したパターンの学習にしか役立たないので、表現力が限られています。しかし、それを構成部分に分割すると、「住所」 (123 Main Street)、「市」 (Seattle)、「州」 (WA)、および、「郵便番号」 (98101) などの追加機能を作成できます。これで、学習アルゴリズムは、より多くの異なるトランザクションをグループ化し、より広範なパターンを発見することができます。たとえば、一部の販売者の郵便番号では、他よりも多くの不正行為を経験しているかもしれません。

 機能変換のアプローチと処理の詳細については、「[機械学習の概念](https://docs.aws.amazon.com/machine-learning/latest/dg/machine-learning-concepts.html)」を参照してください。

# データレシピを使用した機能変換
<a name="feature-transformations-with-data-recipes"></a>

 Amazon ML で ML モデルを作成する前に機能を変換する方法は 2 つあります。入力データを Amazon ML に表示する前に直接変換するか、Amazon ML の組み込みデータ変換を使用します。Amazon ML のレシピを使用することができます。これは、事前にフォーマットされた一般的な変換のための手順です。レシピでは、以下を実行できます。
+  組込みの共通マシン学習変換のリストから選択し、個々の変数または変数のグループに適用します 
+  機械学習プロセスで使用できる入力変数と変換の選択を選択します 

 Amazon ML のレシピを使用すると、いくつかの利点があります。Amazon ML はデータ変換を実行するので、自分で実装する必要はありません。さらに、Amazon ML は入力データを読み取っている間に変換を適用し、結果をディスクに保存する途中で学習プロセスに結果を提供するため、高速です。

# レシピ形式リファレンス
<a name="recipe-format-reference"></a>

Amazon ML レシピには、機械学習プロセスの一部としてデータを変換する手順が含まれています。レシピは JSON に似た構文を使用して定義されていますが、通常の JSON の制限の上に追加の制限があります。レシピには以下のセクションがあり、ここに示す順序で表示される必要があります。
+  **グループ** は、複数の変数をグループ化でき、変換の適用がしやすくなります。たとえば、ウェブページのフリーテキスト部分 (タイトル、本文) と関係があるすべての変数のグループを作成し、これらのすべての部分を一度に変換することができます。
+  **割り当て**は、処理中に再利用できる中間の名前付き変数の作成ができます。
+  **出力**は、学習プロセスで使用される変数と、これらの変数に適用される変換 (存在する場合) を定義します。

## グループ
<a name="groups"></a>

 グループ内のすべての変数を一括して変換したり、これらの変数を変換せずに機械学習に使用するために、変数のグループを定義できます。デフォルトでは、Amazon ML は以下のグループを作成します。

 **ALL\$1TEXT、ALL\$1NUMERIC、ALL\$1CATEGORICAL、ALL\$1BINARY –**データソーススキーマで定義された変数に基づくタイプ固有のグループ。

**注記**  
`ALL_INPUTS` でグループを作成することはできません。

 これらの変数は、定義されていないレシピの出力セクションで使用できます。また、既存のグループに変数を追加または削除することで、または、変数のコレクションから直接、カスタムグループを作成することもできます。次の例では、3 つすべてのアプローチとグループ化の割り当ての構文を示します。

```
"groups": {

"Custom_Group": "group(var1, var2)",
"All_Categorical_plus_one_other": "group(ALL_CATEGORICAL, var2)"

}
```

 グループ名はアルファベット文字で始まる必要があり、長さは 1 〜 64 文字です。グループ名がアルファベット文字で始まらない場合、または特殊文字 (, ' " \$1t \$1r \$1n ( ) \$1) が含まれている場合は、その名前を引用符で囲んでレシピに含める必要があります。

## 割り当て
<a name="assignments"></a>

 利便性と可読性のために、1 つまたは複数の変換を中間変数に割り当てることができます。たとえば、email\$1subject という名前のテキスト変数があり、それに小文字の変換を適用すると、結果の変数に email\$1subject\$1lowercase という名前を付けることができ、レシピ内のどこでもその変数を簡単に追跡することができます。また、割り当てを連鎖させて、指定した順序で複数の変換を適用することもできます。次の例は、レシピ構文の単一および連鎖の割り当てを示しています。

```
"assignments": {

"email_subject_lowercase": "lowercase(email_subject)",

"email_subject_lowercase_ngram":"ngram(lowercase(email_subject), 2)"

}
```

 中間変数はアルファベット文字で始まる必要があり、長さは 1 〜 64 文字です。名前がアルファベットで始まらない場合、または特殊文字 (, ' " \$1t \$1r \$1n ( ) \$1) が含まれている場合は、その名前を引用符で囲んでレシピに含める必要があります。

## 出力
<a name="outputs"></a>

 出力セクションは、どの入力変数が学習プロセスに使用されるか、どの変換が適用されるかを制御します。空の、または、存在しない出力セクションは、学習プロセスにデータが渡されないため、エラーとなります。

 最も単純な出力セクションには、定義済みの **ALL\$1INPUTS** グループが含まれていて、Amazon ML が学習用にデータソースで定義されているすべての変数を使用するように指示します。

```
"outputs": [

"ALL_INPUTS"

]
```

 出力セクションは、Amazon ML にこれらのグループのすべての変数を使用するように指示することで、他の定義済みグループを参照することもできます。

```
"outputs": [

"ALL_NUMERIC",

"ALL_CATEGORICAL"

]
```

 出力セクションはカスタムグループを参照することもできます。次の例では、前の例のグループ割り当てセクションで定義されたカスタムグループの 1 つのみが機械学習に使用されます。他のすべての変数は削除されます。

```
"outputs": [

"All_Categorical_plus_one_other"

]
```

出力セクションは、割り当てセクションで定義された変数割り当てを参照することもできます。

```
"outputs": [

"email_subject_lowercase"

]
```

 また、入力変数または変換は、出力セクションで直接定義できます。

```
"outputs": [

"var1",

"lowercase(var2)"

]
```

 出力は、学習プロセスで使用できると予想されるすべての変数と変換された変数を明示的に指定する必要があります。たとえば、var1 と var2 のデカルト積を出力に含めるとします。raw 変数 var1 と var2 の両方も含める場合は、出力セクションに raw 変数を追加する必要があります。

```
"outputs": [

"cartesian(var1,var2)",

"var1",

"var2"

]
```

 出力には、変数とともにコメントテキストを追加して、読みやすくするためのコメントを含めることができます。

```
"outputs": [

"quantile_bin(age, 10) //quantile bin age",

"age // explicitly include the original numeric variable along with the
binned version"

]
```

 出力セクション内でこれらのアプローチをすべて組み合わせて利用することができます。

**注記**  
レシピを追加するときに Amazon ML コンソールでコメントを入力することはできません。

## 完全なレシピの例
<a name="complete-recipe-example"></a>

 以下の例は、前述の例で紹介されたいくつかのビルトインデータプロセッサを示しています。

```
{

"groups": {

"LONGTEXT": "group_remove(ALL_TEXT, title, subject)",

"SPECIALTEXT": "group(title, subject)",

"BINCAT": "group(ALL_CATEGORICAL, ALL_BINARY)"

},

"assignments": {

"binned_age" : "quantile_bin(age,30)",

"country_gender_interaction" : "cartesian(country, gender)"

},

"outputs": [

"lowercase(no_punct(LONGTEXT))",

"ngram(lowercase(no_punct(SPECIALTEXT)),3)",

"quantile_bin(hours-per-week, 10)",

"hours-per-week // explicitly include the original numeric variable
along with the binned version",

"cartesian(binned_age, quantile_bin(hours-per-week,10)) // this one is
critical",

"country_gender_interaction",

"BINCAT"

]

}
```

# 推奨レシピ
<a name="suggested-recipes"></a>

 Amazon ML で新しいデータソースを作成し、そのデータソースの統計が計算されると、Amazon ML はデータソースから新しい ML モデルを作成するために使用できる推奨レシピを作成します。提案されたデータソースは、データに存在するデータ属性とターゲット属性に基づいており、ML モデルの作成とチューニングの出発点となります。

 Amazon ML コンソールで提案されたレシピを使用するには、**[Create new]** (新規作成) ドロップダウンリストから **[Datasource]** (データソース) または **[Datasource and ML model]** (データソースおよび ML モデル) を選択します。ML モデルの設定では、**[Create ML Model]** (ML モデルの作成) ウィザードの **[ML Model Setting]** (ML モデルの設定) のステップで、デフォルトまたはカスタムのトレーニングと評価の設定を選択できます。[Default] デフォルトオプションを選択すると、Amazon ML は推奨されたレシピを自動的に使用します。[Custom] カスタムオプションを選択すると、次のステップのレシピエディタに推奨レシピが表示され、必要に応じて確認または変更できます。

**注記**  
 Amazon ML では、統計情報の計算が完了する前に、データソースを作成してすぐに ML モデルを作成することができます。この場合、カスタムオプションで提案されたレシピを表示することはできませんが、そのステップを進んで、Amazon ML にモデルトレーニングのデフォルトレシピを使用させることができます。

 Amazon ML API で提案されたレシピを使用するには、Recipe API と RecipeUri API の両方のパラメータで空の文字列を渡すことができます。Amazon ML API を使用して推奨されたレシピを取得することはできません。

# データ変換リファレンス
<a name="data-transformations-reference"></a>

**Topics**
+ [nグラム変換](#n-gram-transformation)
+ [直角のスパースなバイグラム (OSB) 変換](#orthogonal-sparse-bigram-osb-transformation)
+ [小文字変換](#lowercase-transformation)
+ [句読点除去変換](#remove-punctuation-transformation)
+ [四分位ビニング変換](#quantile-binning-transformation)
+ [正規化変換](#normalization-transformation)
+ [デカルト積変換](#cartesian-product-transformation)

## nグラム変換
<a name="n-gram-transformation"></a>

 nグラム変換は、テキスト変数を入力として受け取り、(ユーザが設定可能な) n ワードのウィンドウをスライドさせることに対応する文字列を生成し、プロセス内の出力を生成します。たとえば、「この本を本当に楽しんで読みました」という文字列を考えてみましょう。

 ウィンドウサイズ = 1 で nグラム変換を指定すると、その文字列内の個々の単語がすべて得られます。

```
{"I", "really", "enjoyed", "reading", "this", "book"}
```

 ウィンドウサイズ = 2 でnグラム変換を指定すると、すべての 2 語の組み合わせと 1 語の組み合わせが得られます。

```
{"I really", "really enjoyed", "enjoyed reading", "reading this", "this
book", "I", "really", "enjoyed", "reading", "this", "book"}
```

 ウィンドウサイズ = 3 で nグラム変換を指定すると、このリストに 3 語の組み合わせが追加され、次の結果が得られます。

```
{"I really enjoyed", "really enjoyed reading", "enjoyed reading this",
"reading this book", "I really", "really enjoyed", "enjoyed reading",
"reading this", "this book", "I", "really", "enjoyed", "reading",
"this", "book"}
```

 n-grams は、2〜10 語の範囲のサイズでリクエストできます。サイズ 1 の n-grams は、データスキーマでタイプがテキストとしてマークされているすべての入力に対して暗黙的に生成されるため、入力する必要はありません。最後に、n-grams は空白文字の入力データを分割することによって生成されることに注意してください。これは、たとえば、句読点文字が単語トークンの一部とみなされることを意味します。文字列「red, green, blue」をウィンドウ 2 で n-grams を生成すると、\$1"red,", "green,", "blue,", "red, green", "green, blue"\$1 となります。これを希望しない場合は、句読記号を削除するために、句読点除去プロセッサ (この資料で後述) を使用して句読記号を削除することができます。

 変数 var1 のウィンドウサイズ 3 の n-grams を計算するには。

```
"ngram(var1, 3)"
```

## 直角のスパースなバイグラム (OSB) 変換
<a name="orthogonal-sparse-bigram-osb-transformation"></a>

 OSB 変換はテキスト文字列解析を支援することを目的としており、バイグラム変換 (ウィンドウサイズ 2 の nグラム) に代わるものです。OSB は、テキスト上で n サイズのウィンドウをずらし、ウィンドウの最初の単語を含む、各単語ペアを出力することにより生成されます。

 各 OSB を構築するために、その構成要素の単語は「\$1」(アンダースコア) 文字で結合され、スキップされたすべてのトークンは OSB にアンダースコアを追加することによって示されます。したがって、OSB は、ウィンドウ内に見られるトークンだけでなく、同じウィンドウ内でスキップされたトークンの数もエンコードします。

 例として、文字列「quick brown fox dog」、OSB サイズ 4 を考えます。文字列の最後から 6 つの 4 単語のウィンドウと最後の 2 つの短いウィンドウと、同様にそれぞれから生成された OSB が次の例に示されています。

 ウィンドウ \$1OSB 生成\$1 

```
"The quick brown fox", {The_quick, The__brown, The___fox}

"quick brown fox jumps", {quick_brown, quick__fox, quick___jumps}

"brown fox jumps over", {brown_fox, brown__jumps, brown___over}

"fox jumps over the", {fox_jumps, fox__over, fox___the}

"jumps over the lazy", {jumps_over, jumps__the, jumps___lazy}

"over the lazy dog", {over_the, over__lazy, over___dog}

"the lazy dog", {the_lazy, the__dog}

"lazy dog", {lazy_dog}
```

 直交スパースバイグラムは、nグラムの代替品で状況によっては快適に動作する可能性があります。データに大きなテキストフィールド (10 単語以上) がある場合は、どちらがよく動作するか実験してみてください。何が大きなテキストフィールドとなるかは、状況によって異なる可能性があることに注意してください。ただし、大きなテキストフィールドの場合、経験的には OSB が、特別な*省略*記号 (下線) により、一意にテキストを表すことが示されています。

 入力テキスト変数の OSB 変換では、ウィンドウサイズを 2〜10 にリクエストできます。

 変数 var1 のウィンドウサイズ 5 の OSB を計算するには。

 「osb(var1, 5)」 

## 小文字変換
<a name="lowercase-transformation"></a>

 小文字変換プロセッサは、テキスト入力を小文字に変換します。たとえば、入力が「The Quick Brown Fox Jumps Over the Lazy Dog」の場合、プロセッサは「the quick brown fox jumps over the lazy dog」を出力します。

 変数 var1 に小文字変換を適用するには。

 「lowercase(var1)」 

## 句読点除去変換
<a name="remove-punctuation-transformation"></a>

 Amazon ML は、空白のデータスキーマのテキストとしてマークされた入力を暗黙的に分割します。文字列の句読点は、隣接する単語トークンで終わるか、それを囲む空白に応じて別のトークンとして完全に終わります。これが望ましくない場合、句読点除去変換を使用して、生成された機能から句読記号を除去することができます。「Welcome to AML - please fasten your seat-belts\$1」という文字列を指定すると、次のトークンセットが暗黙的に生成されます。

```
{"Welcome", "to", "Amazon", "ML", "-", "please", "fasten", "your", "seat-belts!"}
```

 句読点除去プロセッサをこの文字列に適用すると、次のようになります。

```
{"Welcome", "to", "Amazon", "ML", "please", "fasten", "your", "seat-belts"}
```

 プレフィックスとサフィックスの句読記号だけが削除されることに注意してください。トークンの途中に現れる句読点、たとえば「seat-belts」のハイフンは削除されません。

 変数 var1 に句読点除去を適用するには。

 「no\$1punct(var1)」 

## 四分位ビニング変換
<a name="quantile-binning-transformation"></a>

 四分位ビニングプロセッサは、数値変数と *bin 番号*と呼ばれるパラメータの 2 つの入力を受け取り、カテゴリ変数を出力します。目的は、観測値をグループ化して変数の分布における非直線性を発見することです。

 多くの場合、数値変数とターゲットの関係は線形ではありません (数値変数の値は単調に増減しません)。そのような場合、数値機能のさまざまな範囲を表すカテゴリ機能に数値機能を格納すると便利です。各カテゴリ機能値 (bin) は、ターゲットとのそれ自身の線形関係を持つものとしてモデル化することができます。たとえば、継続的な数値機能 *account\$1age* が書籍を購入する可能性と直線的に相関していないことがわかったとします。ターゲットとの関係をより正確に把握できるようなカテゴリ機能に分類することができます。

 四分位ビニングプロセッサを使用して、Amazon ML に、age 変数のすべての入力値の分布に基づいて等しいサイズの n ビンを確立し、各ビンを含むテキストトークンで置き換えるよう指示できます。数値変数の最適なビン数は、変数の特性とターゲットとの関係に依存します。これは、実験を通じて最もよく決定されます。Amazon ML では、[推奨レシピ](https://docs.aws.amazon.com/machine-learning/latest/dg/suggested-recipes.html)のデータ統計に基づいて数値機能の最適なビン数を示唆しています。

 任意の数値入力変数に対して 5 から 1000 個の分位ビンを計算して要求することができます。

 次の例は、数値変数 var1 の代わりに 50 ビンを計算して使用する方法を示しています。

 「quantile\$1bin(var1, 50)」 

## 正規化変換
<a name="normalization-transformation"></a>

 正規化変換は、平均値がゼロで分散が 1 になるように数値変数を正規化します。数値変数の正規化は、数値的変数間の距離の差が非常に大きい場合に学習プロセスを助けることができます。なぜなら、その特徴がターゲットに対して有益であるかどうかにかかわらず、最大の変数が ML モデルを支配するからです。

 この変換を数値変数 var1 に適用するには、これをレシピに追加します。

 normalize(var1) 

 この変換は、ユーザー定義の数値変数グループまたはすべての数値変数 (ALL\$1NUMERIC) の事前定義グループを入力として受け取ることもできます。

 normalize(ALL\$1NUMERIC) 

 **メモ** 

 正規化プロセッサを数値変数に使用することは必須では*ありません*。

## デカルト積変換
<a name="cartesian-product-transformation"></a>

 デカルト変換は、2 つ以上のテキストまたはカテゴリ入力変数の順列を生成します。この変換は、変数間の相互作用が疑われる場合に使用されます。たとえば、チュートリアル :Amazon ML を使用してマーケティングオファーへの応答を予測するのに使用される銀行マーケティングデータセットを考えてみましょう。このデータセットを使用して、経済的および人口統計的情報に基づいて、人が銀行のプロモーションに積極的に反応するかどうかを予測します。当社では、個人の仕事の種類が重要であると考えるかもしれません (特定の分野で雇用されて利用可能なお金を手に入れること)、最高水準の教育の獲得も重要です。当社はまた、これらの 2 つの変数の相互作用に強いシグナルがあるという、より深い直感を持っているかもしれません - たとえば、昇進は大学の学位を取得した起業家である顧客に特に適しています。

 デカルト積変換は、カテゴリ変数またはテキストを入力として受け取り、これらの入力変数間の相互作用を取得する新しい機能を生成します。具体的には、トレーニング例ごとに機能の組み合わせを作成し、スタンドアロン機能として追加します。たとえば、簡略化した入力行が次のようになっているとします。

 ターゲット、教育、仕事 

 0、university.degree、技術者 

 0、high.school、サービス 

 1、university.degree、管理者 

 デカルト変換をカテゴリ変数の教育分野と職種分野に適用するように指定すると、結果の機能 education\$1job\$1interaction は次のようになります。

 ターゲット、education\$1job\$1interaction 

 0、university.degree\$1technician 

 0、high.school\$1services 

 1、university.degree\$1admin 

 デカルト変換は、引数の 1 つが暗黙的である場合、または明示的にトークンに分割されるテキスト変数である場合、一連のトークンを処理するときにさらに強力になります。たとえば、書籍が教科書かどうかを分類するタスクについて検討します。直感的には、教科書であることを示す書籍のタイトル (教科書のタイトルでは特定の単語が頻繁に出現する可能性がある) があると思われるかもしれません。また、本の装丁で予測できると考えるかもしれませんが (教科書はハードカバーになる可能性が高いため)、実際にはタイトルと装丁についてのいくつかの単語の組み合わせで予測できます。実際の例で、次の表は、入力変数 binding および title にデカルトプロセッサを適用した結果を示しています。


|  教科書  |  タイトル  |  バインディング  |  no\$1punct (タイトル) と装丁のデカルト積  | 
| --- | --- | --- | --- | 
|  1  |  経済学: 原則、問題、ポリシー  |  ハードカバー  |  \$1"Economics\$1Hardcover", "Principles\$1Hardcover", "Problems\$1Hardcover", "Policies\$1Hardcover"\$1  | 
|  0  |  The Invisible Heart: An Economics Romance  |  ソフトカバー  |  \$1"The\$1Softcover", "Invisible\$1Softcover", "Heart\$1Softcover", "An\$1Softcover", "Economics\$1Softcover", "Romance\$1Softcover"\$1  | 
|  0  |  Fun With Problems  |  ソフトカバー  |  \$1"Fun\$1Softcover", "With\$1Softcover", "Problems\$1Softcover"\$1  | 

 次の例は、デカルト変換を var1 と var2 に適用する方法を示しています。

 cartesian(var1, var2) 

# データ再配置
<a name="data-rearrangement"></a>

 データ再配置機能を使用すると、入力データの一部にのみ基づいてデータソースを作成できます。例えば、Amazon ML コンソールの **[Create ML Model]** (ML モデルの作成) ウィザードを使用して ML モデルを作成し、デフォルトの評価オプションを選択すると、Amazon ML は自動的に ML モデル評価のためにデータの 30% を予約して、残りの 70% をトレーニングに使用します。この機能は、Amazon ML のデータ再編成機能によって有効になります。

 Amazon ML API を使用してデータソースを作成する場合は、入力データのどの部分に新しいデータソースが基づいているかを指定できます。これを行うには、`DataRearrangement` パラメータの指示を `CreateDataSourceFromS3`、`CreateDataSourceFromRedshift` API、または `CreateDataSourceFromRDS` API に渡します。DataRearrangement 文字列の内容は、データの開始位置と終了位置を含む JSON 文字列で、パーセンテージ、補完フラグ、および分割戦略で表されます。たとえば、次の DataRearrangement 文字列は、最初の 70% のデータがデータソースの作成に使用されることを指定します。

```
{
    "splitting": {
        "percentBegin": 0,
        "percentEnd": 70,
        "complement": false,
        "strategy": "sequential"
    }
}
```

## DataRearrangement パラメータ
<a name="data-rearrangement-terms"></a>

Amazon ML がデータソースを作成する方法を変更するには、以下のパラメータを使用します。

**PercentBegin (オプション)**  
`percentBegin` を使用して、データソースのデータの開始位置を指定します。`percentBegin` と `percentEnd` を指定しなければ、データソースの作成時に Amazon ML にすべてのデータが含まれます。  
有効な値は `0`～`100` です。

**PercentEnd (オプション)**  
`percentEnd` を使用して、データソースのデータの終了位置を指定します。`percentBegin` と `percentEnd` を指定しなければ、データソースの作成時に Amazon ML にすべてのデータが含まれます。  
有効な値は `0`～`100` です。

**補完 (オプション)**  
`complement` パラメータは、Amazon ML が `percentBegin` から `percentEnd` の範囲に含まれていないデータを使用してデータソースを作成するようにします。`complement` パラメータは、トレーニングと評価のための補完的なデータソースを作成する必要がある場合に便利です。補完的なデータソースを作成するには、`percentBegin` パラメータで `percentEnd` および `complement` と同じ値を使用します。  
たとえば、次の 2 つのデータソースはデータを共有せず、モデルをトレーニングおよび評価するために使用できます。最初のデータソースには 25% のデータがあり、2 番目のデータソースは 75% のデータがあります。  
評価のためのデータソース  

```
{
    "splitting":{
        "percentBegin":0, 
        "percentEnd":25
    }
}
```
トレーニングのためのデータソース  

```
{
    "splitting":{
        "percentBegin":0, 
        "percentEnd":25, 
        "complement":"true"
    }
}
```
有効な値は、`true` および `false` です。

**戦略 (オプション)**  
Amazon ML がデータソースのデータをどのように分割するかを変更するには、`strategy` パラメータを使用します。  
`strategy` パラメータのデフォルト値は `sequential` です。つまり、Amazon ML は、レコードが入力データに表示される順序で、データソースの `percentBegin` と `percentEnd` 間のすべてのデータレコードを取得します。  
次の 2 つの `DataRearrangement` 行は、順番に順序付けられたトレーニングと評価のデータソースの例です。  
評価のためのデータソース。`{"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"sequential"}}`  
トレーニングのためのデータソース。`{"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"sequential", "complement":"true"}}`  
データをランダムに選択してデータソースを作成するには、`strategy` パラメータを `random` に設定し、ランダムデータ分割のシード値として使用する文字列を指定します (たとえば、データへの S3 パスをランダムなシード文字列として使用できます)。ランダムな分割戦略を選択した場合、Amazon ML は各データ行に擬似乱数を割り当て、`percentBegin` と `percentEnd` の間に割り当てられた数を持つ行を選択します。バイトオフセットをシードとして使用して疑似乱数が割り当てられるため、データを変更すると異なる分割が発生します。既存の順序はすべて保存されます。ランダムな分割戦略により、トレーニングデータと評価データの変数が同様に分散されます。入力データに暗黙的な並べ替え順序が含まれている場合に役立ちます。そうでない場合は、類似しないデータレコードを含むトレーニングおよび評価データソースが作成されます。  
次の 2 つの `DataRearrangement` 行は、非連続的なトレーニングと評価のデータソースの例です。  
評価のためのデータソース  

```
{
    "splitting":{
        "percentBegin":70, 
        "percentEnd":100, 
        "strategy":"random", 
        "strategyParams": {
            "randomSeed":"RANDOMSEED"
        }
    }
}
```
トレーニングのためのデータソース  

```
{
    "splitting":{
        "percentBegin":70, 
        "percentEnd":100, 
        "strategy":"random", 
        "strategyParams": {
            "randomSeed":"RANDOMSEED"
        }
        "complement":"true"
    }
}
```
有効な値は、`sequential` および `random` です。

**(オプション) 戦略。RandomSeed**  
Amazon ML は **[randomSeed]** を使用してデータを分割します。API のデフォルトのシードは空の文字列です。ランダムな分割戦略のシードを指定するには、文字列を渡します。random Seed について詳しくは、「*Amazon Machine Learning デベロッパーガイド*」の「[データのランダムな分割](splitting-types.md#random-splitting)」を参照してください。

Amazon ML でクロスバリデーションを使用する方法を示すサンプルコードについては、「[Github Machine Learning Samples](https://github.com/awslabs/machine-learning-samples)」を参照してください。