- はじめに
- 1. 不均衡データとは何か
- 2. 不均衡データへの対処の根本的な考え方
- 3. データレベルの対処法: サンプリング技術
- 4. アルゴリズムレベルの対処法
- アンサンブル手法
- 6. 評価指標と検証方法
- ここ最近の不均衡データへの対処方法
- 最後に
はじめに
みなさん、データ分析や機械学習をやっていると必ず直面する問題があります。そう、不均衡データです。クレジットカード詐欺検知や製造業の不良品検出など、現実の問題では「正常」と「異常」のサンプル数には圧倒的な差があることがほとんどです。
不均衡データの処理方法については「SMOTEでオーバーサンプリングすればいいんでしょ」とか「class_weight='balanced'を設定すればOK」といった断片的な知識は広まっていますが、その背後にある理論や、各手法の適用場面についての理解は意外と浅いものです。私自身も「なんとなくこの方法を使っておけば大丈夫だろう」と思っていた一人です。そして何より、実務では必ずと言っていいほど遭遇するのに、機械学習系の書籍ではあまり触れられてるのを個人的には一度も見たことがありません!(書籍の知識が古いだけかも...最近は理論系しか読んでいないもので...)
そこで今回は、不均衡データの理論から様々な対処法、そしてそれらがなぜ効果的なのかの概念的説明まで、徹底的に掘り下げていきたいと思います。初学者でも理解できるように、できるだけ直感的な例えも交えながら説明していきますね。
1. 不均衡データとは何か
1.1 不均衡データの定義と実例
不均衡データとは一言でいうと、分類問題においてクラス間のサンプル数に大きな偏りがあるデータセットのことです。よくある例として、二値分類問題(正常/異常、陽性/陰性など)では、一方のクラスが圧倒的多数を占めることが多いです。
実際の例を見てみましょう:
- クレジットカード詐欺検知:詐欺取引は全体の0.1%未満
- スパムメール検出:受信メールの5~10%がスパム
- 顧客離反予測:離反する顧客は全体の3~7%程度
- 地質調査:石油が埋蔵されている地点は調査地点全体の0.1%以下
このようなデータでは、単純に正解率(Accuracy)を最大化しようとすると、モデルは「全てを多数派クラスと予測する」という戦略を取りがちです。100:1の不均衡があれば、全て多数派と予測するだけで99%の正解率が出てしまいます。でも、これでは意味がありませんよね。
1.2 なぜ不均衡データが問題なのか
不均衡データが機械学習アルゴリズムにとって問題である理由をもう少し詳しく見ていきましょう。
まず第一に、ほとんどの機械学習アルゴリズムは暗黙的に「データが均衡している」ことを前提としています。例えば、決定木やニューラルネットワークの学習過程では、誤分類されたサンプルの数を最小化しようとします。不均衡データでは、少数派クラスのサンプルを全て誤分類しても、全体の誤分類率への影響は小さいため、アルゴリズムはそれを「許容」してしまいます。
具体的に考えてみましょう。1,000サンプルのデータセットで、陽性クラスが50サンプル(5%)だとします。このとき、全て陰性と予測するモデルの正解率は95%です。しかし、このモデルは陽性クラスの検出能力が全くないため、実用的には全く役に立ちません。
第二に、少数派クラスのサンプル数が少ないと、そのクラスの特徴を十分に学習できません。機械学習アルゴリズムが効果的に働くためには、各クラスの特性をカバーするのに十分なサンプル数が必要です。サンプル数が少ないと、モデルは少数派クラスの一部の特性しか学習できず、汎化性能が低下します。
第三に、決定境界(クラスを分ける境界線)が多数派クラス側に押しやられます。これは特にSVMなどのマージン最大化アルゴリズムで顕著です。不均衡データでは、多数派クラスのサンプルが境界を「押し込む」ことで、少数派クラスの領域が不当に小さくなります。
1.3 数学的視点から見た不均衡データの課題
不均衡データの問題をより厳密に理解するために、数学的な視点で考えてみましょう。
機械学習アルゴリズムの多くは、全サンプルにわたる平均損失を最小化するように設計されています:
この式を見ると、各サンプルは損失に等しく寄与していることがわかります。不均衡データでは、多数派クラスのサンプルが圧倒的に多いため、この平均損失は多数派クラスの性能に大きく左右されます。
具体例で考えてみましょう。1,000サンプル中50サンプルが陽性(5%)のデータセットで、全てのサンプルを陰性と予測するモデルを考えます。このとき、50個の陽性サンプルは全て誤分類されますが、全体の損失への寄与はわずか5%です。このような状況では、「全て陰性と予測する」という戦略が、損失関数の観点からは「良い」選択になってしまいます。
ベイズの定理を用いて考えると、この問題はより明確になります:
この数値例から、同じ特徴パターンでも、不均衡データでは陽性である確率が0.8から0.039へと劇的に低下することがわかります。これは不均衡データにおける事前確率の影響の大きさを示しています。
2. 不均衡データへの対処の根本的な考え方
不均衡データに対処するための手法は多岐にわたりますが、その根本にある考え方は共通しています。それは「少数派クラスの重要性を相対的に高める」ということです。この考え方に基づいて、様々なアプローチが開発されてきました。
2.1 基本的アプローチの体系
不均衡データへの対処法は、大きく4つのカテゴリに分類できます。
一つ目は「データレベルの手法」で、トレーニングデータ自体を変更して均衡を取るアプローチです。例えば、多数派クラスのサンプルを減らす(アンダーサンプリング)、少数派クラスのサンプルを増やす(オーバーサンプリング)、あるいはその両方を組み合わせるなどの方法があります。
二つ目は「アルゴリズムレベルの手法」で、機械学習アルゴリズム自体を不均衡データに対応させるアプローチです。例えば、決定木のノード分割基準を修正する、SVMの目的関数を調整するなどの方法があります。
三つ目は「コスト敏感学習」で、異なるクラスの誤分類に異なるコスト(重み)を設定するアプローチです。例えば、少数派クラスの誤分類コストを高く設定することで、モデルはより慎重に少数派クラスを予測するようになります。
四つ目は「アンサンブル手法」で、複数のモデルを組み合わせて性能を向上させるアプローチです。例えば、ブースティングやバギングなどの手法を不均衡データ向けに拡張した方法があります。
これらの手法は相互に排他的ではなく、むしろ組み合わせて使用することで相乗効果を得ることができます。例えば、データサンプリング技術とコスト敏感学習を組み合わせることは非常に一般的な実践です。
2.2 統計的基盤: なぜこれらの方法が機能するのか
これらの手法がなぜ効果的なのかを理解するために、決定理論の観点から考えてみましょう。 最適なベイズ分類器は、事後確率に基づいて決定を行います。二値分類の場合、サンプルxに対する最適な予測は以下の条件を満たすときにクラス1(少数派)と予測します:
不均衡データへの対処法は、この不均衡を以下のような方法で補正します:
これらの方法はいずれも、不均衡データにおける事前確率の偏りを補正し、少数派クラスがモデルの学習過程で適切に考慮されるようにするものです。
3. データレベルの対処法: サンプリング技術
データレベルのアプローチは、トレーニングデータのクラス分布を直接変更することで不均衡に対処します。ここでは、主要なサンプリング技術とその背後にある理論について詳しく解説します。
3.1 アンダーサンプリング手法
アンダーサンプリングは、多数派クラスのサンプル数を減らすことでクラスバランスを改善する手法です。
3.1.1 ランダムアンダーサンプリング(RUS)
最も単純なアンダーサンプリング手法は、多数派クラスからランダムにサンプルを削除する方法です。
この方法は非常にシンプルですが、重要な情報を失うリスクがあります。例えば、複雑な決定境界を持つ問題では、削除されたサンプルが境界の理解に不可欠だった場合、モデルの性能が低下する可能性があります。
概念的に説明すると、ランダムアンダーサンプリングは「多数派の声が大きすぎるから、代表者だけに発言してもらおう」というアプローチです。例えば、議会で一部の議員だけが発言するようなイメージです。単純ですが、ランダムに選ぶため重要な意見(データポイント)が失われる可能性があります。
ランダムアンダーサンプリングは、データ量が非常に多く計算コストの削減が必要な場合や、予備実験の段階で手早く結果を得たい場合に適しています。ただし、最終的なモデル構築には、より洗練された手法を検討すべきでしょう。
3.1.2 情報損失を最小化するアンダーサンプリング
ランダムアンダーサンプリングの最大の欠点は情報損失です。これを軽減するための手法がいくつか提案されています:
Tomek Links
Tomek Linksは、異なるクラスに属するサンプルペア間の関係に着目したアンダーサンプリング手法です。
Tomek Linkとは、異なるクラスに属する最近傍サンプルペアで、他のどのサンプル
についても
を満たすものを指します。ここで
はサンプル間の距離を表します。
概念的に説明すると、Tomek Linksは「敵対する陣営の最前線同士」を見つけ出し、多数派側の「前線の兵士」を取り除くイメージです。これにより、境界があいまいな領域をクリアにし、クラス間の分離をより明確にします。
Tomek Linksは、クラス境界が不明瞭で、境界付近のノイズが問題となっている場合に特に効果的です。例えば、テキスト分類や画像認識など、クラス間の境界が複雑な問題に適しています。
Condensed Nearest Neighbor Rule (CNN)
CNNは、多数派クラスから、分類に必要最小限のサンプルだけを選択する手法です。
少数派サンプル全体
と、多数派から1つのサンプル
をランダムに選び、初期サブセット
を作る
残りの多数派サンプル
について、
の最近傍サンプルによる分類が誤っている場合に
を
に追加する
ステップ2を繰り返し、
が変化しなくなるまで続ける これにより、多数派クラスの中から「代表的な」サンプルだけを選択し、冗長なサンプルを除去することができます。
概念的に説明すると、CNNは「最小限の代表者だけを選ぶ」方法です。多数派の中から「これさえあれば他は要らない」という最小限の重要サンプルを選出します。例えば、学生100人の意見を聞くのではなく、代表的な意見を持つ10人だけを選んで話を聞くようなイメージです。
CNNは、データに冗長性が高く、少数のサンプルで多数派クラスの特性を十分に表現できる場合に適しています。例えば、シンプルな決定境界を持つ問題や、多数派クラスの分布がまとまっている場合に効果的です。
One-Sided Selection (OSS)
OSSは、Tomek LinksとCNNを組み合わせた手法です。まずTomek Linksを適用してノイズを除去し、次にCNNを適用して冗長なサンプルを削除します。
概念的に説明すると、OSSは「まず境界をきれいにしてから代表者を選ぶ」方法です。境界付近のノイズを取り除いた後で、必要最小限の代表サンプルを選ぶことで、より信頼性の高い学習を実現します。
OSSは、ノイズと冗長性の両方が問題となる複雑なデータセットに適しています。特に、クラス境界が不明瞭でありながら、多数派クラス内の冗長性も高い場合に効果を発揮します。
3.2 オーバーサンプリング手法
オーバーサンプリングは、少数派クラスのサンプル数を増やすことでクラスバランスを改善する手法です。
3.2.1 ランダムオーバーサンプリング(ROS)
最も単純なオーバーサンプリング手法は、少数派クラスのサンプルをランダムに複製する方法です。
概念的に説明すると、ランダムオーバーサンプリングは「少数派の声をコピーして大きくする」ように考えられます。例えば、少数意見を持つ人の発言を録音して繰り返し再生するようなものです。同じサンプルを繰り返し使うため、過学習のリスクがあります。
ランダムオーバーサンプリングは、サンプル数が比較的多い(数百以上)少数派クラスや、シンプルなモデルを使用する場合に適しています。また、初期実験や、他の手法との比較ベースラインとしても役立ちます。
3.2.2 SMOTE (Synthetic Minority Over-sampling Technique)
SMOTEは、少数派クラスの既存サンプル間に新しい合成サンプルを生成する手法です。
少数派クラスの各サンプル
について、そのk近傍
を求める
からランダムに近傍点
を選ぶ
新しい合成サンプル
を以下の式で生成する:
この手法では、既存のサンプルをただ複製するのではなく、特徴空間内で線形補間することで新たなサンプルを作り出します。これにより、少数派クラスの表現力が向上し、過学習のリスクも軽減されます。 概念的に説明すると、SMOTEは「少数派の間を埋める新しいサンプルを作る」方法です。例えば、リンゴとミカンの中間的な特徴を持つ新しい果物を創造するようなイメージです(もちろん実際には特徴空間での操作なので、解釈可能性はケースバイケースですが)。 SMOTEは、少数派クラスのサンプル数が中程度(数十~数百)で、特徴空間がある程度連続的な場合に特に効果的です。例えば、画像認識や数値特徴を持つ多くの問題に適しています。
3.2.3 改良版SMOTE
SMOTEには以下のような改良版があります:
Borderline-SMOTE
Borderline-SMOTEは、全ての少数派サンプルに同等に適用するのではなく、クラス境界付近の少数派サンプルに焦点を当ててオーバーサンプリングを行う手法です。
:
をノイズとみなす
:
を境界サンプルとみなす
:
を安全サンプルとみなす
そして、境界サンプルに対してのみSMOTEを適用します。
これにより、決定境界の形成に最も影響を与えるサンプルを増やすことで、分類性能を効率的に向上させることができます。
概念的に説明すると、Borderline-SMOTEは「最前線の兵士を強化する」方法です。境界付近の少数派サンプル(つまり、最も「危険」なエリアにいるサンプル)だけを増強することで、効率的に分類性能を向上させます。
Borderline-SMOTEは、クラス境界が複雑で、少数派クラスが多数派クラスに「囲まれている」ような状況に特に適しています。例えば、異常検知や非常に不均衡なデータセットに効果的です。
ADASYN (Adaptive Synthetic Sampling)
ADASYNは、少数派サンプルの「難しさ」に基づいて合成サンプルを生成する手法です。
概念的に説明すると、ADASYNは「苦戦している場所ほど援軍を多く送る」方法です。多数派クラスに囲まれて「危険度が高い」サンプルほど、より多くの類似サンプルを生成することで補強します。例えば、敵に囲まれている前線に優先的に援軍を送るような戦略です。
ADASYNは、少数派クラスの中でも特に「難しい」サンプルが存在する場合に特に効果的です。例えば、少数派クラスが複数のクラスタに分かれており、一部のクラスタが多数派クラスと重なり合っているような状況で力を発揮します。
SMOTE-NC (SMOTE for Nominal and Continuous features)
SMOTE-NCは、カテゴリカル(名義的)特徴と連続的特徴の両方を含むデータセットに対応したSMOTEの拡張版です。
SMOTE-NCは、カテゴリカル特徴と連続特徴が混在する実世界のデータセットに適しています。例えば、人口統計データや顧客データなど、様々なタイプの特徴を含むデータセットで効果的です。
3.3 ハイブリッドサンプリング手法
ハイブリッドサンプリング手法は、オーバーサンプリングとアンダーサンプリングを組み合わせたアプローチです。これにより、両方の手法の利点を活かすことができます。
SMOTE-ENN
SMOTE-ENNは、まずSMOTEを適用して少数派クラスをオーバーサンプリングし、その後Edited Nearest Neighbors(ENN)を適用してノイズを除去する手法です。
各サンプル
について、そのk近傍を求める
のクラスと、k近傍の多数決によるクラスが異なる場合、
を削除する
この手法では、SMOTEによって新たに生成されたサンプルも含めて、クラス境界付近のノイズを除去することで、より明確な決定境界を得ることができます。
概念的に説明すると、SMOTE-ENNは「増強してから洗練する」方法です。まず少数派クラスを強化し(SMOTE)、次にその結果を洗練させて、ノイズとなる可能性のあるサンプルを除去します(ENN)。例えば、まず部隊を増強した後で、最前線の混乱した部分を整理するようなイメージです。
SMOTE-ENNは、不均衡が中程度から大きく、クラス境界付近にノイズが存在する問題に適しています。特に、多数派クラスと少数派クラスが部分的に重なり合っている場合に効果的です。
SMOTE-Tomek
SMOTE-Tomekは、SMOTEとTomek Linksを組み合わせた手法です。まずSMOTEを適用し、その後Tomek Linksを使用してクラス境界を明確にします。
概念的に説明すると、SMOTE-Tomekは「増強してから境界を明確にする」方法です。少数派クラスを強化した後(SMOTE)、境界が曖昧な部分を取り除くことで(Tomek Links)、より明確なクラス分離を実現します。例えば、軍を増強した後で、両軍の前線が入り混じった地域を非武装地帯として設定するようなイメージです。
SMOTE-Tomekは、クラス境界が複雑で、SMOTEだけでは十分な分離が得られない問題に適しています。特に、少数派クラスが多数派クラスによって「囲まれている」ような複雑な構造を持つデータセットで効果を発揮します。
3.4 リサンプリングの考慮事項
リサンプリングは基本的にモデルに依存しない前処理ステップですが、変更されたデータ分布は後続のモデル学習に影響を与えるポイントに注意が必要です。SVMでは、マージンの定義やサポートベクターの選択に影響し得ますし、ロジスティック回帰では、確率推定のキャリブレーションが変わる可能性があります。ランダムフォレストや勾配ブースティングでは、各ツリーの分割基準やサンプルへの重みづけに影響を与えます。重要な点として、リサンプリングが常に精度向上につながるとは限らない点があります。これはリサンプリングが逆に精度を低下させる危険性があるということです(評価指標が何かにもよります)。これは、リサンプリング手法と後続の分類器との相互作用が複雑であり、ノイズの導入や有用な情報の削除が原因で性能が悪化しうることを頭に入れておく必要があります。よって、リサンプリングは、情報の損失、過剰適合、ノイズ導入のリスクを頭に入れて使用する必要があります。
4. アルゴリズムレベルの対処法
4.1 コスト敏感学習
コスト敏感学習は、異なるタイプの誤分類に異なるコスト(ペナルティ)を設定することで、不均衡データに対処する手法です。
4.1.1 コスト行列の定義
コスト敏感学習では、誤分類のコストを以下のようなコスト行列で表現します:
コスト敏感学習に基づく最適な決定規則は以下のようになります:
4.1.2 クラス重み付け
多くの機械学習アルゴリズムは、クラスの重みを直接指定することでコスト敏感学習を実装しています。例えば、scikit-learnではclass_weight
パラメータを使用して、各クラスの重要度を制御できます:
from sklearn.linear_model import LogisticRegression # クラス0に重み1、クラス1に重み10を設定 clf = LogisticRegression(class_weight={0: 1, 1: 10})
あるいは、class_weight='balanced'
と設定することで、クラスの出現頻度に反比例した重みを自動的に計算することもできます:
概念的に説明すると、クラス重み付けは「少数派の声を増幅する」方法です。例えば、議会で少数派の投票権を重み付けして、その発言力を高めるようなイメージです。
クラス重み付けは、ほとんどの学習アルゴリズムで簡単に実装できるため、最初に試すべき手法の一つです。特に、ロジスティック回帰やSVM、決定木などのアルゴリズムで効果的です。
4.1.3 コスト敏感学習に関して
コスト敏感学習は、モデルの学習目的そのものに不均衡の影響を組み込むため、リサンプリングよりも統合された解決策を提供するように思えます。しかし、その有効性はコスト設定に大きく依存するわけですが、このコスト設定自体が依然として課題とされているようです。
4.2 アルゴリズム固有の調整
各機械学習アルゴリズムには、不均衡データに対処するための固有の調整方法があります。
4.2.1 決定木の調整
決定木では、分割基準を調整することで不均衡データに対応できます。例えば、ジニ不純度やエントロピーの代わりに、クラス重みを考慮した分割基準を使用します:
概念的に説明すると、決定木の調整は「少数派の特徴をより細かく学習する」方法です。通常の決定木では「十分な数のサンプルがないと分割しない」というルールがありますが、これを緩和することで、少数派クラスの特徴をより詳細に捉えることができます。
4.2.2 SVMの調整
SVMでは、クラスごとに異なるペナルティパラメータC(正則化パラメータ)を設定することで、不均衡に対処できます:
4.2.3 特化型ブースティングアルゴリズム
最近のブースティングアルゴリズムには、不均衡データに特化したパラメータが組み込まれています。
XGBoost for imbalanced data
XGBoostでは、scale_pos_weight
パラメータを使用して、少数派クラスの重みを調整できます:
また、
max_delta_step
パラメータを設定することで、各木の予測値の最大変化量を制限できます。これにより、不均衡データにおける極端な予測を防ぐことができます。
概念的に説明すると、XGBoostの調整は「少数派の声をブーストする」方法です。通常のブースティングでは間違いを修正するという観点で学習が進みますが、少数派クラスの「間違い」をより重視することで、バランスの取れた学習が可能になります。
LightGBM
LightGBMでは、is_unbalance
パラメータをTrue
に設定するか、scale_pos_weight
パラメータを調整することで、不均衡データに対応できます。
また、LightGBMは「重み付き情報利得」(Weighted Information Gain)という独自の分割基準を採用しており、これが不均衡データに対して効果的に機能します:
アンサンブル手法
アンサンブル手法は、複数のモデルを組み合わせることで予測性能を向上させるアプローチです。不均衡データに対しては、サンプリング技術とアンサンブル学習を組み合わせた手法が特に効果的です。
5.1 バギングベースの手法
バギング(Bootstrap Aggregating)は、元のデータセットから複数のブートストラップサンプルを生成し、各サンプルで独立したモデルを学習させ、それらの予測を集約する手法です。
BalancedBagging
BalancedBaggingは、各ブートストラップサンプルに対してランダムアンダーサンプリングを適用してから基本モデルを学習する手法です:
BalancedRandomForest
BalancedRandomForestは、ランダムフォレストの各決定木をバランスの取れたブートストラップサンプルで学習させる手法です。通常のランダムフォレストに加えて、特徴の重要度を計算する機能も備えています:
概念的に説明すると、BalancedRandomForestは「多様な視点と多様な特徴を組み合わせて少数派を公平に評価する」方法です。各決定木がランダムに選ばれた特徴の部分集合で学習するため、少数派クラスに重要だが単独では弱い特徴も、複数の木の組み合わせによって効果的に活用されます。
5.2 ブースティングベースの手法
ブースティングは、逐次的にモデルを学習し、前のモデルの誤りを修正するように次のモデルを調整する手法です。
SMOTEBoost
SMOTEBoostは、AdaBoostにSMOTEを組み合わせた手法です。各ブースティングラウンドで、現在の重み分布に基づいてSMOTEを適用してからモデルを学習します:
概念的に説明すると、SMOTEBoostは「間違えるたびに少数派を増強する」方法です。通常のブースティングでは間違ったサンプルの重みを増やしますが、SMOTEBoostではさらに少数派クラスの合成サンプルも生成します。これにより、少数派クラスの複雑なパターンをより効果的に学習できます。
RUSBoost (Random Under-Sampling Boost)
RUSBoostは、AdaBoostにランダムアンダーサンプリングを組み合わせた手法です。各ブースティングラウンドで、現在の重み分布に基づいてランダムアンダーサンプリングを適用してからモデルを学習します。
初期重み
を設定する
の各ラウンドで:
- 重み
に基づいてランダムアンダーサンプリングを適用し、バランスの取れたサブセット
を作成する
を使って弱分類器
を学習する
の誤り率
を計算する
の重み
を計算する
- 重みを更新する:
- 重み
最終的な分類器:
RUSBoostはSMOTEBoostよりも計算効率が高く、大規模データセットに適しています。
概念的に説明すると、RUSBoostは「間違えるたびに多数派を減らす」方法です。SMOTEBoostが少数派を増やすアプローチなのに対し、RUSBoostは多数派を減らすアプローチを取ります。これにより、計算効率を保ちながら効果的なブースティングが可能になります。
5.3 特化型アンサンブル手法
不均衡データに特化した独自のアンサンブル手法もいくつか提案されています。
EasyEnsemble
EasyEnsembleは、多数派クラスから複数のサブセットをランダムに抽出し、各サブセットと少数派クラスの全サンプルを組み合わせて複数の分類器を学習させる手法です:
概念的に説明すると、EasyEnsembleは「多数派を小分けにして少数派と公平に対話させる」方法です。例えば、100人の多数派意見を持つ人を10人ずつの10グループに分け、各グループを10人の少数派意見を持つ人と対等に議論させるようなイメージです。
BalanceCascade
BalanceCascadeは、多数派クラスから段階的にサンプルを選択し、各段階で分類器を学習させる手法です:
少数派クラスの全サンプル
を保持する
の各段階で:
- 多数派クラスから少数派クラスと同数のサンプルをランダムに選択し、
とする
を使って分類器
を学習する
により正しく分類された多数派サンプルを
から除外する
- 多数派クラスから少数派クラスと同数のサンプルをランダムに選択し、
最終的な分類器:
BalanceCascadeの特徴は、各段階で「簡単な」多数派サンプルを除外していくことで、より難しいサンプルに集中できる点です。
概念的に説明すると、BalanceCascadeは「易しいものから順に解決していく」方法です。例えば、最初のテストで簡単な問題を解けた学生は次のテストを免除し、難しい問題だけに焦点を当てていくようなイメージです。これにより、計算効率を高めながら、難しい境界領域により注目することができます。
6. 評価指標と検証方法
不均衡データを扱う際は、適切な評価指標を選択することが極めて重要です。通常の正解率(Accuracy)は不均衡データでは誤解を招きやすいため、より適切な指標を使用する必要があります。
6.1 不均衡データに適した評価指標
混同行列(Confusion Matrix)
まず、評価指標の基礎となる混同行列を理解しましょう:
TP(True Positive):少数派クラスを正しく少数派と予測
TN(True Negative):多数派クラスを正しく多数派と予測
FP(False Positive):多数派クラスを誤って少数派と予測
FN(False Negative):少数派クラスを誤って多数派と予測
不均衡データでは、単純な正解率(Accuracy)は多数派クラスの性能に大きく左右されるため、混同行列から導かれる他の指標が重要になります。
精度と再現率(Precision and Recall)
不均衡データでは、精度と再現率が特に重要です:
精度は「少数派と予測したもののうち、実際に少数派だった割合」を表し、再現率は「実際の少数派のうち、少数派と予測できた割合」を表します。
精度が低いモデルは多くの偽陽性(False Positive)を生成し、再現率が低いモデルは多くの少数派サンプルを見逃します。不均衡データでは特に再現率が重要になることが多いです。例えば、疾病スクリーニングでは、患者を見逃さないことが最優先事項です。
概念的に説明すると、精度は「少数派アラートの信頼性」、再現率は「少数派の検出能力」と考えることができます。例えば、クレジットカード詐欺検知では、高い精度がないと多くの正常取引が誤ってブロックされ、高い再現率がないと多くの詐欺が見逃されます。
F1スコア(F1-Score)
F1スコアは、精度と再現率の調和平均です:
例えば、精度が0.9で再現率が0.1の場合、算術平均は0.5ですが、F1スコアは約0.18となり、再現率の低さがより強く反映されます。
AUC-ROC(Area Under the ROC Curve)
ROC(Receiver Operating Characteristic)曲線は、様々な分類閾値における真陽性率(TPR)と偽陽性率(FPR)をプロットしたものです:
しかし、不均衡データではAUC-ROCは楽観的な評価を与えることがあります。TN(True Negative)の数が多いと、FPR(偽陽性率)が低くなりやすく、そのためROC曲線が良く見えることがあります。
AUC-PR(Area Under the Precision-Recall Curve)
PR(Precision-Recall)曲線は、様々な分類閾値における精度と再現率をプロットしたものです。AUC-PRは、このPR曲線の下の面積を表します。
不均衡データでは、AUC-ROCよりもAUC-PRの方が敏感に性能の違いを反映することが多いです。特に少数派クラスの性能に焦点を当てたい場合に有用です。これは、PR曲線がTN(True Negative)を考慮しないため、多数派クラスの正確な予測による「見かけの良さ」に惑わされにくいからです。
ベースラインとしては、ランダム予測のAUC-PRは少数派クラスの比率に等しくなります。例えば、データの1%が少数派クラスの場合、ランダム予測のAUC-PRは約0.01です。これに対し、AUC-ROCのベースラインは常に0.5です。
概念的に説明すると、AUC-ROCは「全体的な分類能力」を表し、AUC-PRは「少数派クラスの検出能力」を特に強調した指標と考えることができます。
マシューズ相関係数(Matthews Correlation Coefficient, MCC)
MCCは、混同行列のすべての要素を考慮した評価指標です:
バランス精度(Balanced Accuracy)
バランス精度は、各クラスの再現率(感度と特異度)の平均です:
幾何平均スコア(G-mean)
G-meanは、感度と特異度の幾何平均です:
G-meanは特に、両クラスの分類性能のバランスが重要な場合に有用です。例えば、どちらのクラスも同程度に重要である医療診断や品質管理などの分野で用いられます。
クラス別評価
多くの場合、不均衡データでは少数派クラスの性能が特に重要です。このため、各クラス別に評価指標を計算し、特に少数派クラスの性能に注目することが有効です。
例えば、クラス別の精度、再現率、F1スコアなどを個別に計算し、少数派クラスの性能が許容範囲内かどうかを確認します。
# クラス別評価の例 from sklearn.metrics import classification_report # クラス別の精度、再現率、F1スコアを計算 print(classification_report(y_true, y_pred))
この出力では、各クラスの精度、再現率、F1スコアが個別に表示されるため、少数派クラスの性能を詳細に評価できます。
ここ最近の不均衡データへの対処方法
最近の不均衡
最後に
不均衡データ対処法の総括
不均衡データを扱う場合、単一の「最善の」手法は存在せず、問題の性質や目標に応じて適切なアプローチを選択することが重要です。この記事では、様々な対処法とその理論的背景を紹介しました。
データレベルの手法(サンプリング)は直感的で実装が容易ですが、情報損失や過学習のリスクがあります。アルゴリズムレベルの手法は元のデータ分布を維持できる利点がありますが、アルゴリズム特有の調整が必要です。アンサンブル手法は両者の利点を組み合わせた強力なアプローチですが、計算コストが高くなる傾向があります。
あるプロジェクトでは、SMOTE+ランダムフォレスト(クラス重み付き)の組み合わせが最良の結果を示し、別のプロジェクトではBalancedRandomForestが最適というケースもあります。重要なのは、複数の手法を試し、適切な評価指標で比較検討することです。
本当に最後に
ここまで不均衡データの理論から実践的な対処法まで、幅広く解説してきました。正直なところ、この記事を書いている私自身も日々新しい手法や考え方に出会い、学び続けています。不均衡データへの対処は一筋縄ではいかないテーマですが、だからこそ面白いんですよね。
皆さんも自分のプロジェクトで様々な手法を試してみて、どれが効果的かを実験してみてください。SMOTE一本で済ませるのではなく、この記事で紹介した多様なアプローチを組み合わせることで、より良い結果が得られるかもしれません。また、最新の研究論文にも目を通しておくと、新しいアイデアが見つかるかもしれません。
もし具体的な質問や実装の悩みがあれば、コメント欄で質問してくださいね。皆さんの不均衡データへの挑戦が実を結ぶことを願っています!