なぜロジスティック回帰が必要か

Pythonで学ぶstatsmodelsによる回帰入門

Maarten Van den Broeck

Content Developer at DataCamp

銀行の解約データセット

has_churned time_since_first_purchase time_since_last_purchase
0 0.3993247 -0.5158691
1 -0.4297957 0.6780654
0 3.7383122 0.4082544
0 0.6032289 -0.6990435
... ... ...
応答 関係の長さ 活動の新しさ(直近度)
1 https://www.rdocumentation.org/packages/bayesQR/topics/Churn
Pythonで学ぶstatsmodelsによる回帰入門

解約 vs. 直近度:線形モデル

mdl_churn_vs_recency_lm = ols("has_churned ~ time_since_last_purchase",
                              data=churn).fit()

print(mdl_churn_vs_recency_lm.params)
Intercept                   0.490780
time_since_last_purchase    0.063783
dtype: float64
intercept, slope = mdl_churn_vs_recency_lm.params
Pythonで学ぶstatsmodelsによる回帰入門

線形モデルの可視化

sns.scatterplot(x="time_since_last_purchase",
                y="has_churned",
                data=churn)

plt.axline(xy1=(0, intercept), slope=slope) plt.show()

最終購入からの時間に対する解約有無の散布図。点は y=0 または y=1 にのみ位置。線形トレンド線は、時間とともに解約確率が上がることを示す。

Pythonで学ぶstatsmodelsによる回帰入門

ズームアウト

sns.scatterplot(x="time_since_last_purchase",
                y="has_churned",
                data=churn)

plt.axline(xy1=(0,intercept),
           slope=slope)

plt.xlim(-10, 10) plt.ylim(-0.2, 1.2)
plt.show()

最終購入からの時間に対する解約有無の散布図。軸を広げると、線形トレンド線が y=0 を下回り y=1 を上回り、本来あり得ない範囲に伸びることがわかる。

Pythonで学ぶstatsmodelsによる回帰入門

ロジスティック回帰とは?

  • 一般化線形モデルの一種。
  • 応答変数が論理型のときに使用。
  • 応答はロジスティック(S字)曲線に従う。
Pythonで学ぶstatsmodelsによる回帰入門

logit() によるロジスティック回帰

from statsmodels.formula.api import logit
mdl_churn_vs_recency_logit = logit("has_churned ~ time_since_last_purchase",
                                   data=churn).fit()

print(mdl_churn_vs_recency_logit.params)
Intercept                  -0.035019
time_since_last_purchase    0.269215
dtype: float64
Pythonで学ぶstatsmodelsによる回帰入門

ロジスティックモデルの可視化

sns.regplot(x="time_since_last_purchase",
            y="has_churned",
            data=churn,
            ci=None,
            logistic=True)
plt.axline(xy1=(0,intercept),
           slope=slope,
           color="black")

plt.show()

最終購入からの時間に対する解約有無の散布図。線形とロジスティックのトレンド線を表示。どちらも時間が増えるほど解約確率が上がる。高い値域では両者が少しずれるが、それ以外はほぼ一致。

Pythonで学ぶstatsmodelsによる回帰入門

ズームアウト

最終購入からの時間に対する解約有無の散布図。両トレンド線を表示。前回より軸を広げ、ロジスティック線が常に0〜1の範囲内に収まることを示す。

Pythonで学ぶstatsmodelsによる回帰入門

Passons à la pratique !

Pythonで学ぶstatsmodelsによる回帰入門

Preparing Video For Download...