Зачем нужна логистическая регрессия

Введение в регрессию с 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
... ... ...
отклик длительность отношений давность активности
1 https://www.rdocumentation.org/packages/bayesQR/topics/Churn
Введение в регрессию с statsmodels на Python

Отток и давность: линейная модель

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
Введение в регрессию с 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. Линейная линия тренда показывает рост вероятности оттока по мере увеличения времени с последней покупки.

Введение в регрессию с 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, что недопустимо.

Введение в регрессию с statsmodels на Python

Что такое логистическая регрессия?

  • Ещё один вид обобщённой линейной модели.
  • Применяется, когда переменная отклика логическая.
  • Отклики следуют логистической (S-образной) кривой.
Введение в регрессию с 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
Введение в регрессию с 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()

Диаграмма рассеяния: отток клиента в зависимости от времени с последней покупки. Показаны линейная и логистическая линии тренда — обе отражают рост вероятности оттока. Линии близко совпадают, кроме области больших значений времени с последней покупки.

Введение в регрессию с statsmodels на Python

Отдаляем масштаб

Диаграмма рассеяния: отток клиента в зависимости от времени с последней покупки, с обеими линиями тренда. Оси отдалены — видно, что логистическая линия тренда не выходит за пределы диапазона от нуля до единицы.

Введение в регрессию с statsmodels на Python

Давайте потренируемся!

Введение в регрессию с statsmodels на Python

Preparing Video For Download...