高精度または再現率の高いバイナリ分類器を取得するには、どの損失関数を使用する必要がありますか?


11

非常にまれにしか発生しない(画像内で)オブジェクトの検出器を作成しようとしています。スライディング/サイズ変更されたウィンドウに適用されるCNNバイナリ分類器を使用する予定です。私はバランスのとれた1:1の正と負のトレーニングとテストセットを作成しました(そのような場合にそれを行うのは正しいことですか?)、分類器はテストセットで精度の点で問題ありません。ここで、分類子の再現率/精度を制御したいので、たとえば、過半数のクラスオカレンスの多くに誤ってラベルを付けないようにします。

(私にとって)明らかな解決策は、現在使用されているのと同じロジスティック損失を使用することですが、調整可能ないくつかの定数で2つのケースのいずれかで損失を乗算することにより、タイプIとタイプIIのエラーに異なる重みを付けます。正しいですか?

PS 2番目の考えでは、これは一部のトレーニングサンプルに他のサンプルよりも重みを付けることと同じです。1つのクラスを追加するだけで、同じことを実現できると思います。


これを解決したことがありますか?同様の目的があります。精度(タイプ1)を最適化し、タイプ2のエラーを気にしたくないので、損失関数に関して何ができるかを検討してきました。
ジョナサンショア

回答:


6

バランスの取れたトレーニングセットを人工的に構築することは議論の余地があり、実際にはかなり物議を醸しています。これを行う場合は、トレーニングセットのバランスを崩すよりも実際に機能することを経験的に確認する必要があります。テストセットの人工的なバランスを取ることは、ほとんど決して良い考えではありません。テストセットは、ラベルなしで入ってくる新しいデータポイントを表す必要があります。あなたはそれらが不均衡であることを期待しているので、あなたのモデルが不均衡なテストセットを処理できるかどうかを知る必要があります。(新しいレコードの不均衡が予想されない場合、既存のすべてのレコードが不均衡になるのはなぜですか?)

あなたのパフォーマンス測定基準に関しては、あなたは常にあなたが尋ねるものを得るでしょう。クラスだけでなく誤分類コストも不均衡であるため、不均衡セットで最も必要な精度が正確でない場合は、使用しないでください。精度をメトリックとして使用し、モデルの選択とハイパーパラメータの調整をすべて、常に最高の精度のものを使用して行った場合、精度を最適化しています。

私はマイノリティのクラスをポジティブクラスとして取り上げます。これは、従来の方法で名前を付ける方法です。したがって、以下で説明する精度と再現率は、少数派クラスの精度と再現率です。

  • すべてのマイノリティクラスのレコードを特定することだけが重要な場合は、思い出すことができます。したがって、より多くの誤検知を受け入れます。
  • 精度のみを最適化するのは非常に奇妙なアイデアです。少数派クラスを過小検出することは問題ではないことを分類子に伝えます。高精度にするための最も簡単な方法は、少数派クラスを宣言する際に慎重になることです。
  • 精度と再現率が必要な場合は、Fメジャーを使用できます。これは、精度と再現率の調和平均であり、両方のメトリックが異なる場合の結果にペナルティを課します。
  • 両方向の具体的な誤分類コスト(およびクラスごとに異なる場合は正しい分類の利益)がわかっている場合は、それらすべてを損失関数に入れて最適化できます。

3

あなたはいくつかの仮定をしています。最終的な目標を一般的な用語で考え、その目標を満たす戦略を策定するのが最善です。たとえば、強制選択の分類が本当に必要ですか?それをサポートするのに十分な大きさの信号:ノイズ比ですか(良い例:音と画像の認識)?または、シグナル:ノイズ比が低いか、傾向に関心がありますか?後者の場合、リスク推定はあなたのためです。選択が重要であり、選択する予測精度メトリックを決定します。これらすべての詳細については、http://www.fharrell.com/2017/01/classification-vs-prediction.htmlおよびhttp://www.fharrell.com/2017/03/damage-caused-by-classificationを参照してください。 .html

問題の大部分は意思決定に関係しており、最適な決定は、損失/コスト/効用関数と相まってリスク推定から行われます。

リスク(確率)推定アプローチの最良の側面の1つは、追加のデータを取得せずに分類または決定を行うのが誤りであるグレーゾーンを処理することです。そして、確率推定は、人為的にサンプルを操作することによって結果の「バランスをとる」ことを必要としない(さえ許さない)という事実があります。


1

j=1Jlog{1+exp[f(xj)]}+k=1Klog{1+exp[f(xk)]}
jkf()x
j=1Jlog{1+exp[f(xj)]}+k=1Kwlog{1+exp[f(xk)]}
w>1ww=2

しかし、それはもはや最尤推定量ではなくなります-統計的にノー
フランクハレル

1
同意しますが、ロジスティック回帰のパラメーターの統計的推論が望ましい目標ではないことが重要であると私は確信していません(CNNの使用に関するOPの言及もMLベースではありません)。実際、この加重アプローチからのほとんど/すべての推論出力は無視するのが最善ですが、モデルとその結果のリスクスコアは、望ましいセット(たとえば、優れた識別/キャリブレーション)を備えた検証セットに適用できます。
Travis Gerke 2017

1
いいえ、上記の方法を使用すると、モデルのキャリブレーションが妨げられ、ノイズの多いパラメーター推定が得られます。MLEが存在する理由はいくつかあります。
フランクハレル2017

一方の方向では誤分類について非常に懸念しているという些細なケースを考えてみてください。その損失の最良のモデルは、懸念のあるクラスのみを予測します。恐ろしいモデルですが、目的は達成されました。目的を理解し、その目的を理解せずに理論的概念(MLE)に盲目的な信頼を置かないことが重要です。TravisGerkeが指摘したように、モデリングではなく予測に重点が置かれている場合、彼のアプローチは非常に役立ちます。大多数のクラスをダウンサンプリングするよりも確かに優れています。
Statseeker
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.