二値データとロジスティック回帰

Pythonで学ぶ一般化線形モデル

Ita Cirovic Donev

Data Science Consultant

二値応答データ

  • 2クラス応答 $\rightarrow \large{\texttt{\color{#079EA1}{0},\color{#ED715F}{1}}}$

例:

  • 与信審査 $\rightarrow \texttt{\color{#ED715F}{"Default"}/\color{#079EA1}{"Non-Default"}}$
  • テスト合否 $\rightarrow \texttt{\color{#079EA1}{"Pass"}/\color{#ED715F}{"Fail"}}$
  • 不正検知 $\rightarrow \texttt{\color{#ED715F}{"Fraud"}/\color{#079EA1}{"No-Fraud"}}$
  • 製品選択 $\rightarrow \texttt{\color{#2485F2}{"Product ABC"}/\color{#F2AC30}{"Product XYZ"}}$
Pythonで学ぶ一般化線形モデル

二値データ

非集計

  • 単一事象
  • コイン1回投げ
  • 可能な結果は2通り: 0/1
  • $Bernoulli(p)$ または
  • $Binomial(n=1,p)$

集計

  • 複数事象
  • 複数回コイン投げ
  • 試行回数 $n$ における成功回数
  • $Binomial(n,p)$
Pythonで学ぶ一般化線形モデル

ロジスティック関数

学習時間と合否(0/1)の散布図

Pythonで学ぶ一般化線形モデル

ロジスティック関数

学習時間と合否(0/1)の散布図

  • テスト結果: $PASS=1$ または $FAIL=0$

  • 目標

$P(y=1)=\beta_0 + \beta_1x_1$

$P(\text{Pass})=\beta_0 + \beta_1 \times \text{学習時間}$

Pythonで学ぶ一般化線形モデル

ロジスティック関数

学習時間と合否(0/1)へのロジスティック当てはめ

  • テスト結果: $PASS=1$, $FAIL=0$

  • 目標

$P(y=1)=\beta_0 + \beta_1x_1$

$P(\text{Pass})=\beta_0 + \beta_1 \times \text{学習時間}$

  • ロジスティック関数を使用

$f(z) = \frac{1}{(1+\exp(-z))}$

Pythonで学ぶ一般化線形モデル

オッズとオッズ比

       

$$ ODDS = \frac{\text{事象が起こる}}{\text{起こらない}} $$

       

$$ \text{オッズ比} = \frac{odds 1}{odds 2} $$

Pythonで学ぶ一般化線形モデル

オッズの例

  • 4試合 3勝1敗の並び

  • オッズは3対1 オッズの可視計算: 分子に勝ち3、分母に負け1

Pythonで学ぶ一般化線形モデル

オッズと確率

  $$ \text{odds} \neq \text{probability} $$

  $$ \text{odds} = \frac{\text{probability}}{1-\text{probability}} $$

  $$ \text{probability} = \frac{\text{odds}}{1+\text{odds}} $$

Pythonで学ぶ一般化線形モデル

確率モデルからロジスティック回帰へ

 

ステップ1. 確率モデル

$E(y)=\mu=P(y=1)=\beta_0 + \beta_1x_1$

 

ステップ2. ロジスティック関数

$f(z) = \large{\frac{1}{(1+\exp(-z))}}$

 

ステップ3. ロジスティック関数を適用 $\rightarrow$ 逆ロジット

$\mu = \large{\frac{1}{1+\exp(-(\beta_0+\beta_1x_1))}} = \large{\frac{\exp(\beta_0+\beta_1x_1)}{1+\exp(\beta_0+\beta_1x_1)}}$

$1-\mu = \large{\frac{1}{1+\exp(\beta_0+\beta_1x_1)}}$

Pythonで学ぶ一般化線形モデル

確率モデルからロジスティック回帰へ

 

  • 確率 $\rightarrow$ オッズ $$ ODDS=\frac{\mu}{1-\mu} = exp{(\beta_0+\beta_1x_1)} $$  
  • 対数変換 $\rightarrow \color{#CF5383}{\text{ロジスティック回帰}}$

  $$ LOGIT(\mu)=log(\frac{\mu}{1-\mu}) = \beta_0+\beta_1x_1 $$

Pythonで学ぶ一般化線形モデル

Pythonでのロジスティック回帰

関数 - glm()

model_GLM = glm(formula = 'y ~ x',                        
                data = my_data, 
                family = sm.families.Binomial()).fit

入力

y = [0,1,1,0,...]
y = ['No','Yes','Yes',...]
y = ['Fail','Pass','Pass',...]
Pythonで学ぶ一般化線形モデル

練習しましょう!

Pythonで学ぶ一般化線形モデル

Preparing Video For Download...