クラス不均衡とは
クラス不均衡(Class Imbalance)とは、機械学習、特に分類問題において、データセット内の複数のクラスのうち、ある特定のクラスに属するデータインスタンスの数が、他のクラスに比べて極端に少ない状態を指します。
この不均衡は、通常の機械学習アルゴリズムの性能に悪影響を及ぼし、少数クラスの予測精度が著しく低下する原因となるため、適切な対処が必要です。
クラス不均衡の基本的な概念
多くの現実世界の問題では、分類対象となるデータの分布が均等であることは稀です。
例えば、不正検知システムでは、不正取引(少数クラス)は全体の取引のごく一部であり、正常取引(多数クラス)が圧倒的多数を占めます。このような状況で、標準的な機械学習アルゴリズムをそのまま適用すると、多数クラスの分類精度は高くても、真に識別したい少数クラスを見落としてしまう可能性が高まります。
主な概念は以下の通りです。
- 分類問題(Classification Problem): 入力データがどのカテゴリ(クラス)に属するかを予測する機械学習タスクです。例として、スパムメールの判定(スパム/非スパム)、病気の診断(陽性/陰性)、画像内の物体認識(猫/犬/鳥など)があります。
- 多数クラス(Majority Class): データセット内で、最も多くのインスタンスを持つクラスです。
- 少数クラス(Minority Class): データセット内で、最も少ないインスタンスを持つクラスです。多くの場合、この少数クラスの正確な識別が、ビジネスや実世界においてより重要となります。
- 正解率(Accuracy): 全データのうち、正しく分類されたデータの割合を示す評価指標です。クラス不均衡なデータセットでは、正解率が高いだけでは必ずしも良いモデルとは言えません。なぜなら、全てのデータを多数クラスに分類するだけでも、高い正解率が得られてしまうためです。
クラス不均衡がモデル学習に与える影響
クラス不均衡なデータセットで標準的な機械学習アルゴリズムを訓練すると、以下のような問題が生じやすくなります。
- 予測の偏り: 多くの機械学習アルゴリズムは、学習時に多数派のクラスを優先的に学習し、その分類精度を最大化しようとします。これは、多数派クラスを正しく分類することが、全体の正解率(Accuracy)を向上させる上で最も効率的であるためです。結果として、少数クラスは適切に学習されず、その予測精度が著しく低下します。
- 少数クラスの見落とし: モデルが少数クラスのパターンを十分に学習できないため、実際には少数クラスに属するデータを多数クラスと誤って分類する「偽陰性(False Negative)」が多発する傾向があります。これは、不正取引の見逃しや病気の見落としなど、実世界で深刻な問題を引き起こす可能性があります。
- 評価指標の誤解: 正解率(Accuracy)が高くても、それが少数クラスの正確な識別によるものではなく、単に多数クラスを正しく分類した結果である可能性があります。そのため、クラス不均衡な状況では、正解率以外の評価指標(適合率、再現率、F1スコア、ROC曲線下の面積など)を用いることが重要です。
クラス不均衡への対処法
クラス不均衡問題に対処するための主なアプローチは、データレベル、アルゴリズムレベル、そしてアンサンブル学習の3つに分類されます。
1. データレベルのアプローチ(Data-Level Approaches)
訓練データの分布を調整することで、不均衡を緩和します。
- オーバーサンプリング(Oversampling): 少数クラスのデータインスタンスを複製したり、人工的に新しい少数クラスのインスタンスを生成したりして、少数クラスのデータ数を増やします。
- 単純なオーバーサンプリング: 少数クラスのデータを単純に複製します。
- SMOTE(Synthetic Minority Over-sampling Technique): 少数クラスの各データポイントと、その近傍のデータポイント間の特徴空間を補間することで、合成的な新しい少数クラスのインスタンスを生成します。これにより、過学習のリスクを軽減します。
- ADASYN(Adaptive Synthetic Sampling): 学習が難しい少数クラスのインスタンスに対して、より多くの合成データを生成するSMOTEの拡張版です。
- アンダーサンプリング(Undersampling): 多数クラスのデータインスタンスの一部を削除して、多数クラスのデータ数を減らします。
- 単純なアンダーサンプリング: 多数クラスのデータをランダムに削除します。情報が失われるリスクがあります。
- Tomek Links: 異なるクラスに属するが非常に近い位置にあるデータペア(Tomek Link)のうち、多数クラス側のインスタンスを削除することで、クラス境界をより明確にします。
- Edited Nearest Neighbours (ENN): 多数クラスのデータのうち、近傍の少数クラスによって誤分類されるインスタンスを削除します。
- ハイブリッドなアプローチ: オーバーサンプリングとアンダーサンプリングを組み合わせて利用します。例えば、SMOTEとTomek Linksを組み合わせたSMOTE-Tomekなどがあります。
2. アルゴリズムレベルのアプローチ(Algorithm-Level Approaches)
機械学習アルゴリズムの内部的な動作を変更し、クラス不均衡を直接考慮するようにします。
- 重み付け学習(Cost-Sensitive Learning): 少数クラスの誤分類に対して、より大きなペナルティ(コスト)を割り当てることで、モデルがその誤分類を避けるように学習します。具体的には、損失関数にクラスごとの重みを組み込んだり、訓練データ内のインスタンスに異なる重みを割り当てたりします。
- 多くの分類器(例: サポートベクターマシン、ロジスティック回帰、決定木、ニューラルネットワーク)は、
class_weight
などのパラメータを通じてクラスごとの重みを設定できます。
- 多くの分類器(例: サポートベクターマシン、ロジスティック回帰、決定木、ニューラルネットワーク)は、
- 閾値調整(Threshold Adjustment): 分類器がクラスの確率を出力する場合、デフォルトの分類閾値(通常0.5)を調整します。例えば、偽陰性のコストが高い場合は、陽性と判断する閾値を下げることで、より多くの陽性を検出できるようにします。
3. アンサンブル学習(Ensemble Learning)のアプローチ
複数のモデルを組み合わせることで、クラス不均衡問題に対処します。
- バギングベースの手法
- Balanced Bagging: 多数クラスをアンダーサンプリングした複数のサブセットを生成し、それぞれで弱学習器を訓練し、その結果を結合します。
- ブースティングベースの手法
- コストセンシティブAdaBoost: 誤分類コストを考慮してインスタンスの重みを更新するAdaBoostの拡張版です。高コストな誤分類が発生したインスタンスにより大きな重みを与えます。
クラス不均衡な状況での評価指標
クラス不均衡なデータセットでは、正解率(Accuracy)だけを評価指標とすることは適切ではありません。以下の指標を併用することが推奨されます。
- 適合率(Precision):
(予測が正のうち、実際に正であった割合)
- 再現率(Recall / Sensitivity):
(実際が正のうち、正と予測できた割合)
- F1スコア(F1 Score): 適合率と再現率の調和平均
- G-mean(Geometric Mean): 多数クラスと少数クラスの再現率の幾何平均。
- ROC曲線(Receiver Operating Characteristic curve)/ AUC(Area Under the Curve): 分類閾値によらず、モデルの判別能力を評価します。
クラス不均衡(Class Imbalance)とは、分類問題において、データセット内の特定のクラスに属するデータ数が他のクラスに比べて極端に少ない状態です。この状況下では、標準的な機械学習アルゴリズムは多数クラスに偏って学習し、ビジネス上重要な少数クラスを見落とす(偽陰性が多発する)リスクがあります。
この問題への対処法としては、少数クラスのデータを増やすオーバーサンプリング(例: SMOTE)や、多数クラスのデータを減らすアンダーサンプリング、またはそれらのハイブリッドなアプローチといったデータレベルの手法があります。また、学習アルゴリズム自体に修正を加える重み付け学習や閾値調整などのアルゴリズムレベルの手法、さらにはコストセンシティブAdaBoostのようなアンサンブル学習のアプローチも有効です。
クラス不均衡な問題においては、正解率だけでなく、適合率、再現率、F1スコア、ROC/AUCなどの評価指標を総合的に判断することが不可欠です。これらの対処法を適切に適用することで、より頑健で実用的な機械学習モデルを構築し、ビジネス上の目標達成に貢献できます。
関連用語
お問い合わせ
システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。
APPSWINGBYの
ソリューション
APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。
システム開発
既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。
iOS/Androidアプリ開発
既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。
リファクタリング
他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。

ご相談・お問い合わせはこちら
APPSWINGBYのミッションは、アプリでビジネスを加速し、
お客様とともにビジネスの成功と未来を形作ること。
私達は、ITテクノロジーを活用し、様々なサービスを提供することで、
より良い社会創りに貢献していきます。
T関する疑問等、小さなことでも遠慮なくお問合せください。3営業日以内にご返答致します。

ご相談・お問合せはこちら
APPSWINGBYのミッションは、アプリでビジネスを加速し、お客様とともにビジネスの成功と未来を形作ること。
私達は、ITテクノロジーを活用し、様々なサービスを提供することで、より良い社会創りに貢献していきます。
IT関する疑問等、小さなことでも遠慮なくお問合せください。3営業日以内にご返答させて頂きます。