【統計】ロジスティック回帰のFisher Scoringによる最適化


【目次】


以下でロジスティック回帰に触れていたがFisher Scoringにて再び。
【統計】ロジスティック回帰分析 - こちにぃるの日記
【統計】ロジスティック回帰分析(ホスマー・レメショウ検定、ROC、AUC等) - こちにぃるの日記
【統計】一般化線形モデル(GLM) - こちにぃるの日記
【Python】Kerasでロジスティック回帰 - こちにぃるの日記
【Kaggle】タイタニックの分析をやってみる - こちにぃるの日記


ロジスティック回帰の特徴


ロジスティック回帰は一般化線形モデルの一つ。

目的変数 二値の離散値
分布族 二項分布
リンク関数 ロジットリンク関数
逆リンク関数 ロジスティック関数(シグモイド関数

・誤差構造が二項分布に従うと仮定。
・ロジット関数で実測値 (0~1) をロジット値  (-∞~∞) に変換し、線形モデルを作成。

 \qquad logit(θ_{i})=ln (\dfrac{θ_{i}}{1-θ_{i}})=X_{i}' \beta

・ロジスティック関数で線形予測子から予測値(0~1)を得る。

 \qquad θ_{i} = logistic( X_{i}' \beta )=\dfrac{1}{1+exp( -X_{i}' \beta )}=\dfrac{exp( X_{i}' \beta )}{1+exp( X_{i}' \beta )}

・二値データに対する通常の回帰モデルでは、予測値が0~1の範囲を超えてしまい解釈が難しいが、 ロジスティック回帰の予測値は0~1の範囲に収まり、解釈しやすい。

(青線:ロジスティック回帰、緑線:単回帰分析)


ロジスティック回帰の尤度・誤差関数


尤度

\quad L \left( \beta \right) =\Pi \{ θ_{i}^{\  y_{i}} \times \left( 1-θ_{i} \right)^{ \left( 1 - y_{i} \right) } \}

対数尤度

\quad ln\ L\left( \beta\right)=\sum \{ y_{i} \cdot ln\left(θ_{i}\right) + \left(1-y_{i} \right) \cdot ln \left( 1-θ_{i} \right) \}

交差エントロピー誤差(分類問題の損失関数)

\quad E\left(\beta\right)=-\sum \{ y_{i} \cdot ln\left(θ_{i}\right) + \left(1-y_{i} \right) \cdot ln \left( 1-θ_{i} \right) \} =0


下図の通り、同一式で Y=1 or 0 の実測値と予測値の差(誤差)が求まる。


ロジスティック回帰のFisher Scoringによる最適化


勾配

 \quad \nabla E( \beta )=\dfrac{\partial E( \beta) }{\partial θ}\dfrac{\partial θ}{\partial \widehat{y}}\dfrac{\partial \widehat{y}}{\partial \beta }

 \qquad \qquad =-\sum \{ y_{i} \dfrac{1}{θ_{i}} θ_{i}( 1-θ_{i}) x_{i} + (1-y_{i}) \dfrac{1}{1-θ_{i}} ( -θ_{i}( 1-θ_{i} ) ) x_{i}  \}

 \qquad \qquad =-\sum \{ y_{i} ( 1-θ_{i}) + (1-y_{i}) ( -θ_{i} )\} x_{i}

 \qquad \qquad =-\sum \{ y_{i} - y_{i} θ_{i} - θ_{i} + y_{i} θ_{i}\} x_{i}

 \qquad \qquad =-\sum \{ y_{i} - θ_{i} \} x_{i}

 \qquad \qquad =\sum ( θ_{i} - y_{i}) x_{i}=0

 \quad \nabla E( \beta )= X' (θ-Y)


Fisher情報行列

\quad I=-E(\nabla^{2} E( \beta ))

\quad \nabla^{2} E( \beta ) =-\sum ^{n}_{i=1}\{x_{ik}' \ \theta _{i}(1-\theta _{i}) \ x_{ik})\}

\quad \nabla^{2} E( \beta ) =-X'WX


更新式(Fisher Scoring)
Hessian行列を期待値に置き換えたFisher Scoring法。

\quad \beta^{(t+1)}=\beta^{(t)}-(I^{(t)})^{-1}\nabla E( \beta )^{(t)}

\qquad\quad\ = \beta^{(t)} - (X'WX)^{-1} X'(θ-Y)


手計算


Kaggleチュートリアルタイタニックデータを用いる。
簡単に以下のモデルとする。

目的変数 Survived(生存有無) 0= 死亡, 1= 生存
説明変数 Pclass(チケットのクラス) 1= 1st, 2= 2nd, 3= 3rd
※今回は簡単に 0= 1st or 2nd, 1= 3rd
Sex(性別) 0= Female, 1= Male

Rでの実行結果

Fisher Scoring iterations は 4回。

titanic$Event   <- 1 - titanic$Survived
titanic$Pclass3 <- if_else(titanic$Pclass=="3",1,0)
titanic$Sex2    <- if_else(titanic$Sex=="male",1,0)
  
Call:
glm(formula = Event ~ Pclass3 + Sex, family = binomial, data = titanic)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.1603  -0.5310   0.4516   0.8910   2.0143  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  -1.8878     0.1776 -10.629   <2e-16 ***
Pclass3       1.5125     0.1783   8.483   <2e-16 ***
Sexmale       2.6067     0.1818  14.337   <2e-16 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 1186.66  on 890  degrees of freedom
Residual deviance:  838.86  on 888  degrees of freedom
AIC: 844.86

Number of Fisher Scoring iterations: 4


手計算
初期値は経験ロジットによる回帰パラメータを与える(LINEST関数で推定)。

【更新1回目】

【更新2回目】

【更新3回目】

【更新4回目】

更新4回目で回帰パラメータの前後に差がなくなったため終了する。
推定パラメーターはRと同じ。

β exp(β)
X0 -1.88780 0.15140
X1 1.51251 4.53810
X2 2.60674 13.55479

チケットが1st/2ndクラスに比べて3rdの方が4.5倍オッズが高い。
女性に比べて男性の方が13.6倍オッズが高い。


参考


https://ocw.tsukuba.ac.jp/wp/wp-content/uploads/2019/10/5b43d44b7c8f6475622e63173d226184.pdf
newton
Estimating Logistic Regression Coefficents From Scratch (R version) - The Pleasure of Finding Things Out
Estimating Logistic Regression Coefficents From Scratch (Python version) - The Pleasure of Finding Things Out
http://homepage.stat.uiowa.edu/~luke/classes/STAT7400-2021/_book/optimization.html

本ブログは個人メモです。 本ブログの内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。