SMOTE

重要

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 (クラシック) のSMOTEモジュールを使用して、機械学習で使用されるデータセット内の一般的なケース数を増やす方法について説明します。 SMOTE は、単純に既存のケースを複製するよりも、まれなケースの数を増やす方法として適しています。

SMOTE モジュールを、偏っているデータセットに接続します。 データセットのバランスがとれていない理由は多数あります。対象となるカテゴリが母集団で非常にまれな場合や、データを収集するのが困難な場合があります。 通常、SMOTE は、分析するクラスが少ししか存在しない場合に使用します。

モジュールによって、元のサンプルを含むデータセットに加え、指定した割合に応じたマイノリティ合成サンプルの数が返されます。

SMOTE の詳細

SMOTE は、Synthetic Minority Oversampling Technique の略です。 これは、バランスの取れた方法でデータセット内のケースの数を増やすための統計手法です。 このモジュールは、入力として提供する既存のマイノリティ ケースから新しいインスタンスを生成することによって機能します。 この SMOTE の実装では、マジョリティ ケースの数は変更されません

新しいインスタンスは、既存のマイノリティ ケースの単なるコピーではなく、各ターゲット クラスとその最近傍に対する特徴空間をサンプリングするアルゴリズムで、ターゲット ケースの特徴とその近隣の特徴を組み合わせた新しい例を生成します。 この方法では、各クラスで使用できる特徴が増え、サンプルがより一般的になります。

SMOTE では、データセット全体を入力として受け取りますが、マイノリティ ケースの割合だけを増やします。 たとえば、ターゲット値 A を持っているのがケースの 1% しかなく (マイノリティ クラス)、ケースの 99% が値 B を持っている偏っているデータセットがあるとします。マイノリティ ケースの割合を以前の 2 倍の割合に増やすには、モジュールのプロパティの [SMOTE percentage]\(SMOTE 率\) に「200」と入力します。

SMOTE をサイズの小さいデータセットで使用して、しくみを確認することをお勧めします。 次の例では、Machine Learning Studio (クラシック) で使用できる血液された寄付データセットを使用します。

データセットを実験に追加し、データセットの出力で [ 視覚化 ] をクリックすると、データセット内の748行またはケースのうち、570ケース (クラス0の場合は76%)、クラス1の178ケース (24%) があることがわかります。 これはひどく偏っているわけではありませんが、クラス 1 は献血した人を表しているため、これらの行には、モデル化する特徴空間が含まれています。

ケースの数を増やすには、次のように 100 の倍数を使用して SMOTE 率の値を設定します。

クラス 0 クラス 1 total
元のデータセット

(SMOTE 率 = 0 に相当)
570

76%
178

24%
748
SMOTE 率 = 100 570

62%
356

38%
926
SMOTE 率 = 200 570

52%
534

48%
1104
SMOTE 率 = 300 570

44%
712

56%
1282

警告

SMOTE を使用してケースの数を増やしても、より正確なモデルが生成されるとは限りません。 異なる割合、さまざまな特徴セット、異なる数の最近隣によって実験を試みて、ケースの追加がモデルにどう影響を及ぼすかを確認してください。

SMOTE の構成方法

  1. SMOTE モジュールを実験に追加します。 このモジュールは、操作カテゴリのデータ変換モジュールの下にあります。

  2. ブーストするデータセットを接続します。 特定の列のみを使用するか、一部を除外することで、新しいケースを構築するための特徴空間を指定する場合は、SMOTE を使用する前に、「データセット内の列の選択」モジュールを使用して、使用する列を分離します。

    これを行わない場合、SMOTE を使用した新しいケースの作成は、入力として提供するしたすべての列に基づいて行われます。

  3. ラベルまたはターゲットクラスを含む列が、そのようにマークされていることを確認します。

    ラベル列がない場合は、メタデータの編集モジュールを使用して、クラスラベルを含む列を選択し、[フィールド] ボックスの一覧から [ラベル] を選択します。

  4. SMOTEモジュールは、ラベル列の少数派クラスを自動的に識別し、その少数派クラスのすべての例を取得します。

  5. [SMOTE percentage]\(SMOTE 率\) オプションに、出力データセット内のマイノリティ ケースのターゲットとする割合を示す整数を入力します。 次に例を示します。

    • 0」 (%) と入力します。 SMOTE モジュールにより、入力として指定したものとまったく同じデータセットが返されます。新しいマイノリティ ケースは追加されていません。 このデータセットでは、クラスの割合は変化しません。

    • 100」 (%) と入力します。 SMOTE モジュールにより、新しいマイノリティ ケースが生成され、元のデータセットに含まれていたものと同じ数のマイノリティ ケースが追加されます。 SMOTE はマジョリティケースの数を増加させないため、各クラスのケースの割合が変更されました。

    • 200」 (%) と入力します。 モジュールにより、マイノリティ ケースの割合が元のデータセットと比較して 2 倍になります。 これにより、マイノリティ ケースが前よりも 2 倍に増えることはありません。 代わりに、大規模なケースの数が同じになるようにデータセットのサイズが増加し、少数派ケースの数が目的の割合の値に一致するまで増加します。

    Note

    SMOTE 率には、100 の倍数のみを使用します。

  6. [Number of nearest neighbors]\(最近傍の数\) オプションを使用して、新しいケースを構築するときに SMOTE アルゴリズムで使用される特徴空間のサイズを決定します。 [ニアレスト ネイバー] は一部のターゲット ケースと非常に似ている 1 行のデータ (ケース) です。 任意の 2 つのケース間の距離は、すべての特徴の重み付けベクターを組み合わせることによって測定されます。

    • 最近傍の数を増やすことで、より多くのケースから特徴を取得できます。
    • 最近傍の数を低く抑えると、元のサンプルにより似ている特徴を使用できます。
  7. 同じ実験を同じデータで実行した場合と同じ結果が得られるようにする場合は、[ ランダムシード ] ボックスに値を入力します。 それ以外の場合、モジュールは実験のデプロイ時にプロセッサのクロック値に基づいてランダムシードを生成します。これにより、実行時に結果が多少異なる可能性があります。

  8. 実験を実行します。

    モジュールの出力は、元の行とマイノリティ ケースの追加された行を含むデータセットです。

ヒント

新しい行が追加されたことを確認するには、[ SQL 変換の適用] モジュールまたは [データの結合] モジュールを使用します。

テクニカル ノート

  • SMOTEモジュールを使用するモデルを発行する場合は、予測実験からSMOTEを削除してから、web サービスとして発行します。 その理由は、SMOTE はトレーニング中にモデルを改善するためのものであり、スコアリングを目的としたものではないからです。 発行された予測実験に SMOTE モジュールが含まれていると、エラーが発生することがあります。

  • SMOTE を適用する前に、欠損値のクリーニングやその他の変換を適用してデータを修正すると、多くの場合、より良い結果が得られます。

  • 一部の研究者は、SMOTE が高次元データまたはスパース データ (テキスト分類やゲノミクス データセットで使用されるデータ) に対して有効かどうかを調査しています。 このホワイトペーパーには、そのような場合に SMOTE を適用することによって生じる影響と理論的な有効性の概要が記載されています。 Blagus と Lusa: SMOTE は、高次元クラス-バランスの取れたデータのためのものです。

    データセットで SMOTE が有効でない場合は、その他の方法として、マイノリティ ケースをオーバーサンプリングしたりマジョリティ ケースをアンダーサンプリングするさまざまな方法、およびクラスタリング、バギングまたはアダプティブ ブーストを使用して学習者を直接的に支援する手法を検討できます。

想定される入力

Name 説明
サンプル データ テーブル サンプル データセット

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

名前 Range Type Default 説明
SMOTE 割合 >=0 Integer 100 100 の倍数でのオーバーサンプリングの量
最近隣の数 >=1 Integer 1 新しいケースの特徴を表す最近隣の数
Random seed (ランダム シード) Any Integer 0 乱数ジェネレーターのシード

出力

名前 説明
テーブル データ テーブル 元のサンプルと追加の合成少数クラスサンプルを含む データテーブル 。 新しいサンプルの数は (smotePercent/100) * T で、T は少数派クラスのサンプル数です。

こちらもご覧ください

サンプルおよび分割
モジュールの一覧 (アルファベット順)