ロジスティック回帰式の導出

1.ロジスティック回帰モデルの仮説は次のとおりです。h \ theta(x)= g(\ theta \ top x) ここで、Xは特徴ベクトルを表し、gはロジスティック関数(ロジスティック関数)は一般的に使用されるS字型ロジスティック関数です。式\ g(z)= \ frac {1} {1 + e ^ {-z}}は次のとおりです。ロジスティック関数のイメージは次のとおりです。

G(z)の関数の値の範囲は0〜1であることから、h \ theta(x)これを理解することがある:所与の入力変数に対して、出力変数= 1(確率推定確率が)される 選択されたパラメータに基づいて算出しますh \ theta(x)= P(y = 1 | x; \ theta)所与のためにたとえば、X時間θ X = 0.7がされ決定されたパラメータにより算出、その70%の確率があることを意味し、yは正のカテゴリでは、対応する確率ことyが負のカテゴリでは、1- 0.7 = 0.3。

2.モデル関数を決定した後、損失関数を決定する必要があります。損失関数は、モデルの出力と実際の出力の差を測定するために使用されます。

2つのラベル1と0のみを想定すると、  in \ in \ left \ {0、\ right 1 \}収集されたサンプルのセットをイベントと見なす場合、このイベントが発生する確率はpと見なされます。モデルyの値は、ラベルが1である確率(p)に等しくなります。

p_ {y = 1} = \ frac {1} {1 + e ^ {-\ theta \ top x}} = PP_ {y = 1} = \ frac {1} {1 + e ^ {-\ theta \ top x}} = P

ラベルは1または0であるため、ラベルが0になる確率は次のとおりです。P_ {y = 0} = 1-P

単一のサンプルをイベントと見なすと、このイベントが発生する確率は次のようになります。

P _ {(y | x))} = \ left \ {\ begin {matrix} p、y = 1&\\ 1-p、y = 0&\ end {matrix} \ right。

この関数は計算が簡単ではなく、次と同等です。

P_ {y_ {i} | x_ {i}} = p ^ {y_ {i}} *(1-P)^ {1-y_ {i}}

この関数の意味を説明するために、サンプルを収集し\ left(x_ {i}、\ right y_ {i})ました。このサンプルでy_ {i}、そのラベルある確率収集しました p ^ {y_ {i}}(1-p)^ {1-y_ {i}} 。(y = 1の場合、結果はpです。y= 0の場合、結果は1-pです)。

合計Nのデータセットを収集する場合\ left \ {(x_ {1}、y_ {1})、(x_ {2}、y_ {2})、(x_ {3}、y_ {3})...(x_ {N}、y_ { N})\ right \}、この結合されたイベントの合計確率を見つける方法は?実際、各サンプルの発生確率、つまりこのサンプルのセットを収集する確率を乗算するだけで十分です。

P_ {合計} = P(y_ {1} | x_ {1})P(y_ {2} | x2})P(y_ {3} | x_ {3})... P(y_ {N} | x_ {N})

= \ prod_ {n = 1} ^ {N} p ^ {y_ {n}}(1-p)^ {1-y_ {n}}

連続乗算は非常に複雑であるため、両側の対数を使用して、連続乗算を連続加算形式に変換します。

ln(P_ {total})= ln(\ prod_ {n = 1} ^ {N} p ^ {y_ {n}}(1-p)^ {1-y_ {n}})

= \ sum_ {n = 1} ^ {N} ln(p ^ {y_ {n}}(1-p)^ {1-y_ {n}})

= \ sum_ {n = 1} ^ {N}(y ^ {n} ln(p)+(1-y_ {n})ln(1-p))

その中でp = \ frac {1} {1 + e ^ {-\ theta} \ top x}

この関数はJ(\ theta) 、損失関数と も呼ばれます損失関数は、現在のモデルの出力結果と実際の出力結果の差を測定する関数として理解できます。ここでの損失関数の値は、イベントの発生確率の合計に等しく、大きいほど良いことを願っています。しかし、それは損失の意味とは少し反対なので、前に負の記号を付けることもできます。など:J(\ theta)=-\ frac {1 {{n} \ sum_ {n = 1} ^ {N}(y ^ {n} ln(p)+(1-y_ {n})ln(1-p ))

3.上記によれば、ロジスティック回帰の勾配損失関数がわかっているJ(\ theta)ので、正しい\ theta偏導関数を見つけることで勾配関数を取得できますJ(\ theta)

\ bigtriangledown p(\ theta)= \ bigtriangledown(\ frac {1} {1 + e ^ {-\ theta \ top x}})

=-\ frac {1} {(1 + e ^ {-\ theta \ top x})^ {2}}(1 + e ^ {-\ theta \ top x}) '

=-\ frac {e ^ {-\ theta \ top x}} {(1 + e ^ {-\ theta \ top x})^ {2}} \ cdot(-x)

= \ frac {1} {1 + e ^ {-\ theta \ top x}} \ cdot \ frac {e ^ {-\ theta \ top x}} {1 + e ^ {-\ theta \ top x}} \ cdot x

= p(1-p)x

J(\ theta)導出、\ bigtriangledown p(\ theta)以下を得ることができます。

\ bigtriangledown J(\ theta)= \ bigtriangledown- \ frac {1} {m}(\ sum_ {n = 1} ^ {N}(y_ {n} ln(p)+(1-y_ {n})ln (1-p)))

= \ sum_ {n = 1} ^ {N}(y_ {n} ln '(p)+(1-y_ {n})ln'(1-p))
=-\ frac {1} {n} \ sum_ {n = 1} ^ {N}((y_ {n} \ frac {1} {p} p ')+(1 + y_ {n})\ frac { 1} {1-p}(1-p '))

=-\ frac {1} {n} \ sum_ {n = 1} ^ {N}(y_ {n}(1-p)x_ {n}-(1-y_ {n} px_ {n}))

=-\ frac {1} {n} \ sum_ {n = 1} ^ {N}(y_ {n} -p)x_ {n}

=-\ frac {1} {n} \ sum_ {n = 1} ^ {N}(y_ {n}-\ frac {1} {1 + e ^ {-\ theta \ top x_ {n}}}) x_ {n}

= \ frac {1} {n} \ sum_ {n = 1} ^ {n}(\ frac {1} {1 + e ^ {-\ theta \ top x_ {n})}}-y_ {n}) x_ {n}

4.上記によれば、ロジスティック回帰の定義は次のようになります。
目的関数:h _ {\ theta}(x)= \ frac {1} {1 + e ^ {-\ theta \ top x}}

コスト関数:J(\ theta)=-\ frac {1} {m} \ sum_ {n = 1} ^ {N}(y ^ {n} ln(p)+(1-y_ {n})ln(1-p ))

勾配関数:\ frac {\ partial J(\ theta)} {\ partial \ theta} = \ frac {1} {n} \ sum_ {n = 1} ^ {n}(\ frac {1} {1 + e ^ {- \ theta \ top x_ {n}}}-y_ {n})x_ {n}

最急降下法:

最急降下法は次のとおりです。

\ theta_ {j}:= \ theta_ {j}-\ alpha \ frac {1} {m} \ sum_ {n = 1} ^ {N}(h _ {\ theta}(x ^ {(n)})- y ^ {(n)})x_ {j} ^ {(n)}その中に\アルファは学習率があり、0.01、0.03、0.1、0.3、1、3、10から選択できます。

 

 

 

 

参照元:https//zhuanlan.zhihu.com/p/44591359

おすすめ

転載: blog.csdn.net/qq_32323239/article/details/108088380