1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【自分用メモ】ロジスティック回帰モデルの係数の求め方

Posted at

完全に自分用メモ。

モチベーション

自分のバイタルデータ(体重、身長、性別、...)を用いて、来年病気にかかるかどうかを推定したい。

ベルヌーイ分布

もっと一般化すると、
あるパラメータ$\boldsymbol{x}$を用いて、ある事象$Y$が起こる($Y=1$)か、起こらない($Y=0$)かを推定したい、ということになる。

2種類のみの結果しか得られない今回の場合のような試行はベルヌーイ試行と呼ばれ、$Y=1$のときの確率$P(Y=1)$を$p$とすると、$P(Y=0)$のときの確率は$1-p$となり、期待値は$p$、分散は$p(1-p)$となる。

また、確率質量関数は、

P(Y=k) = p^k(1-p)^{1-k} \qquad for\qquad k ∈ {0,1}

となる。

尤度関数

ある患者のバイタルデータを$\boldsymbol{x}$とし、来年病気にかかるという結果を$Y=1$、病気にかからないという結果を$Y=0$とすると、この患者さんのデータが観測されたときの、病気の有無$Y$に対するベルヌーイの確率質量関数は、上で示した通り、

P(Y=k) = p(\boldsymbol{x})^k(1-p(\boldsymbol{x}))^{1-k} \qquad for\qquad k ∈ {0,1}

となる。すなわち、$p$は$x$から計算される病気にかかる確率を表している。
もしこの患者さんが病気にかかる($Y=1$)と観測されたとする。この「観測データ」が与えられたときに、モデルのパラメータである$p$がどれくらい尤もらしいかを示すのが尤度関数$L(p|Y=1)$である。

L(p|Y=1)=p^1(1-p)^0=p

逆に病気にかからなかった$(Y=0)$とすると、

L(p|Y=0)=p^0(1-p)^1=1-p

となる。
こういったデータが多く取得している場合を考える。
$n$人の患者さんのデータ$\boldsymbol{x}_1$~$\boldsymbol{x}_n$とそれぞれの患者さんの病気にかかったかどうかのデータがあるとする。それぞれの患者は独立だと仮定すると、全体の尤度関数は各患者の個別の尤度関数の積になる。

L(\boldsymbol{p}|\boldsymbol{Y})=\prod^n_{i=1}p_i^{Y_i}(1-p_i)^{1-Y_i}

この尤度関数を最大にするようなモデルのパラメータを見つけるのが最尤推定である。

※最尤推定はこの動画がわかりやすい。

ロジスティック回帰

$p$が

\ln(\frac{p}{1-p})=\beta_0+\Sigma\beta_k\boldsymbol{x}_k

というモデルで表せると仮定したとき、このモデルをロジスティック回帰モデルという。
これを変形すると、

p=\frac{1}{1+\exp(-(\beta_0+\Sigma\beta_k\boldsymbol{x}_k))}

となる。
私達の目標は、パラメータ$\beta_0$、$\beta_1$、...が尤もらしいものを見つけることである。

損失関数

ここで、尤度関数$L(\boldsymbol{p}|\boldsymbol{Y})$を思い出す。この対数$\ln(L(\boldsymbol{p}|\boldsymbol{Y}))$ともとの尤度関数の最大値をとるパラメータは同じである。計算を簡単にするため、対数を取り、$p=\frac{1}{1+\exp(-(z_i))}$を代入する。$z_i=\beta^i_0+\Sigma_k\beta^i_k\boldsymbol{x}^i_k$とした。

\ln(L(\boldsymbol{p}|\boldsymbol{Y}))=\Sigma^n_{i=1}[Y_i\ln(p_i)+(1-Y_i)\ln(1-p_i)]
\ln(L(\boldsymbol{p}|\boldsymbol{Y}))=\Sigma^n_{i=1}[Y_i\ln(\frac{1}{1+\exp(-z_i)})+(1-Y_i)\ln(1-\frac{1}{1+\exp(-z_i)})]

式変形すると、

\ln(L(\boldsymbol{p}|\boldsymbol{Y}))=\Sigma^n_{i=1}[Y_iz_i-\ln(1+\exp(z_i)]

となる。
$x_0=1$として、$z_i$をまとめると、

\ln(L(\boldsymbol{p}|\boldsymbol{Y}))=\Sigma^n_{i=1}[Y_i\boldsymbol{x}^T_i\boldsymbol\beta-\ln(1+\exp(\boldsymbol{x}^T\boldsymbol\beta)]

となり、これは損失関数と呼ばれる。
損失関数を$\boldsymbol\beta$で偏微分したときにゼロとなる点が、尤もらしいパラメータになる。この偏微分=0の解は解析的に解くことが難しいので、ニュートン・ラプソン法を用いる。

ニュートン・ラプソン法

一般に、関数$f(\beta)=0$の解を求めるニュートン・ラプソン法の更新式は以下の通りである。

\beta_{k+1}=\beta_k-\frac{f(\beta_k)}{f'(\beta_k)}

多次元展開し、ベクトル表記すると

\boldsymbol\beta_{k+1}=\boldsymbol\beta_k-\frac{f(\boldsymbol\beta_k)}{f'(\boldsymbol\beta_k)}

$f(\beta)$は損失関数を偏微分したものであり、
$f(\beta_j)=\frac{\partial}{\partial\beta_j}\ln L$
となる。なので、更新式を作成するにあたって、損失関数の1回偏微分と2回偏微分した式が必要となる。

1回偏微分

\displaylines{
\frac{\partial}{\partial\beta_j}\ln L = \Sigma^n_{i=1}[Y_ix_{ij}-\frac{\exp(x^T_i \beta_j)}{1+\exp(x^T_i \beta_j)}x_{ij}] \\
 = \Sigma^n_{i=1}x_{ij}[Y_i-p_i]
}

※$p_i=\frac{\exp(x^T_i \beta_j)}{1+\exp(x^T_i \beta_j)}$を使用している。

ベクトル形式で表現すると、勾配ベクトル$\nabla L$は以下のようになる

\nabla L(\boldsymbol\beta)=\boldsymbol X^T(\boldsymbol Y - \boldsymbol P)

2回偏微分

\frac{\partial^2L}{\partial \beta_j \partial \beta_k} = \Sigma^n_{i=1} -x_{ij} x_{ik} p_i(1-p_i)

$\frac{\partial p_i}{\partial \beta_k}=x_{ik} p_i(1-p_i)$となることを用いている。
ヘッセ行列$\boldsymbol H$の各要素$\boldsymbol H_{jk}$はこの2改変微分に対応する。行列形式で表現すると、

\boldsymbol H = - \boldsymbol X^T \boldsymbol W \boldsymbol X

ここで、$\boldsymbol W$はn×nの対角行列で、対角要素は$w_{ii}=p_i(1-p_i)$である。

これで、ニュートン・ラプソン法の計算ができるようになる。

反復過程

  1. 初期値の設定
    まず$\boldsymbol\beta^{(0)}$を設定します。例えば、すべて0。
  2. 収束するまで以下のステップを繰り返します。
    1. 現在の$\boldsymbol\beta^{(k)}$を用いて、各患者の$p^{(k)}_i$を計算する。
    2. $p^{(k)}_i$を用いて、勾配ベクトル$\nabla L$を計算する
    3. $p^{(k)}_i$を用いて、重み行列$\boldsymbol W^{(k)}$を計算する。
    4. $\boldsymbol W^{(k)}$を用いて、ヘッセ行列$\boldsymbol H^{(k)}$を計算する。
    5. パラメータを更新する。
    \boldsymbol\beta^{(k+1)} = \boldsymbol\beta^{(k)} - [\boldsymbol H^{(k)}]^{-1} \nabla L
    
    ||$\boldsymbol\beta^{(k+1)}-\boldsymbol\beta^{(k)}||$が非常に小さくなった場合に計算を終了する。

これで、ロジスティック回帰モデルの係数が求まる。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?