【目次】
以下でロジスティック回帰に触れていたがFisher Scoringにて再び。
【統計】ロジスティック回帰分析 - こちにぃるの日記
【統計】ロジスティック回帰分析(ホスマー・レメショウ検定、ROC、AUC等) - こちにぃるの日記
【統計】一般化線形モデル(GLM) - こちにぃるの日記
【Python】Kerasでロジスティック回帰 - こちにぃるの日記
【Kaggle】タイタニックの分析をやってみる - こちにぃるの日記
ロジスティック回帰の特徴
ロジスティック回帰は一般化線形モデルの一つ。
目的変数 | 二値の離散値 |
分布族 | 二項分布 |
リンク関数 | ロジットリンク関数 |
逆リンク関数 | ロジスティック関数(シグモイド関数) |
・誤差構造が二項分布に従うと仮定。
・ロジット関数で実測値 (0~1) をロジット値 に変換し、線形モデルを作成。
・ロジスティック関数で線形予測子から予測値(0~1)を得る。
・二値データに対する通常の回帰モデルでは、予測値が0~1の範囲を超えてしまい解釈が難しいが、 ロジスティック回帰の予測値は0~1の範囲に収まり、解釈しやすい。
(青線:ロジスティック回帰、緑線:単回帰分析)
ロジスティック回帰の尤度・誤差関数
尤度
対数尤度
交差エントロピー誤差(分類問題の損失関数)
下図の通り、同一式で Y=1 or 0 の実測値と予測値の差(誤差)が求まる。
ロジスティック回帰のFisher Scoringによる最適化
勾配
Fisher情報行列
更新式(Fisher Scoring)
Hessian行列を期待値に置き換えたFisher Scoring法。
手計算
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