私はログ損失とその仕組みをよりよく理解しようとしていますが、見つけることができないように思われることの1つは、ログ損失数を何らかのコンテキストに入れることです。モデルのログ損失が0.5の場合、それは良いですか?良い点と悪い点とは何ですか?これらのしきい値はどのように変化しますか?
私はログ損失とその仕組みをよりよく理解しようとしていますが、見つけることができないように思われることの1つは、ログ損失数を何らかのコンテキストに入れることです。モデルのログ損失が0.5の場合、それは良いですか?良い点と悪い点とは何ですか?これらのしきい値はどのように変化しますか?
回答:
他のメトリックと同様に、良いメトリックは、観測に関する情報なしで推測する必要がある場合、「ダム」、偶然の推測よりも優れたものです。これは、統計ではインターセプトのみのモデルと呼ばれます。
この「愚かな」推測は、2つの要因に依存します。
LogLossメトリックの場合、通常の「よく知られた」メトリックの1つは、0.693が情報価値のない値であると言うことです。この数値はp = 0.5
、任意のクラスのバイナリ問題を予測することにより取得されます。これは、バランスの取れたバイナリ問題に対してのみ有効です。1つのクラスの有病率が10%の場合、p =0.1
そのクラスを常に予測するためです。予測0.5
は鈍いので、これはダムによる偶然の予測のベースラインになります。
I. クラスの数がN
ダムログロスに与える影響:
バランスのとれた場合(すべてのクラスが同じ有病率を持っている)、p = prevalence = 1 / N
すべての観測について予測すると、方程式は単純になります。
Logloss = -log(1 / N)
log
Ln
こと慣例を使う人のために、neperian対数。
バイナリの場合N = 2
:Logloss = - log(1/2) = 0.693
愚かなログロスは次のとおりです。
II。ダムログロスに対するクラスの普及の影響:
a。バイナリ分類の場合
この場合、常に予測しp(i) = prevalence(i)
、次の表を取得します。
したがって、クラスのバランスが非常に悪い場合(普及率<2%)、実際には0.1の対数損失は非常に悪い場合があります!そのような場合、98%の精度は悪いでしょう。したがって、Loglossは使用するのに最適なメトリックではないかもしれません
b。3クラスケース
「ダム」-有病率に応じたログロス-3クラスの場合:
ここでは、バランスの取れたバイナリおよび3クラスのケース(0.69および1.1)の値を見ることができます。
結論
0.69の対数損失は、マルチクラス問題では良好であり、バイナリバイアスの場合では非常に悪い場合があります。
場合によっては、予測の意味を確認するために、問題のベースラインを自分で計算する方がよいでしょう。
偏った場合、loglossには精度やその他の損失関数と同じ問題があることを理解しています。これは、パフォーマンスの全体的な測定値のみを提供します。したがって、マイノリティクラス(リコールと精度)に焦点を当てたメトリックで理解を補完するか、またはログロスをまったく使用しないことをお勧めします。
したがって、これは実際にはFirebugsの応答よりも複雑であり、予測しようとしているプロセスの固有の変動にすべて依存しています。
バリエーションとは、「既知のイベントと未知のイベントがまったく同じ条件で繰り返される場合、同じ結果が再び発生する可能性はどれくらいか」という意味です。
確率Pの場合、完全な予測子には損失があります。損失= P ln P +(1-P)ln(1-P)
さらに悪いことに、50/50の結果でいくつかのイベントが予測されるものを予測しようとしている場合、平均を統合して取得すると、平均損失はL = 0.5になります。
予測しようとしているものが少し繰り返しやすい場合、完全なモデルの損失は低くなります。したがって、たとえば、完全なモデルが十分な情報を使用して、考えられるすべてのイベントで「このイベントは90%の確率で発生する」という最悪のイベントの結果を予測できた場合、平均損失はL = 0.18になります。 。
確率の分布が均一でない場合にも違いがあります。
あなたの質問に対する答えは、「あなたが予測しようとしているものの性質に依存する」という答えです
標準的な統計の答えは、インターセプトのみのモデルと比較することです。(これは他の回答で言及された不均衡なクラスを処理します)cf mcFaddenの擬似r ^ 2。 https://stats.idre.ucla.edu/other/mult-pkg/faq/general/faq-what-are-pseudo-r-squareds/
今、問題は最大値が何であるかです。基本的に問題は、イベントの確率がイベントのモデルの外で未定義であることです。私が提案する方法は、確率推定を得るために、テストデータを取得して特定のレベルに集約することです。次に、この推定の対数損失を計算します。
たとえば、(web_site、ad_id、consumer_id)に基づいてクリック率を予測し、次にクリック、インプレッションをweb_siteレベルに集計し、各Webサイトのテストセットのctrを計算します。次に、これらのテストクリックスルー率を予測として使用して、テストdata_setのlog_lossを計算します。これは、ウェブサイトIDのみを使用するモデルのテストセットの最適なログ損失です。問題は、各レコードが一意に識別されるまで機能を追加するだけで、この損失をできるだけ小さくできることです。