はじめに
今回は前回の続き、ロジスティック回帰の最尤推定の証明をしたいと思います。
数式ばかりになってしまいますのでご了承ください。
導出の流れ
- 尤度を求める
- マイナス対数尤度に変換
-
βで微分
- 見やすくするために表記を全てベクトルに
- ニュートンラフソン法により推定値を求める。
前回の記事
https://zenn.dev/totopironote/articles/48e39f9b7fef2b
本題
x∈Rp,β0∈R,β∈Rp に対して
y=1となる確率pは以下で定義される
p=(1+exp{−(β0+xTβ)})−1
ベルヌーイ分布の密度関数は
py(1−p)1−y
よってデータ(x1,y1),⋯,(xN,yN)∈Rp×{0,1}が得られたとき。
尤度は
L=Πi=1Npyi(1−p)1−yi
最優推定量はこの尤度を最大化する(β0^,β^)を求めたい。
つまり
β^0,β^=β0,βargmaxL
マイナス対数尤度は
l=−logL=−i=1∑N{ylogp+(1−y)log(1−p)}=−i=1∑N{ylog1−pp+log(1−p)}=i=1∑N{log(1+exp(β0+xTβ))−y(β0+xTβ)}
ここでは尤度を最大化ではなくマイナス対数尤度の最小化を考える。
βj,j=1,⋯,p に関する微分は
∂βj∂l=i=1∑N{1+exp(β0+xiTβ)xijexp(β0+xiTβ)−xijyi}=i=1∑N{xij(pi−yi)}=0
β0に関する微分は
∂β0∂l=i=1∑N{1+exp(β0+xiTβ)exp(β0+xiTβ)−yi}=i=1∑N(pi−yi)=0
pをβ0,βで微分すると
∂β0∂pi=pi(1−pi),∂βj∂pi=xijpi(1−pi)
よってxi0=1として、j,k=0,⋯,pに対して
∂βj∂βk∂2l=i=1∑Nxijxikpi(1−pi)
となる。
ここで全てベクトル表記になおす。
β=(β0β),X==11⋮1x1Tx2T⋮xNT=111x11x21xN1⋯⋯⋮⋯x1px2pxNp,y=y1⋮yN
p=p1⋮pN,log1N−pp=log1−p1p1⋮log1−pNpN=Xβ
これらを用いると、
マイナス対数尤度は
l=log(1+exp(Xβ))−yTXβ
1回微分は
l˙=XT(p−y)=0
2回微分は
l¨=XTVX,V=diag(v1,⋯,vN),vi=pi(1−pi)
ここでdiagは対角に成分を並べたもので非対角は0の行列。
解析的には解けないのでニュートンラフソン法を使う。
すると、
βnew=βold−l¨−1l˙=βold−(XTVX)−1XT(p−y)
この更新式で収束したものが最尤推定量である。
まとめ
ロジスティック回帰の場合は最尤推定量が解析的に求められないので、ニュートンラフソンを使いました。最後の式はかなりスッキリしていて気持ちい。
次回はロジスティック回帰を回帰の文脈で用いる方法を説明します。
https://zenn.dev/totopironote/articles/5af3ece45d144c
参考文献
- 鈴木 譲 「統計的機械学習の数理100問 with Python」
Discussion