クラス不均衡 くらすふきんこう
クラス不均衡不均衡データSMOTEオーバーサンプリングアンダーサンプリング
クラス不均衡について教えて
簡単に言うとこんな感じ!
訓練データの中で「正常品9900個、不良品100個」みたいに特定のカテゴリが極端に少ない状態のことだよ。AIが「全部正常!」と答えれば99%正解できてしまうから、不正検知や病気診断などでは特に厄介な問題なんだ!
クラス不均衡とは
クラス不均衡(Class Imbalance)とは、分類問題において各クラス(カテゴリ)のデータ件数が大きく偏っている状態を指します。例えば「正常:99件、異常:1件」という比率では、モデルが「全部正常」と予測するだけで99%の精度を達成できてしまいます。
しかしこの「99%正確なモデル」は実際には役に立ちません。異常を1件も検出できないからです。精度(Accuracy)だけでモデルを評価してはいけない典型的なケースです。
クラス不均衡が問題になりやすい業務領域は多岐にわたります。
| 業務領域 | 少数クラスの例 |
|---|---|
| 不正検知 | 不正取引(全体の0.1%以下) |
| 医療診断 | 陽性患者(疾患の希少性による) |
| 製造検査 | 不良品(通常1〜5%) |
| サイバーセキュリティ | 攻撃パケット |
| 与信審査 | 債務不履行 |
対処法の分類
データレベルの対策
| 手法 | 内容 | 特徴 |
|---|---|---|
| オーバーサンプリング | 少数クラスのデータを水増し | 情報損失なし、過学習リスクあり |
| アンダーサンプリング | 多数クラスのデータを削減 | シンプル、情報損失あり |
| SMOTE | 少数クラスを合成して増やす | 多様性確保、境界付近に有効 |
| ADASYN | 難しいサンプルを重点的に増やす | SMOTEの改良版 |
アルゴリズムレベルの対策
- クラス重み付け(
class_weight='balanced'):少数クラスの損失を大きく評価 - コスト考慮型学習:誤分類のコストを非対称に設定
- 閾値の調整:判定の境界を少数クラスに有利にシフト
評価指標の見直し
精度(Accuracy)の代わりに以下を使う:
歴史と背景
- 1990年代後半:不均衡学習の問題が正式に研究対象に
- 2002年:SMOTEが提案され、標準的手法となる
- 2010年代:imbalanced-learnライブラリが整備される
- 現在:LLMを使った少数クラスのデータ合成も活用される
SMOTEの仕組み
少数クラスの2点間を結ぶ線上に
ランダムな合成サンプルを生成する
A ────────── 新しい点 ─── B
(既存) (既存)
→ 少数クラスの「境界付近」を豊かにする効果