パーティションとサンプル
重要
Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。
2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。
- ML Studio (クラシック) から Azure Machine Learning への機械学習プロジェクトの移動に関する情報を参照してください。
- Azure Machine Learning についての詳細を参照してください。
ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。
サンプリングに基づいてデータセットの複数のパーティションを作成します
カテゴリ: データ変換/サンプルと分割
注意
適用対象: Machine Learning Studio (クラシック) のみ
類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。
モジュールの概要
この記事では、Machine Learning Studio (クラシック) のパーティションとサンプル モジュールを使用して、データセットに対してサンプリングを実行する方法、またはデータセットからパーティションを作成する方法について説明します。
サンプリングは、値の同じ比率を維持しながら、データセットのサイズを小さくできるため、機械学習で重要なツールです。 このモジュールでは、機械学習で重要な以下のいくつかの関連タスクがサポートされます。
同じサイズの複数のサブセクションにデータを分割する。
クロス検証のために、またはランダム グループにケースを割り当てるために、パーティションを使用する可能性があります。
グループにデータを分離してから、特定のグループからのデータを操作する。
さまざまなグループにランダムにケースを割り当てた後、1 つのグループのみに関連付けられているフィーチャーを変更する必要がある場合があります。
サンプリングを行う。
データの割合を抽出し、ランダム サンプリングを適用するか、データセットの負荷分散で使用する列を選択し、その値に対して階層サンプリングを行うことができます。
テスト用のより小さなデータセットを作成する。
大量のデータがある場合は、実験の設定中は最初の n 行のみを使用し、モデルを構築するときに完全なデータセットを使用するように切り替えることができます。 サンプリングを使って、開発で使用するためのより小さなデータセットを作成することもできます。
パーティションとサンプルを構成する方法
このモジュールでは、データをパーティション分割する場合や、サンプリングのための複数の方法がサポートされます。 最初に方法を選択し、その方法で必要な追加のオプションを設定します。
- 行数の上位を取得する
[Get TOP N rows from a dataset](データセットから上位 N 行を取得する)
このモードを使用して最初の n 行のみを取得します。 このオプションは、少ない数の行で実験をテストするときに、いかなる方法でもデータの負荷を分散したり、サンプリングする必要がない場合に便利です。
Studio ( クラシック) で実験 に Partition and Sample モジュールを追加し、データセットを接続します。
[Partition or sample mode](パーティションまたはサンプル モード) : このオプションを [ヘッド] に設定します。
[選択する行数]: 返す行数を入力します。
指定する行の数は、負ではない整数にする必要があります。 選択した行の数が、データセット内の行の数よりも大きい場合は、データセット全体が返されます。
実験を実行します。
モジュールでは、指定された数の行のみを含む単一データセットが出力されます。 行は常に、データセットの一番上から読み取られます。
[Create a sample of data](データのサンプルを作成する)
このオプションでは、簡単なランダム サンプリングまたは階層ランダム サンプリングがサポートされます。 これは、テスト用のより小さい代表的なサンプル データセットを作成する場合に便利です。
Studio ( クラシック) で実験 に Partition and Sample モジュールを追加し、データセットを接続します。
パーティションモードまたはサンプル モード: これを [サンプリング] に 設定します。
サンプリング率: 0 から 1 の値を入力します。 この値では、出力データセットに含める必要があるソース データセットからの行の割合を指定します。
たとえば、元のデータセットの半分のみが必要な場合は、「
0.5
」と入力して、サンプリング率が 50% である必要があることを示します。入力データセットの行はシャッフルされ、指定された比率に従って、選択的に出力データセットに配置されます。
サンプリングのランダム シード: 必要に応じて、シード値として使用する整数を入力します。
このオプションは、行を常に同じように分割する場合に重要となります。 既定値が 0 の場合、システム クロックに基づいて開始シードが生成されることを意味します。 実験を実行するたびに、若干異なる結果となる可能性があります。
サンプリングの階層分割: サンプリングの前にデータセット内の行を一部のキー列で等しく分割することが重要な場合は、このオプションを選択します。
[Stratification key column for sampling](サンプリングのための階層キー列) では、データセットを分割するときに使用する単一の階層列を選択します。 その後、データセット内の行は次のように分割されます。
すべての入力行が、指定された階層列の値でグループ化 (階層化) されます。
各グループ内で行がシャッフルされます。
各グループは、指定された比率を満たすために、出力データセットに選択的に追加されます。
階層サンプリングの詳細については、「テクニカル ノート」 セクションを参照 してください。
実験を実行します。
このオプションでは、データの代表的なサンプリングを含む単一データセットがモジュールによって出力されます。
データセットの残りの、サンプリングされていない部分は出力されません。 ただし、データセットに対して結合を作成するには、Apply SQL Transformation (変換の適用) モジュールを使用して、使用されていない行を特定します。
[Split data into partitions](データをパーティションに分割する)
データのサブセットにデータセットを分割する場合は、このオプションを使用します。 このオプションは、クロス検証のためにユーザーが設定した数のフォールドを作成する場合や、行をいくつかのグループに分割する場合にも役立ちます。
Studio ( クラシック) で実験 に Partition and Sample モジュールを追加し、データセットを接続します。
[Partition or sample mode](パーティションまたはサンプル モード) では、[Assign to Folds](フォールドに割り当てる) を選択します。
[Use replacement in the partitioning](パーティション分割で置換を使用する) : 再利用される可能性がある行のプールにサンプリングされた行を戻す場合は、このオプションを選択します。 その結果、同じ行がいくつかのフォールドに割り当てられる可能性があります。
置換を使用しない場合 (既定のオプション)、再利用される可能性がある行のプールにサンプリングされた行は戻されません。 その結果、各行を 1 つのフォールドのみに割り当てることができます。
[Randomized split](ランダム分割) : 行をフォールドにランダムに割り当てる場合は、このオプションを選択します。
このオプションを選択しない場合、ラウンドロビン方式を使用して、フォールドに行が割り当てられます。
ランダム シード: 必要に応じて、シード値として使用する整数を入力します。 このオプションは、行を常に同じように分割する場合に重要となります。 それ以外の場合、既定値の 0 が設定され、ランダム開始シードが使用されることになります。
Partitioner メソッドを指定する: 次のオプションを使用して、各パーティションにデータを分割する方法を指定します。
[Partition evenly](均等にパーティション分割する) : 各パーティションに同数の行を配置するには、このオプションを使用します。 出力パーティションの数を指定するには、[Specify number of folds to split evenly into]\(均等に分割するフォールドの数を指定する\) テキスト ボックスに整数を入力します。
[Partition with customized proportions](カスタマイズされた比率でパーティション分割する) : 各パーティションのサイズをコンマ区切りのリストとして指定するには、このオプションを使用します。
たとえば、3 つのパーティションを作成し、最初のパーティションに 50% のデータが含まれ、残りの 2 つのパーティションにそれぞれ 25% のデータが含まれるようにする場合、[List of proportions separated by comma]\(コンマで区切られた比率のリスト\) テキスト ボックスをクリックし、「
.5, .25, .25
」という数値を入力します。すべてのパーティション サイズの合計が、ちょうど 1 になるようにしてください。
合計が 1 より小さくなる数値を入力すると、残りの行を保持するために余分なパーティションが作成されます。 たとえば、「.2」と「.3」の値を入力した場合、すべての行の残りの 50% を保持する 3 つ目のパーティションが作成されます。
合計が 1 より大きくなる数値を入力すると、実験を行ったときにエラーが発生します。
[Stratified split]\(階層分割|) : 行を分割時に階層化する場合は、このオプションを選択してから、階層列を選びます。
階層サンプリングの詳細については、「テクニカル ノート」 セクションを参照 してください。
実験を実行します。
このオプションでは、指定された規則を使用してパーティション分割された、複数のデータセットがモジュールによって出力されます。
[Use data from a predefined partition](定義済みのパーティションからデータを使用する)
このオプションは、データセットを複数のパーティションに分割しており、各パーティションをさらに分析するか、処理するために読み込む場合に使用されます。
Studio ( クラシック) の実験 にパーティションとサンプル モジュールを追加します。
それを、Partition and Sample (パーティションとサンプル) の前のインスタンスの出力に接続します。 そのインスタンスで、いくつかのパーティションを生成するために [Assign to Folds](フォールドに割り当てる) オプションが使用されている必要があります。
[Partition or sample mode](パーティションまたはサンプル モード) : [Pick Fold](フォールドを選択する) を選択します。
サンプリングするフォールドを指定する: インデックスを入力して使用するパーティションを選択します。 パーティション インデックスは 1 から始まります。 たとえば、データセットを 3 つの部分に分割した場合、パーティションのインデックスは 1、2、3 となります。
無効なインデックス値を入力すると、デザイン時エラー "エラー 0018: データセットに無効なデータが含まれている" というエラーが発生します。
フォールドでデータセットをグループ化するだけでなく、ターゲット フォールドとその他すべてという 2 つのグループにデータセットを分離することができます。 これを行うには、単一フォールドのインデックスを入力してから、[Pick complement of the selected fold]\(選択されたフォールドの補数を選択する\) というオプションを選び、指定されたフォールドのデータ以外のすべてを取得します。
複数のパーティションを操作する場合は、Partition and Sample (パーティションとサンプル) モジュールのインスタンスをさらに追加して、各パーティションを処理する必要があります。
たとえば、以前に患者を年齢を使用して 5 つのフォールドにパーティション分割したとします。 個々のフォールドを使用するには、Partition モジュールと Sample モジュールのコピーを 5 つ必要とします。それぞれに異なるフォールドを選択します。
ヒント
サンプル実験であるパーティション 分割とサンプルは、この手法を示しています。
実験を実行します。
このオプションでは、そのフォールドに割り当てられた行のみを含む、単一データセットがモジュールによって出力されます。
注意
フォールドの指定を直接表示することはできません。これらはメタデータ内にのみ存在します。
例
このモジュールの使用例については、次のAzure AI Gallery。
二項分類のクロス検証: 20% のサンプリング レートが適用され、より小さなランダムにサンプリングされたデータセットが作成されます。 元の国勢調査データセットには 30,000 行を超える行が含まれます。サンプリングされたデータセットの数は約 6500 です。
回帰のクロス検証: データは 5 つのフォールドにランダムに割り当てられます。階層化は行われるので、結果はクロス検証に使用されます。
パーティション分割とサンプル: パーティション分割とサンプリングを使用する複数の方法を示します。 最初に、 [ Assign to Folds ]/(フォールドに割り当てる)オプションを使用して、データセット内の行を 3 つのサイズの異なるグループの 1 つに割り当てします。 次に、Pick Fold モードを使用してデータのサブセットに操作を適用することで、パーティションとサンプルの 3 つのインスタンスが追加されます
- 最初のフォールド (インデックス 1) では、行はランダムに分割されます。
- 2 番目のフォールド (インデックス 2) では、行は教育によって分割されます。
- 3 番目のフォールド (インデックス 3) では、行は年齢別に分割されます。
テクニカル ノート
階層化列は、不連続値を持つカテゴリ列である必要があります。 列がカテゴリ別でなく、エラーが発生する場合は、[メタデータの編集] を使用 して列の プロパティを変更します。
指定する strata 列には、連続するデータ (つまり、各セルに浮動小数点値を含む数値データ) を含めすることはできません。 それ以外の場合、モジュールはデータを処理し、エラーを返します。
その理由は、階層化に使用される列には、有効な値の有限のセットが必要であるためです。 指定した階層列に浮動小数点値が含まれている場合、列がカテゴリ型ではない場合は、無限の数の値が含まれている可能性があります。
strata 列にブール値が含まれている場合、それらをカテゴリとして解釈する場合は、メタデータの編集モジュールを使用してメタデータ ラベルを変更する必要があります。
strata 列に一意の値が多すぎる文字列データまたは数値データが含まれている場合、その列は階層サンプリングには不向きです。
階層サンプリングの詳細
階層サンプリングを使用 すると、データのサブセットに、選択した階層列の代表的なサンプリングが確実に設定されます。 この手法は、たとえば、トレーニング データにテスト データと同じ年齢値分布が含まれていることを (またはその逆を) 確認するときに便利です。 あるいは、ヘルスケアの研究で性別列で層化し、データを区分する場合、男性と女性を均一に分配するときに役立ちます。 層化を利用すると、選択した値の比率が維持されます。
データを分離する値を指定するには、階層列として機能する 1 つの列 を選択します。
このモジュールでは、strata 列がカテゴリ列である必要があります。 層に整数値の列を使用する場合、この列にカテゴリ型を割り当てることをお勧めします。 これを行うには、データを Machine Learning Studio (クラシック) に追加する前にデータのスキーマを使用するか、メタデータの編集を使用して列のメタデータを更新します。
連続するデータ (各セルに浮動小数点値を含む数値データ) を持つ列は、層化列として使用できません。 エラーが発生した場合は、[データをビンにグループ化] を使用して値を個別の範囲にバケットし、[メタデータの編集] を使用して列がカテゴリとして扱われるのを保証できます。
想定される入力
名前 | 型 | 説明 |
---|---|---|
データセット | データ テーブル | 分割するデータセット |
モジュールのパラメーター
名前 | Range | Type | Default | 説明 |
---|---|---|---|---|
パーティションまたはサンプルのモード | 一覧 | サンプリング メソッド | サンプリング | パーティションまたはサンプリングのモードを選択します |
パーティション分割で置換を使用する | Any | Boolean | False | フォールドを不一方にするか (既定値 - 置換なし)、重複 (true - 置換を使用) する必要があるかどうかを示します |
ランダム化分割 | Any | Boolean | True | 分割がランダムかどうかを示します |
Random seed (ランダム シード) | Any | Integer | 0 | 乱数ジェネレーターのシードを指定します |
パーティショナー方法を指定する | 一覧 | パーティション方法 | 均等にパーティション分割 | [均等にパーティション分割] を選択して、同じサイズのフォールドにパーティション分割するか、カスタマイズされたサイズのフォールドにパーティション分割する比率をカスタマイズしたパーティション分割を選択します |
均等に分割するフォールド数を指定する | >=1 | Integer | 5 | 分割するパーティションの数を選択する |
層化分割 | 一覧 | True/False 型 | いいえ | 分割が層化されるかどうかを示します |
層化キー列 | Any | ColumnSelection | 層化キーが含まれます | |
コンマで区切られた割合の一覧 | Any | String | コンマで区切られた比率の一覧表示 | |
カスタマイズしたフォールドの割り当ての層化分割 | Any | True/False 型 | いいえ | 分割がカスタマイズされたフォールドに対して分割が層化されるかどうかを示します |
カスタマイズしたフォールドの割り当ての層化キー列 | Any | ColumnSelection | カスタマイズしたフォールドの割り当てに対する層化キーが含まれます | |
サンプリングするフォールドを指定する | >=1 | Integer | 1 | サンプリングするフォールドのインデックスを含む |
選択したフォールドの補数を選択する | Any | Boolean | False | 指定したフォールドの補数を選択します |
サンプリング率 | Any | Float | 0.01 | サンプリング レートを選択します |
サンプリングのランダム シード | Any | Integer | 0 | サンプリングの乱数ジェネレーターのシードを指定します |
サンプリングの層化分割 | Any | True/False | いいえ | サンプリングの分割が層化されるかどうかを示します |
サンプリングの層化キー列 | Any | ColumnSelection | サンプリングの層化キーが含まれます | |
選択する行の数 | >=0 | Integer | 10 | 次のモジュールに渡すことができるレコードの最大数を選択します |
出力
名前 | 型 | 説明 |
---|---|---|
oDataset | データ テーブル | 分割から発生するデータセット |