SMOTEとは

SMOTEは、機械学習における不均衡データセット(Imbalanced Dataset)クラス不均衡問題を解消するために考案されたオーバーサンプリング手法の一つであり、少数クラスのサンプルとその近傍のサンプルを基に、人工的な合成データ(Synthetic Data)を生成するためのアルゴリズムのことです。

SMOTEの概要と不均衡データ問題

SMOTE(Synthetic Minority Over-sampling Technique、合成少数派オーバーサンプリング技術)は、訓練データセットにおいて、ある特定のクラス(少数クラス)のサンプル数が他のクラス(多数クラス)に比べて著しく少ない場合に生じる、クラス不均衡問題に対処するために広く用いられる手法です。

クラス不均衡なデータで機械学習モデルを訓練すると、モデルはサンプル数の多い多数クラスの予測を優先的に最適化し、少数クラスの学習がおろそかになりがちです。その結果、少数クラスのサンプルに対する予測精度(特にリコールやF1スコア)が極端に低下し、モデルの汎化性能が損なわれてしまいます。

SMOTEは、少数クラスのサンプルを単に複製して数を増やす(オーバーサンプリング)のではなく、少数クラスのサンプル群が持つ特徴空間の分布を保ちながら、新しい合成サンプルを生成するというアプローチを取ります。これにより、モデルに提供される情報が豊かになり、より正確な識別境界の学習を促します。

主な目的は、少数クラスのデータ量を増加させつつ、その特徴空間内での多様性を維持し、モデルの予測性能と公平性を向上させることです。

SMOTEの技術的仕組みと合成データの生成

SMOTEは、以下のステップで合成サンプルを生成します。この処理は、少数クラスの各サンプルに対して個別に実行されます。

1. 最近傍点の探索

少数クラスに属する任意のサンプル $x_i$ を選択します。次に、そのサンプル $x_i$ から特徴空間上の距離が最も近い $k$ 個のサンプル($k$ はユーザーが指定)を、同じ少数クラスのサンプルの中から探索します。これらは$x_i$の最近傍点と呼ばれます。

2. 合成サンプルの生成

少数クラスのサンプル $x_i$ と、その近傍点からランダムに選択された一つのサンプル $\hat{x}_i$ との間で、新しい合成サンプル $x_{new}$ を生成します。

この生成は、特徴空間における線形補間によって行われます。

x_{new} = x_i + (\hat{x}_i - x_i) \cdot \delta

ここで、$\delta$ は0から1の範囲でランダムに選ばれる数値です。

3. 特徴空間での多様性の確保

上記の計算により、新しいサンプル $x_{new}$ は、元のサンプル $x_i$ とその近傍点 $\hat{x}_i$ を結ぶ線分上のどこかに生成されます。$\delta$ がランダムであるため、毎回異なる位置にサンプルが生成され、元のデータを単に複製する場合と比較して、合成データの多様性(バリエーション)が確保されます

この手順を、少数クラスのサンプル数が多数クラスのサンプル数に近づくまで繰り返すことで、データセットのクラス分布のバランスが改善されます。

SMOTEの課題と拡張手法

SMOTEは有効な手法ですが、いくつか課題も存在します。

  1. ノイズの生成: 少数クラス内に存在するノイズや外れ値を近傍点として使用してしまうと、そのノイズを拡大・増幅させてしまい、モデルの学習を阻害する可能性があります。
  2. 識別境界の曖昧化: 多数クラスの領域に非常に近い場所で合成サンプルを生成してしまうと、少数クラスと多数クラスの境界線が曖昧になり、分類精度がかえって悪化する場合があります。

これらの課題に対処するため、後にBorderline-SMOTE(少数クラスと多数クラスの境界線付近のサンプルに焦点を絞る)やADASYN(学習が難しいサンプルほど多くの合成サンプルを生成する)といった、SMOTEを改良した拡張手法が開発されています。

関連用語

クラス不均衡 | 今更聞けないIT用語集
不均衡データセット | 今更聞けないIT用語集
AIソリューション

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。