ロジスティック関数のヘッセ行列


15

ロジスティック回帰の目的関数のヘッシアンを導き出すのは困難です。ここで、は次のとおりです l(θ)l(θ)

l(θ)=∑i=1m[yilog⁡(hθ(xi))+(1−yi)log⁡(1−hθ(xi))]

hθ(x)はロジスティック関数です。ヘッセ行列はです。計算して導出しようとしましたが、から行列表記を取得する方法がわかりませんでした。XTDX∂2l(θ)∂θi∂θj∂2l(θ)∂θi∂θj

を導出するクリーンで簡単な方法を知っている人はいますか?XTDX


3
あなたは何を手に入れた?∂2l∂θi∂θj
— Glen_b -Reinstateモニカ

1
以下は、探している正確な計算を示すスライドの良いセットです。sites.stat.psu.edu

ヘッシアンを段階的に計算する素晴らしいビデオを見つけました。ロジスティック回帰(バイナリ)-ヘシアンの計算
— ナオミ

回答:


19

ここでは、ソリューションが自己完結型であるために必要なすべてのプロパティとIDを導出しますが、それ以外はこの導出はクリーンで簡単です。記法を形式化し、損失関数をもう少しコンパクトに書きましょう。検討してサンプルをようと。バイナリロジスティック回帰では、通常、仮説関数がロジスティック関数であることを思い出してください。正式にm{xi,yi}xi∈Rdyi∈Rhθ

hθ(xi)=σ(ωTxi)=σ(zi)=11+e−zi,

ここで、およびです。損失関数(OPには負の符号が欠落していると思われます)は、次のように定義されます。ω∈Rdzi=ωTxi

l(ω)=∑i=1m−(yilog⁡σ(zi)+(1−yi)log⁡(1−σ(zi)))

ロジスティック関数には2つの重要なプロパティがあり、将来の参照のためにここで導き出します。まず、。1−σ(z)=1−1/(1+e−z)=e−z/(1+e−z)=1/(1+ez)=σ(−z)

また、

∂∂zσ(z)=∂∂z(1+e−z)−1=e−z(1+e−z)−2=11+e−ze−z1+e−z=σ(z)(1−σ(z))

コンポーネントに関する導関数を取得する代わりに、ここではベクトルを直接操作します(ベクトルの導関数はこちらで確認できます)。損失関数のヘッセ行列はで与えられますが、最初におよび。l(ω)∇→2l(ω)∂z∂ω=xTω∂ω=xT∂z∂ωT=∂ωTx∂ωT=x

してみましょう。上記で導出したプロパティとチェーンルールを使用してli(ω)=−yilog⁡σ(zi)−(1−yi)log⁡(1−σ(zi))

∂log⁡σ(zi)∂ωT=1σ(zi)∂σ(zi)∂ωT=1σ(zi)∂σ(zi)∂zi∂zi∂ωT=(1−σ(zi))xi∂log⁡(1−σ(zi))∂ωT=11−σ(zi)∂(1−σ(zi))∂ωT=−σ(zi)xi

今ではそれを示すのは簡単です

∇→li(ω)=∂li(ω)∂ωT=−yixi(1−σ(zi))+(1−yi)xiσ(zi)=xi(σ(zi)−yi)

なんて!

最後のステップは、ヘッセ行列を計算することです

∇→2li(ω)=∂li(ω)∂ω∂ωT=xixiTσ(zi)(1−σ(zi))

ためのサンプル我々は。これは、列ベクトルをようなサイズ行列に連結することと同等です。スカラー項は、ように対角行列結合されます。最後に、m∇→2l(ω)=∑i=1mxixiTσ(zi)(1−σ(zi))xi∈RdXd×m∑i=1mxixiT=XXTDDii=σ(zi)(1−σ(zi))

H→(ω)=∇→2l(ω)=XDXT

最初からすべてのサンプルを一度に検討し、代わりに行列微分を使用することにより、より高速なアプローチを導き出すことができます。補足説明として、この定式化では、が凸であることを示すのは簡単です。ましょう任意のベクターであり、その結果。それからl(ω)δδ∈Rd

δTH→(ω)δ=δT∇→2l(ω)δ=δTXDXTδ=δTXD(δTX)T=‖δTDX‖2≥0

以来、と。これは、が正半無限であり、したがってが凸である(ただし、強く凸ではない)ことを意味します。D>0‖δTX‖≥0Hl


2
最後の方程式では、てはなりません 以降 =?||δD1/2X||XDX⊤XD1/2(XD1/2)⊤
— -appletree

1
てはいけませんか?XTDX
— チンタンシャー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.