為什麼需要邏輯斯迴歸

使用 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
... ... ...
response length of relationship recency of activity
1 https://www.rdocumentation.org/packages/bayesQR/topics/Churn
使用 Python 中的 statsmodels 進行回歸入門

流失對近期性:線性模型

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 與大於 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 進行回歸入門

一起來練習吧!

使用 Python 中的 statsmodels 進行回歸入門

Preparing Video For Download...