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

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

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

注意

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

このコンテンツは、Studio (クラシック) のみに関連しています。 Azure Machine Learning デザイナーに同様のドラッグアンドドロップモジュールが追加されました。 この記事では、2つのバージョンの比較について詳しく説明します。

モジュールの概要

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

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

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

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

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

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

  • サンプリングを行う。

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

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

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

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

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

  • 上位の行数を取得する

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

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

  1. Studio (クラシック) で、 パーティションとサンプル モジュールを実験に追加し、データセットを接続します。

  2. [パーティションまたはサンプルモード]: このオプションを [ Head] に設定します。

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

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

  4. 実験を実行します。

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

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

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

  1. Studio (クラシック) で、 パーティションとサンプル モジュールを実験に追加し、データセットを接続します。

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

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

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

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

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

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

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

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

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

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

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

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

  6. 実験を実行します。

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

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

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

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

  1. Studio (クラシック) で、 パーティションとサンプル モジュールを実験に追加し、データセットを接続します。

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

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

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

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

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

  6. パーティショナーメソッドを指定 します。次のオプションを使用して、各パーティションにデータを分配する方法を示します。

    • [均等に分割]: このオプションを使用すると、各パーティションに同じ数の行を配置できます。 出力パーティションの数を指定するには、[Specify number of folds to split evenly into](均等に分割するフォールドの数を指定する) テキスト ボックスに整数を入力します。

    • たとえば、3 つのパーティションを作成し、最初のパーティションに 50% のデータが含まれ、残りの 2 つのパーティションにそれぞれ 25% のデータが含まれるようにする場合、[List of proportions separated by comma](コンマで区切られた比率のリスト) テキスト ボックスをクリックし、「.5, .25, .25」という数値を入力します。

      すべてのパーティション サイズの合計が、ちょうど 1 になるようにしてください。

      • 合計が 1 より小さく なる数値を入力すると、残りの行を保持するために余分なパーティションが作成されます。 たとえば、「.2」と「.3」の値を入力した場合、すべての行の残りの 50% を保持する 3 つ目のパーティションが作成されます。

      • 合計が 1 より大きく なる数値を入力すると、実験を行ったときにエラーが発生します。

  7. 層化 split: 分割時に行を層化にする場合は、このオプションを選択し、[ ata] 列 を選択します。

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

  8. 実験を実行します。

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

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

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

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

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

  3. パーティションまたはサンプルモード: [ フォールド の選択] を選択します。

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

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

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

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

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

    ヒント

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

  6. 実験を実行します。

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

注意

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

このモジュールの使用方法の例については、 Azure AI Galleryを参照してください。

  • 二項分類のクロス検証: ランダムにサンプリングされた小さなデータセットを作成するために、20% のサンプリングレートが適用されます。 元の国勢調査データセットは3万行を超えています。サンプリングされたデータセットには約6500が含まれます。

  • 回帰のクロス検証: データはランダムかつ均等に5つのフォールドに割り当てられ、層化はありません。結果はクロス検証に使用されます。

  • パーティションとサンプルの分割: パーティション分割とサンプリングを使用する複数の方法を示します。 まず、[フォールド に割り当てる ] オプションを使用して、サイズが均等に設定された3つのグループのいずれかにデータセット内の行を割り当てます。 次に、 パーティションとサンプル のさらに3つのインスタンスを追加します。 選択 すると、データのサブセットに操作が適用されます。

    • 最初のフォールド (インデックス 1) では、行がランダムに分割されます。
    • 2番目のフォールド (インデックス 2) では、行は教育によって分割されます。
    • 3番目のフォールド (インデックス 3) では、行は年齢によって分割されます。

テクニカル ノート

  • 層化列には不連続値のカテゴリを指定する必要があります。 列がまだカテゴリではなく、エラーが発生する場合は、[ メタデータの編集 ] を使用して列のプロパティを変更します。

  • 指定する層化列には、連続データ (つまり、各セルに浮動小数点値を含む数値データ) を含めることはできません。 それ以外の場合、モジュールはデータを処理できず、エラーを返します。

    その理由は、層化に使用される列には、有効な値の有限のセットが必要であるためです。 指定された層化列に浮動小数点値が含まれていて、その列の型がカテゴリでない場合は、無制限の数の値が含まれている可能性があります。

  • [層] 列にブール値が含まれており、それをカテゴリとして解釈する場合は、メタデータの 編集 モジュールを使用してメタデータラベルを変更する必要があります。

  • 一意の値が多すぎる文字列データや数値データが含まれている場合、その列は層化サンプリングの候補として適していません。

層化サンプリングの詳細

層化サンプリング により、データのサブセットには、選択した層化列の代表的なサンプリングが確実に行われます。 この手法は、たとえば、トレーニング データにテスト データと同じ年齢値分布が含まれていることを (またはその逆を) 確認するときに便利です。 あるいは、ヘルスケアの研究で性別列で層化し、データを区分する場合、男性と女性を均一に分配するときに役立ちます。 層化を利用すると、選択した値の比率が維持されます。

データを分割する値を指定するには、層化 として機能する1つの列を選択します。

このモジュールでは、層化列がカテゴリ列である必要があります。 層に整数値の列を使用する場合、この列にカテゴリ型を割り当てることをお勧めします。 これは、データのスキーマを使用して Azure Machine Learning Studio (クラシック) に追加するか、[ メタデータの編集] を使用して列のメタデータを更新することができます。

連続するデータ (各セルに浮動小数点値を含む数値データ) を持つ列は、層化列として使用できません。 エラーが発生した場合は、 グループデータをビン に使用して値を不連続範囲に分類し、[ メタデータの編集 ] を使用して列がカテゴリとして扱われることを保証できます。

想定される入力

名前 Type 説明
データセット データ テーブル 分割するデータセット

モジュールのパラメーター

名前 Range Type Default 説明
パーティションまたはサンプルのモード List サンプリング メソッド サンプリング パーティションまたはサンプリングのモードを選択します
パーティション分割で置換を使用する Any Boolean False フォールドが不整合 (既定-置換なし) であるか、重複している (true の場合は置き換える) かどうかを示します。
ランダム化分割 Any Boolean True 分割がランダムかどうかを示します
Random seed (ランダム シード) Any Integer 0 乱数ジェネレーターのシードを指定します
パーティショナー方法を指定する List パーティション方法 均等にパーティション分割 同じサイズのフォールドに分割するには [ 均等 に分割] を選択し、カスタマイズされたサイズのフォールドに分割するには、カスタマイズされ た比率でパーティション 分割します
均等に分割するフォールド数を指定する >=1 Integer 5 分割するパーティションの数を選択してください
層化分割 List True/False 型 False 分割が層化されるかどうかを示します
層化キー列 Any ColumnSelection 層化キーが含まれます
コンマで区切られた割合の一覧 Any String コンマ区切りで比率を一覧表示します
カスタマイズしたフォールドの割り当ての層化分割 Any True/False 型 False 分割がカスタマイズされたフォールドに対して分割が層化されるかどうかを示します
カスタマイズしたフォールドの割り当ての層化キー列 Any ColumnSelection カスタマイズしたフォールドの割り当てに対する層化キーが含まれます
サンプリングするフォールドを指定する >=1 Integer 1 サンプリングするフォールドのインデックスが含まれています
選択したフォールドの補数を選択する Any Boolean False 指定したフォールドの補数を選択します
サンプリング率 Any Float 0.01 サンプリング レートを選択します
サンプリングのランダム シード Any Integer 0 サンプリングの乱数ジェネレーターのシードを指定します
サンプリングの層化分割 Any 真/偽 False サンプリングの分割が層化されるかどうかを示します
サンプリングの層化キー列 Any ColumnSelection サンプリングの層化キーが含まれます
選択する行の数 >=0 Integer 10 次のモジュールに渡すことができるレコードの最大数を選択します

出力

名前 Type 説明
oDataset データ テーブル 分割から発生するデータセット

関連項目

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