機械学習における不均衡データの対策について

AI実装検定のご案内

機械学習モデルを実務で使う際、多くの人が直面するのが「不均衡データ(imbalanced data)」の問題です。

これは、分類タスクにおいてクラス間のデータ数に大きな偏りがある状態を指します。

たとえば、1,000件のうち「正常」950件、「異常」50件といったケースです。

一見、全体精度(accuracy)が高く見えても、実は「少数派クラス(異常)」をほとんど検出できていない。

こうした状況を避けるためには、データの扱い方や評価の仕方に工夫が必要です。

本記事では、不均衡データの問題点から実践的な対策法までを、データ処理・アルゴリズム調整・評価指標・実務運用の4視点で徹底解説します。

目次

不均衡データがもたらす問題

不均衡なデータセットでは、モデルが多数派クラスを優先的に学習してしまい、少数派クラスを「無視する」傾向があります。

結果として「異常検知」や「不正取引検出」、「病気の診断」といった領域では致命的な誤分類を引き起こします。

特に注意すべきは、評価データにも偏りがあると、モデル性能を過大評価してしまう点です。

現実の分布を反映していないテストセットでは、実運用時にRecall(再現率)が急落することもあります。

データレベルでの対策

データレベルのアプローチでは、クラス分布を人工的に調整して「学習しやすいデータ構造」を作ります。

アンダーサンプリング(Under-sampling)

多数派クラスを一部削除して、データバランスを取る方法です。

  • 利点:学習コストが低く、単純で高速。
  • 欠点:有益なデータまで削除してしまう可能性。

代表手法

  • Random Under-Sampling
  • Tomek Links(境界上の曖昧なサンプル除去)
  • Edited Nearest Neighbors(近傍分類に合わないデータ削除)

オーバーサンプリング(Over-sampling)

少数派クラスのサンプルを増やすことでバランスを取ります。

単純コピーでは過学習しやすいため、近傍点の情報をもとに新サンプルを生成するSMOTE系手法が主流です。

代表手法

  • SMOTE(Synthetic Minority Over-sampling Technique)
    → 少数派サンプルとその近傍を線形補間して合成データを作成。
  • ADASYN(Adaptive Synthetic Sampling)
    → 分類が難しいサンプルほど多く合成し、学習を重点化。
  • Borderline-SMOTE
    → クラス境界付近のデータのみを強調的に生成。

注意点
SMOTE系は境界を滑らかにしすぎて、クラスの境界がぼやけるリスクがあります。適用後は可視化などで分布を確認するのが望ましいです。

データ拡張(Data Augmentation)

画像・音声・テキストのような非構造データでは、少数派データを「変換」により人工的に増やします。

  • 画像:回転・反転・彩度変更・ノイズ追加
  • テキスト:同義語置換・語順変更・バックトランスレーション

これにより、データ数だけでなく多様性も確保できます。

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

データ操作ではなく、学習アルゴリズムそのものに不均衡を考慮させる方法です。

重み付き損失関数(Cost-sensitive Learning)

クラスごとに誤分類コストを変え、少数派クラスを重視するよう学習を調整します。

実装例

  • scikit-learn:class_weight='balanced'(ロジスティック回帰、SVMなど)
  • XGBoost / LightGBM:scale_pos_weight(正例/負例比に応じて設定)
  • ニューラルネット:損失関数(例:クロスエントロピー)にクラス重みを付与

この方法はデータ操作を行わないため、情報損失を避けつつバランス補正できます。

アンサンブル学習

複数の分類器を組み合わせてバランスを取る戦略です。

  • Balanced Random Forest:各決定木が均等なクラスサンプルで学習。
  • EasyEnsemble / BalanceCascade:多数派を複数の部分集合に分け、複数モデルで学習・統合。

こうした手法はアンダーサンプリングの弱点(情報損失)を補いつつ、安定した性能を得られます。

アノマリ検知モデルの活用

極端な不均衡(例:異常が0.1%以下)では、従来の分類ではなく異常検知モデルを用いるのが有効です。

  • One-Class SVM:正常データのみで学習し、外れたデータを「異常」と判断。
  • Isolation Forest:データをランダムに分割し、孤立しやすい点を異常とみなす。

これらはラベル付き少数派データがほとんどない場合にも適用可能です。

評価指標による対策

不均衡データでは、「Accuracy」だけでは実態を正しく反映できません。

代わりに、以下の指標を重視します。

指標意味
Precision(適合率)少数派と予測したうち、実際に正解だった割合。
Recall(再現率)実際の少数派データのうち、正しく検出できた割合。
F1スコアPrecisionとRecallの調和平均(バランス評価)。
ROC-AUCクラス判別能力の全体的な評価。しきい値に依存しにくいが、極端な不均衡では過大評価しやすい。
PR-AUCPrecision-Recall曲線下の面積。不均衡が強い場合はROC-AUCより信頼性が高い。

特に異常検知や不正検知のようなタスクでは、PR-AUCが最も現実的な性能指標となります。

マルチクラスや極端な偏りがある場合は、macro-F1weighted-F1も活用すると良いでしょう。

実務的な戦略

データ収集・補完

最も根本的な解決策は、少数クラスのデータを増やすことです。

難しい場合は、類似領域のデータやシミュレーション結果を補完的に活用します。

しきい値調整(Threshold Tuning)

モデル出力の確率に対して分類のしきい値を変更します。

  • Recallを重視するなら、しきい値を下げて少数派を拾う。
  • Precisionを重視するなら、しきい値を上げて誤検出を減らす。
    最適なしきい値は、ROC曲線やPR曲線からF1最大点を求めることで決定できます。

スコアリング運用

極端な不均衡では「二値分類」ではなく、「異常スコアを出して上位n件を人間が確認」する運用が現実的です。

金融・医療分野で特によく採用されています。

まとめ

観点主な対策メリット注意点
データレベルSMOTE / ADASYN / Under-samplingクラス分布を改善情報損失・ノイズ生成リスク
アルゴリズムレベル重み付き学習 / アンサンブル効率的かつ柔軟ハイパーパラメータ調整が必要
評価指標F1 / ROC-AUC / PR-AUC公平な性能評価指標解釈に注意
実務運用データ収集 / しきい値最適化現場導入が容易コスト・リソースに依存

さらに深く学びたい人へ

実装レベルでは以下のライブラリが実務で多用されます。

  • imbalanced-learnSMOTE, RandomUnderSampler, EasyEnsemble
  • scikit-learnclass_weight, precision_recall_curve, roc_auc_score
  • LightGBM / XGBoostscale_pos_weight, eval_metric='aucpr'

これらを組み合わせることで、高精度かつ公平なモデルを構築することができます。

以上、機械学習における不均衡データの対策についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次