不均衡なクラス—偽陰性を最小限に抑える方法は?


11

バイナリクラス属性を持つデータセットがあります。クラス+1(癌陽性)のインスタンスは623個、クラス-1(癌陰性)のインスタンスは101,671個あります。

私はさまざまなアルゴリズム(ナイーブベイズ、ランダムフォレスト、AODE、C4.5)を試してみましたが、それらはすべて許容できない偽陰性率を持っています。ランダムフォレストは、全体の予測精度が最も高く(99.5%)、偽陰性率が最も低くなりますが、陽性クラスの79%は見落とします(つまり、悪性腫瘍の79%を検出できません)。

この状況を改善するにはどうすればよいですか?

ありがとう!


この問題について興味深い回答が得られたこの質問をご覧ください。敬具
マイケルHooreman

回答:


9

クラスの不均衡は非常に一般的な問題です。陽性クラスをオーバーサンプリングする(または陰性をアンダーサンプリングする)か、クラスの重みを追加できます。

この場合に覚えておかなければならないもう1つのことは、精度はここではあまり有用な指標ではないということです。あなたはAUCまたはF1スコアを検討するかもしれません。

意思決定のしきい値を変更することは魅力的なように見えるかもしれませんが、(この場合はおそらく劇的に)偽陽性の増加につながります(おそらく、FPは医学的診断の場合のFNほど悪くはありませんが、テストが法外に高価ではない場合)。

クラスの不均衡の場合のオプションのより詳細な分析はここに提供されます


3

実際の答えは常にtrueor falseですが、クラス属性をラベルではなく浮動小数点数、つまり1.0と0.0(または100と0)にすることができます。つまり、分類の問題ではなく、回帰の問題であると考えることができます。

次に、予測される出力も同様にそのスペクトルの数値、つまりラベルではなく確率になります。現在の実装は基本的に、しきい値が0.5の回帰モデルと同等です。

このような出力を使用して、ユーザーまたはクライアントは許容できるしきい値(0.3など)を定義できます。もちろん、偽陽性の数はさらに増えますが、がんの検出などの一部のアプリケーションでは、これが最適です。

オーバーサンプリング(ポジティブ)またはアンダーサンプリング(ネガティブ)もこれを修正する方法ですが、慎重に行う必要があり、精度を犠牲にする可能性があります。また、データとトレーニングの作成後にしきい値を移動するためのコントロールも犠牲にします。


0

テクニックとしてのアンダーサンプリングとオーバーサンプリングについてはすでに言及されていますが、私は一般的に使用されるバリアントを指摘すると思います:

SMOTE:合成マイノリティオーバーサンプリングテクニック

2002年この論文で発表されました。ここに要約からの抜粋があります:

このペーパーでは、少数派(異常)クラスをオーバーサンプリングする私たちの方法と多数派(通常)クラスをアンダーサンプリングする方法を組み合わせると、多数派クラスだけをアンダーサンプリングするよりも(ROC空間で)分類器のパフォーマンスが向上することを示しています。


Scikit-Learnのcontribモジュールに含まれ、個別にインストールする必要があるimbalanced-learnパッケージを使用し、Pythonで簡単に使用できます。

imbalanced-learnは、クラス間の強い不均衡を示すデータセットで一般的に使用される多数のリサンプリング手法を提供するpythonパッケージです。

このパッケージには、オーバー/アンダーサンプリングを組み合わせたメソッドと、Keras / Tensorflowに流れ込むデータのバッチを生成するユーティリティのセットが含まれています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.