Навіщо потрібна логістична регресія

Вступ до Regression зі statsmodels у Python

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
Вступ до Regression зі statsmodels у Python

Відтік 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
Вступ до Regression зі statsmodels у Python

Візуалізація лінійної моделі

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. Лінійний тренд показує, що ймовірність відтоку зростає зі збільшенням часу від останньої покупки.

Вступ до Regression зі statsmodels у Python

Віддалення масштабу

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, що неможливо.

Вступ до Regression зі statsmodels у Python

Що таке логістична регресія?

  • Інший тип узагальненої лінійної моделі.
  • Використовується, коли змінна-відповідь логічна.
  • Відповіді мають логістичну (S-подібну) криву.
Вступ до Regression зі statsmodels у Python

Логістична регресія за допомогою 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
Вступ до Regression зі statsmodels у Python

Візуалізація логістичної моделі

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()

Точкова діаграма: чи пішов клієнт, залежно від часу від останньої покупки. Показані лінійна та логістична лінії тренду; обидві дають зростання ймовірності відтоку зі збільшенням часу. Вони майже збігаються, крім великих значень часу від останньої покупки.

Вступ до Regression зі statsmodels у Python

Віддалення масштабу

Точкова діаграма відтоку проти часу від останньої покупки з обома лініями тренду. Осі відмасштабовано ширше; логістична лінія ніколи не виходить за межі діапазону від 0 до 1.

Вступ до Regression зі statsmodels у Python

Давайте потренуємось!

Вступ до Regression зі statsmodels у Python

Preparing Video For Download...