クラス不均衡
クラス不均衡とは?
クラス不均衡は、分類問題において一方のクラス(多数派クラスと呼ばれる)のサンプル数が、もう一方のクラス(少数派クラスと呼ばれる)のサンプル数を大幅に上回る場合に発生します。この不均衡により、モデルが多数派クラスの予測に偏る可能性があり、少数派クラスのケース(例:詐欺検出や希少疾患の診断など、重要なケースであることが多い)の検出精度が低下します。
なぜ重要なのか?
不均衡が処理されない場合、モデルは以下のような問題を引き起こす可能性があります:
- 全体的な精度は高いが、少数派クラスのケースを検出できない
- 多くの偽陰性(検出漏れ)が発生し、医療などの分野では危険になり得る
- 多数派クラスが精度を支配するため、評価指標が誤解を招く
- 新しいデータに対する汎化性能が低下する
不均衡を処理するテクニック
クラス不均衡処理とは、一方のクラス(多数派)がもう一方のクラス(少数派)よりも大幅にサンプル数が多い分類問題に対処するために使用される一連のテクニックを指します。
オーバーサンプリング
オーバーサンプリングは、データセットにおけるクラス不均衡の問題に対処するために使用されます。特に、一方のクラスがもう一方を大幅に上回るバイナリ分類問題で一般的です。
不均衡なデータセットでは、多数派クラスが支配的になり、機械学習モデルがそのクラスをより頻繁に予測するようにバイアスがかかり、少数派クラスを完全に無視する可能性があります。これにより、関心のあるクラスであることが多い少数派クラスの再現率と適合率が低下します。
オーバーサンプリングの機能
オーバーサンプリングは、既存のサンプルを複製するか、新しい合成サンプルを生成することにより、少数派クラスの表現を増やします。目的はクラス分布のバランスを取り、モデルが両方のクラスに対して均等な学習機会を得られるようにすることです。
一般的なテクニック:
- SMOTE(Synthetic Minority Over-sampling Technique): 既存の少数派サンプル間を補間して合成少数派クラスサンプルを作成します。
- RandomOverSampler: 少数派クラスのサンプルをランダムに複製します。
- BorderlineSMOTE: クラスが重複する決定境界付近でのみ合成サンプルを生成します。
- ADASYN: SMOTEに類似していますが、学習が困難な少数派ケースのサンプル作成に重点を置きます。
例:
詐欺検出データセットがあるとします:
| クラス | サンプル数 |
|---|---|
| 正常 | 10,000 |
| 詐欺 | 200 |
SMOTEを使用して合成詐欺ケースを生成し、少数派クラスのサンプルを200から10,000に増やします。このバランスの取れたデータセットにより、モデルが詐欺パターンをより適切に学習し、詐欺ケースの検出漏れ(偽陰性)を減らし、検出率を向上させることができます。
アンダーサンプリング
アンダーサンプリングは、多数派クラスのサイズを少数派クラスのサイズと同程度になるように削減することで、機械学習データセットにおけるクラス不均衡を処理するテクニックです。これにより、よりバランスの取れたデータセットが作成され、トレーニング中にモデルが両方のクラスに均等に注意を払うようになります。
典型的な不均衡シナリオでは、一方のクラス(通常、関心の低いクラス)がデータセットを支配します。例えば、メール分類タスクでは、「非スパム」メールの数が「スパム」メールの数を大幅に上回ることがあります。バランスを取らないと、モデルは精度を最適化するために多数派クラスのみを予測するように学習し、少数派クラスを完全に無視する可能性があります。
アンダーサンプリングの機能
アンダーサンプリングは、多数派クラスからサンプルをランダムまたは戦略的に除去して少数派クラスのサイズに近づけることで、偏った分布を軽減します。これにより、モデルは両方のクラスからより均等に学習するようになり、少数派クラスでのパフォーマンスが向上します。
一般的なテクニック:
- RandomUnderSampler: 多数派クラスからランダムにサンプルを除去します。
- TomekLinksUnderSampler: 少数派サンプルに非常に近い多数派サンプルを除去します(ノイズの多い重複をクリーニング)。
- EditedNNUnderSampler: 最近傍法で誤分類された多数派サンプルを除去し、ノイズを削減します。
- NearMissUnderSampler: 少数派サンプルに近い多数派サンプルを保持します(困難な境界ケースに焦点)。
例:
医療診断データセットの場合:
| クラス | サンプル数 |
|---|---|
| 健康 | 5000 |
| 疾患 | 300 |
RandomUnderSamplerを使用して、健康サンプルを5,000から300に削減し、疾患サンプルと一致させます。これにより、モデルが健康クラスへのバイアスを回避し、疾患をより適切に検出できるようになります。
最終更新日 2026-03-05 11:43:24 +0530 IST
Yes
No
Send your feedback to us