データと前処理

クラス不均衡 くらすふきんこう

クラス不均衡不均衡データSMOTEオーバーサンプリングアンダーサンプリング
クラス不均衡について教えて

簡単に言うとこんな感じ!

訓練データの中で「正常品9900個、不良品100個」みたいに特定のカテゴリが極端に少ない状態のことだよ。AIが「全部正常!」と答えれば99%正解できてしまうから、不正検知や病気診断などでは特に厄介な問題なんだ!


クラス不均衡とは

クラス不均衡(Class Imbalance)とは、分類問題において各クラス(カテゴリ)のデータ件数が大きく偏っている状態を指します。例えば「正常:99件、異常:1件」という比率では、モデルが「全部正常」と予測するだけで99%の精度を達成できてしまいます。

しかしこの「99%正確なモデル」は実際には役に立ちません。異常を1件も検出できないからです。精度(Accuracy)だけでモデルを評価してはいけない典型的なケースです。

クラス不均衡が問題になりやすい業務領域は多岐にわたります。

業務領域少数クラスの例
不正検知不正取引(全体の0.1%以下)
医療診断陽性患者(疾患の希少性による)
製造検査不良品(通常1〜5%)
サイバーセキュリティ攻撃パケット
与信審査債務不履行

対処法の分類

データレベルの対策

手法内容特徴
オーバーサンプリング少数クラスのデータを水増し情報損失なし、過学習リスクあり
アンダーサンプリング多数クラスのデータを削減シンプル、情報損失あり
SMOTE少数クラスを合成して増やす多様性確保、境界付近に有効
ADASYN難しいサンプルを重点的に増やすSMOTEの改良版

アルゴリズムレベルの対策

  • クラス重み付けclass_weight='balanced'):少数クラスの損失を大きく評価
  • コスト考慮型学習:誤分類のコストを非対称に設定
  • 閾値の調整:判定の境界を少数クラスに有利にシフト

評価指標の見直し

精度(Accuracy)の代わりに以下を使う:

  • F1スコア:適合率と再現率の調和平均
  • AUC-ROC:閾値に依存しない総合評価
  • PR曲線:不均衡データに特に有効
  • G-mean:各クラスの再現率の幾何平均

歴史と背景

  • 1990年代後半:不均衡学習の問題が正式に研究対象に
  • 2002年:SMOTEが提案され、標準的手法となる
  • 2010年代:imbalanced-learnライブラリが整備される
  • 現在:LLMを使った少数クラスのデータ合成も活用される

SMOTEの仕組み

少数クラスの2点間を結ぶ線上に
ランダムな合成サンプルを生成する

  A ────────── 新しい点 ─── B
 (既存)                    (既存)

→ 少数クラスの「境界付近」を豊かにする効果

関連用語

  • 過学習 — 不均衡データでさらに悪化しやすい問題
  • データ拡張 — 少数クラスの水増しに使える手法
  • 合成データ — 不均衡解消のためのデータ生成
  • 混同行列 — 不均衡データの評価に必須のツール
  • F1スコア — 不均衡データに適した評価指標
  • 訓練データ — 不均衡が発生するデータの種類
  • 外れ値 — 少数クラスと混同されやすい概念