なぜダウンサンプリングするのですか?


42

電子メールがスパムかどうかを予測する分類子を学習したいとします。そして、メールの1%のみがスパムであるとします。

最も簡単な方法は、メールはどれもスパムではないという単純な分類法を学ぶことです。この分類子は99%の精度を提供しますが、興味深いことは何も学習せず、100%の誤検出率を持ちます。

この問題を解決するために、人々は「ダウンサンプル」するか、例の50%がスパムであり、50%がスパムではないデータのサブセットで学習するように私に言っています。

しかし、このアプローチを心配しています。この分類子を構築して、実際の電子メールのコーパスで使用を開始すると(50/50テストセットではなく)、多くの電子メールがスパムであると予測される可能性があるためです本当にない。データセットに実際に存在するよりもはるかに多くのスパムを見ることに慣れているからです。

それでは、この問題をどのように修正するのでしょうか?

(「アップサンプリング」、または肯定的なトレーニングの例を複数回繰り返して、データの50%が肯定的なトレーニングの例になるようにすると、同様の問題が発生するようです。)

回答:


37

実際、ほとんどの分類モデルはバイナリ決定ではなく、連続決定値を生成します(たとえば、ロジスティック回帰モデルは確率を出力し、SVMは超平面までの符号付き距離を出力します...)。決定値を使用して、テストサンプルを「ほぼ確実に正」から「ほぼ確実に負」にランク付けできます。

決定値に基づいて、データの特定の部分が正としてラベル付けされるように分類子を構成するカットオフをいつでも割り当てることができます。適切なしきい値の決定は、モデルのROCまたはPR曲線を介して実行できます。トレーニングセットで使用されるバランスに関係なく、決定のしきい値で遊ぶことができます。言い換えれば、アップサンプリングやダウンサンプリングなどの手法はこれと直交しています。

モデルがランダムよりも優れていると仮定すると、肯定的な分類のしきい値を上げると(肯定的な予測が少なくなる)、再現率が低くなりますが、モデルの精度が向上し、その逆も直観的にわかります。

SVMを直感的な例として考えてください。主な課題は、分離する超平面の方向を学習することです。アップまたはダウンサンプリングはこれに役立ちます(ダウンサンプリングよりもアップサンプリングを好むことをお勧めします)。超平面の向きが良好な場合、決定しきい値(たとえば、超平面までの符号付き距離)を使用して、正の予測の望ましい割合を取得できます。


ありがとう、とても助かりました。しきい値がどうあるべきかをどのように知っていますか?陽性予測の割合が母集団の陽性例の割合と等しくなるようにしきい値を設定しますか?
ジェシカ14年

2
@Jessica前述のように、しきい値を選択する便利な方法は、受信者動作特性(ROC)曲線を使用することです。すべてのしきい値はROC空間のポイントに対応しています。曲線をプロットするとき、特定のニーズに適合するものに基づいてしきい値を選択できます。(代替として精密リコール曲線を使用することもできます)
マーククレセン14年

SVMによって学習されたテスト平面から超平面までの距離が、予測の信頼性の尺度であることに同意しません。SVMの出力予測の信頼性を高める努力がなされてきました。たとえば、Plattスケーリングを調べます。しかし、ガウスのプロセス分類(wrt予測の信頼性)と同じようには機能しません。
ゼーダ

1
@Seeda Plattスケーリングとは、決定的な値を確率に変換することです。プラットスケーリングは、ロジスティック関数を介して(スケーリングされた)判定値を実行するのと同じくらい簡単です。これは単調に増加するため、ランキングにまったく影響しません(=信頼度)。からの出力をマップするだけです。 [ 0 1 ]R[01]
マーククレセン

@MarcClaesen Plattスケーリングを使用することはお勧めしません。予測の信頼度を生成することは「試み」ですが、より良い選択肢があります。私が言っているのは、超平面までの距離を使用することは意味がなく、文献を確認することです。SVMから自信を生み出そうとすることは頭に浮かんだとしても、私はそれに出会ったことがありません。
ゼーダ

14

ここでの本当の問題は、メトリックの選択です。%精度は、不均衡なデータセットでのモデルの成功の貧弱な尺度です(正確に言うと、この場合99%の精度を達成するのは簡単です)。

モデルを調整する前にデータセットのバランスを取ることは、モデルにバイアスをかけ、さらに悪いことに潜在的に有用なデータを捨てるため、悪い解決策です。

データのバランスをとるよりも、精度のメトリックのバランスを取る方がはるかに優れています。たとえば、モデルを評価するときに、バランスの取れた精度を使用できます(error for the positive class + error for the negative class)/2。すべてが正またはすべてが負であると予測する場合、このメトリックは50%優れたプロパティになります。

私の意見では、ダウンサンプリングする唯一の理由は、データが多すぎてモデルに適合できない場合です。多くの分類子(たとえば、ロジスティック回帰)は、不均衡なデータに対してうまく機能します。


不均衡なデータに対して分類器がどのようにうまく機能するかを尋ねることはできますか?おそらくそれは単なるデータですが、トレーニングデータでロジスティック回帰、ランダムフォレスト、およびC5.0モデルのトレーニングを試みました。不均衡なデータでトレーニングされたモデルは、バランスの取れたデータでトレーニングされたモデルよりも、テストセットではるかにパフォーマンスが低下します。
Seanosapien

13

いつもの@Marc Claesenように素晴らしい答えです。

足りないように見える重要な概念は、コスト関数の概念であると付け加えます。どのモデルでも、偽陰性から偽陽性(FN / FP)の暗黙的または明示的なコストがあります。記載されている不均衡なデータの場合、多くの場合、5:1または10:1の比率になります。モデルにコスト関数を導入するには多くの方法があります。従来の方法は、モデルによって生成された確率に確率のカットオフを課すことです-これはロジスティック回帰に適しています。

自然に確率推定を出力しない厳密な分類器に使用される方法は、関心のあるコスト関数を誘導する比率で多数派クラスをアンダーサンプリングすることです。50/ 50でサンプリングする場合、任意のコスト関数を誘導することに注意してください。コスト関数は異なりますが、有病率でサンプリングした場合と同様に任意です。多くの場合、コスト関数に対応する適切なサンプリング比(通常は50/50ではありません)を予測できますが、私が話したほとんどの開業医は、サンプリング比をいくつか試して、コスト関数に最も近いものを選択します。


2
それを教えてくれてありがとう、それは私が考慮していなかった興味深いアイデアです。どのサンプリング比がコスト関数に対応するかをどのように確認できますか?
ジェシカ14年

8

ジェシカの質問に直接答える-ダウンサンプリングの理由の1つは、大きなデータセットを使用していて、コンピューターのメモリ制限に直面している場合、または単に処理時間を短縮したい場合です。ネガティブケースからのダウンサンプリング(つまり、置換なしでランダムサンプルを取得)を行うと、データセットがより管理しやすいサイズに縮小されます。

質問で「分類子」を使用することに言及しましたが、どの分類子を指定しませんでした。避けたい分類子の1つは、決定木です。まれなイベントデータで単純なデシジョンツリーを実行すると、ツリーが1つのルートのみを構築することがよくあります。これは、ポジティブなケースをカテゴリに分割することが難しいためです。まれなイベントのツリーのパフォーマンスを改善するためのより洗練された方法があるかもしれません-私は私の頭の上のものを知りません。

β0

βc=β0ログp+1p+

p+

nnnNn


3

もちろん、すべてを「非スパム」として分類すると、100通のメールがある場合、そのうち99通が正しく分類されますが、スパム(100%False Positive)としてラベル付けされた唯一の「非スパム」としても分類できます。アルゴリズムを評価するために選択したメトリックが適合しないことが判明しました。このビデオは概念を例示しています。

大まかに言えば、データセットのバランスをとることで、誤分類エラーに重みを付けることができます。不均衡なトレーニングセットを使用するアルゴリズムは、おそらく、特徴を区別することを学習しません。これは、乏しいクラスのデータを誤分類するという事実をあまり重要にしないからです。


0

両方とも学習アルゴリズムをだますので、ダウンサンプリングもアップサンプリングもしませんが、データが不均衡な場合、精度測定値は無効または情報価値がなくなるため、精度とリコール測定値を使用するほうが主にTP(あなたのケースで正しく分類されたスパム)これは、否定的な例の数に関係なく、スパムを検出するという点でシステムの実際のパフォーマンスについて良いアイデアを与えます。

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