パーティションとサンプル

重要

Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。

2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。

ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。

サンプリングに基づいてデータセットの複数のパーティションを作成します

カテゴリ: データ変換/サンプルと分割

注意

適用対象: Machine Learning Studio (クラシック) のみ

類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。

モジュールの概要

この記事では、Machine Learning Studio (クラシック) のパーティションとサンプル モジュールを使用して、データセットに対してサンプリングを実行する方法、またはデータセットからパーティションを作成する方法について説明します。

サンプリングは、値の同じ比率を維持しながら、データセットのサイズを小さくできるため、機械学習で重要なツールです。 このモジュールでは、機械学習で重要な以下のいくつかの関連タスクがサポートされます。

  • 同じサイズの複数のサブセクションにデータを分割する。

    クロス検証のために、またはランダム グループにケースを割り当てるために、パーティションを使用する可能性があります。

  • グループにデータを分離してから、特定のグループからのデータを操作する。

    さまざまなグループにランダムにケースを割り当てた後、1 つのグループのみに関連付けられているフィーチャーを変更する必要がある場合があります。

  • サンプリングを行う。

    データの割合を抽出し、ランダム サンプリングを適用するか、データセットの負荷分散で使用する列を選択し、その値に対して階層サンプリングを行うことができます。

  • テスト用のより小さなデータセットを作成する。

    大量のデータがある場合は、実験の設定中は最初の n 行のみを使用し、モデルを構築するときに完全なデータセットを使用するように切り替えることができます。 サンプリングを使って、開発で使用するためのより小さなデータセットを作成することもできます。

パーティションとサンプルを構成する方法

このモジュールでは、データをパーティション分割する場合や、サンプリングのための複数の方法がサポートされます。 最初に方法を選択し、その方法で必要な追加のオプションを設定します。

  • 行数の上位を取得する

[Get TOP N rows from a dataset](データセットから上位 N 行を取得する)

このモードを使用して最初の n 行のみを取得します。 このオプションは、少ない数の行で実験をテストするときに、いかなる方法でもデータの負荷を分散したり、サンプリングする必要がない場合に便利です。

  1. Studio ( クラシック) で実験 に Partition and Sample モジュールを追加し、データセットを接続します。

  2. [Partition or sample mode](パーティションまたはサンプル モード) : このオプションを [ヘッド] に設定します。

  3. [選択する行数]: 返す行数を入力します。

    指定する行の数は、負ではない整数にする必要があります。 選択した行の数が、データセット内の行の数よりも大きい場合は、データセット全体が返されます。

  4. 実験を実行します。

モジュールでは、指定された数の行のみを含む単一データセットが出力されます。 行は常に、データセットの一番上から読み取られます。

[Create a sample of data](データのサンプルを作成する)

このオプションでは、簡単なランダム サンプリングまたは階層ランダム サンプリングがサポートされます。 これは、テスト用のより小さい代表的なサンプル データセットを作成する場合に便利です。

  1. Studio ( クラシック) で実験 に Partition and Sample モジュールを追加し、データセットを接続します。

  2. パーティションモードまたはサンプル モード: これを [サンプリング] に 設定します

  3. サンプリング率: 0 から 1 の値を入力します。 この値では、出力データセットに含める必要があるソース データセットからの行の割合を指定します。

    たとえば、元のデータセットの半分のみが必要な場合は、「0.5」と入力して、サンプリング率が 50% である必要があることを示します。

    入力データセットの行はシャッフルされ、指定された比率に従って、選択的に出力データセットに配置されます。

  4. サンプリングのランダム シード: 必要に応じて、シード値として使用する整数を入力します。

    このオプションは、行を常に同じように分割する場合に重要となります。 既定値が 0 の場合、システム クロックに基づいて開始シードが生成されることを意味します。 実験を実行するたびに、若干異なる結果となる可能性があります。

  5. サンプリングの階層分割: サンプリングの前にデータセット内の行を一部のキー列で等しく分割することが重要な場合は、このオプションを選択します。

    [Stratification key column for sampling](サンプリングのための階層キー列) では、データセットを分割するときに使用する単一の階層列を選択します。 その後、データセット内の行は次のように分割されます。

    1. すべての入力行が、指定された階層列の値でグループ化 (階層化) されます。

    2. 各グループ内で行がシャッフルされます。

    3. 各グループは、指定された比率を満たすために、出力データセットに選択的に追加されます。

    階層サンプリングの詳細については、「テクニカル ノート」 セクションを参照 してください。

  6. 実験を実行します。

    このオプションでは、データの代表的なサンプリングを含む単一データセットがモジュールによって出力されます。

    データセットの残りの、サンプリングされていない部分は出力されません。 ただし、データセットに対して結合を作成するには、Apply SQL Transformation (変換の適用) モジュールを使用して、使用されていない行を特定します。

[Split data into partitions](データをパーティションに分割する)

データのサブセットにデータセットを分割する場合は、このオプションを使用します。 このオプションは、クロス検証のためにユーザーが設定した数のフォールドを作成する場合や、行をいくつかのグループに分割する場合にも役立ちます。

  1. Studio ( クラシック) で実験 に Partition and Sample モジュールを追加し、データセットを接続します。

  2. [Partition or sample mode](パーティションまたはサンプル モード) では、[Assign to Folds](フォールドに割り当てる) を選択します。

  3. [Use replacement in the partitioning](パーティション分割で置換を使用する) : 再利用される可能性がある行のプールにサンプリングされた行を戻す場合は、このオプションを選択します。 その結果、同じ行がいくつかのフォールドに割り当てられる可能性があります。

    置換を使用しない場合 (既定のオプション)、再利用される可能性がある行のプールにサンプリングされた行は戻されません。 その結果、各行を 1 つのフォールドのみに割り当てることができます。

  4. [Randomized split](ランダム分割) : 行をフォールドにランダムに割り当てる場合は、このオプションを選択します。

    このオプションを選択しない場合、ラウンドロビン方式を使用して、フォールドに行が割り当てられます。

  5. ランダム シード: 必要に応じて、シード値として使用する整数を入力します。 このオプションは、行を常に同じように分割する場合に重要となります。 それ以外の場合、既定値の 0 が設定され、ランダム開始シードが使用されることになります。

  6. 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 より大きくなる数値を入力すると、実験を行ったときにエラーが発生します。

  7. [Stratified split]\(階層分割|) : 行を分割時に階層化する場合は、このオプションを選択してから、階層列を選びます。

    階層サンプリングの詳細については、「テクニカル ノート」 セクションを参照 してください。

  8. 実験を実行します。

    このオプションでは、指定された規則を使用してパーティション分割された、複数のデータセットがモジュールによって出力されます。

[Use data from a predefined partition](定義済みのパーティションからデータを使用する)

このオプションは、データセットを複数のパーティションに分割しており、各パーティションをさらに分析するか、処理するために読み込む場合に使用されます。

  1. Studio ( クラシック) の実験 にパーティションとサンプル モジュールを追加します。

  2. それを、Partition and Sample (パーティションとサンプル) の前のインスタンスの出力に接続します。 そのインスタンスで、いくつかのパーティションを生成するために [Assign to Folds](フォールドに割り当てる) オプションが使用されている必要があります。

  3. [Partition or sample mode](パーティションまたはサンプル モード) : [Pick Fold](フォールドを選択する) を選択します。

  4. サンプリングするフォールドを指定する: インデックスを入力して使用するパーティションを選択します。 パーティション インデックスは 1 から始まります。 たとえば、データセットを 3 つの部分に分割した場合、パーティションのインデックスは 1、2、3 となります。

    無効なインデックス値を入力すると、デザイン時エラー "エラー 0018: データセットに無効なデータが含まれている" というエラーが発生します。

    フォールドでデータセットをグループ化するだけでなく、ターゲット フォールドとその他すべてという 2 つのグループにデータセットを分離することができます。 これを行うには、単一フォールドのインデックスを入力してから、[Pick complement of the selected fold]\(選択されたフォールドの補数を選択する\) というオプションを選び、指定されたフォールドのデータ以外のすべてを取得します。

  5. 複数のパーティションを操作する場合は、Partition and Sample (パーティションとサンプル) モジュールのインスタンスをさらに追加して、各パーティションを処理する必要があります。

    たとえば、以前に患者を年齢を使用して 5 つのフォールドにパーティション分割したとします。 個々のフォールドを使用するには、Partition モジュールと Sample モジュールのコピーを 5 つ必要とします。それぞれに異なるフォールドを選択します。

    ヒント

    サンプル実験であるパーティション 分割とサンプルは、この手法を示しています。

  6. 実験を実行します。

    このオプションでは、そのフォールドに割り当てられた行のみを含む、単一データセットがモジュールによって出力されます。

注意

フォールドの指定を直接表示することはできません。これらはメタデータ内にのみ存在します。

このモジュールの使用例については、次の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 データ テーブル 分割から発生するデータセット

こちらもご覧ください

サンプルおよび分割
データの分割
メタデータの編集
データをビンにグループ化する