ロジスティック回帰の損失関数の2つのバージョンについて読みましたが、どちらが正しいか、なぜですか?
Machine Learningから、Zhou ZH(中国語)、:
私の大学のコースから、:
最初のサンプルはすべてのサンプルの累積であり、2番目のサンプルは単一のサンプルに関するものであることは知っていますが、2つの損失関数の形式の違いについてはもっと興味があります。どういうわけか、私はそれらが同等であると感じています。
ロジスティック回帰の損失関数の2つのバージョンについて読みましたが、どちらが正しいか、なぜですか?
Machine Learningから、Zhou ZH(中国語)、:
私の大学のコースから、:
最初のサンプルはすべてのサンプルの累積であり、2番目のサンプルは単一のサンプルに関するものであることは知っていますが、2つの損失関数の形式の違いについてはもっと興味があります。どういうわけか、私はそれらが同等であると感じています。
回答:
関係は次のとおりです:。
ロジスティック関数をとして定義します。それらには、というプロパティがあります。または言い換えると:
両側の逆数を取る場合、取得するログを取得します。
両側からを引くと、これが表示されるはずです。
現時点では、この答えをが。おそらく、元の質問にタイプミスがあります。- Y I β Tは、xはI + L N (1 + E Y I β Tは、xはIを)
元の質問にタイプミスがなかった場合、@ ManelMoralesは正しいと思われ、 -1,1とき、確率質量関数は性質に起因している、。彼は表記新しい曖昧性を導入しているため、ここで書き直しています。残りは、各コーディングに対して負の対数尤度をとることによって続きます。詳細については、以下の回答をご覧ください。P (Y iは = Y I)= F (Y I β Tは、xはI)F (- Z )= 1 - F (Z )ZをI Y
OPは、これら2つの関数間の関係はサンプルの数によるものであると誤解しています(つまり、単一とすべて)。ただし、実際の違いは、単にトレーニングラベルを選択する方法です。
バイナリ分類の場合、ラベルまたは割り当てることができます。
すでに述べたように、ロジスティック関数は確率の形式、つまりおよび持っているため、適切な選択です。など。ラベルを選択すると、割り当てることができます
ようにコンパクトに記述できます。
対数尤度を最大化する方が簡単です。対数尤度の最大化は、負の対数尤度の最小化と同じです。以下のためにサンプル、自然対数といくつかの簡素化を取った後、我々は見つけるでしょう:
完全な導出と追加情報は、このjupyterノートブックに記載されています。一方、代わりにラベル使用した可能性があります。割り当てられることは明らかです
ことも明らかです。この場合、損失関数を最小化する前と同じ手順に従ってください
負の符号によって誘発される逆数を取ると、最後のステップが続きます。これらの2つの形式を同一視すべきではありませんが、各形式でが異なる値を取る場合、これら2つの形式は同等です。
の場合は簡単に表示できます。もしその後、左手側および右側に。
2つの異なる形式がある理由については根本的な理由があるかもしれませんが(2つの異なるロジスティック損失の定式化/表記がある理由を参照)、前者を選択する理由の1つは実際的な考慮事項です。前者では、プロパティを使用して、および、どちらも収束分析に必要です(つまり、ヘッセ行列を計算して損失関数の凸性を決定します)。
ロジスティック回帰の損失関数を次のように学びました。
ロジスティック回帰はバイナリ分類を実行するため、ラベル出力はバイナリの0または1です入力特徴ベクトル与えられたバイナリ出力が1になる確率とします。係数は、アルゴリズムが学習しようとしている重みです。y x w
ロジスティック回帰はバイナリであるため、確率は単に1から上記の項を引いたものです。
損失関数は、1つのトレーニング例の(A)出力にを掛け、(B)出力にを掛けた合計です。以上トレーニングの例。y = 1 P (y = 1 )y = 0 P (y = 0 )m
ここで、はトレーニングデータのラベルを示します。トレーニングインスタンスのラベルが場合、で、左側の被加数はそのままですが、右側の被加数はなり。一方、トレーニングインスタンスにがある場合、用語持つ右の被加数はそのまま残りますが、左の被加数はなり。対数確率は、計算を簡単にするために使用されます。 1 y (i ) = 1 1 − y (i ) 0 y = 0 1 − y (i ) 0
次に、とを以前の式に置き換えると、次のようになります。P (y = 0 )
このフォームの詳細については、スタンフォードの講義ノートをご覧ください。
平均二乗誤差の代わりに、対数損失とも呼ばれるクロスエントロピーと呼ばれるコスト関数を使用します。クロスエントロピー損失は、y = 1の場合とy = 0の場合の2つの別個のコスト関数に分割できます。
それらをまとめると、次のようになります。
上記の式でとを乗算するのは卑劣なトリックで、と両方のケースで同じ式を使用して解きます。場合、最初の側は相殺します。場合、第二の側は相殺します。どちらの場合も、実行する必要がある操作のみを実行します。
for
ループを使用したくない場合は、上記の式のベクトル化された形式を試すことができます
説明全体はMachine Learning Cheatsheetで見ることができます。