Por que você precisa de regressão logística

Introdução à Regressão com statsmodels em Python

Maarten Van den Broeck

Content Developer at DataCamp

Conjunto de dados de cancelamento bancário

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
... ... ...
resposta duração do relacionamento recência da atividade
1 https://www.rdocumentation.org/packages/bayesQR/topics/Churn
Introdução à Regressão com statsmodels em Python

Cancelamento vs. recência: um modelo linear

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
Introdução à Regressão com statsmodels em Python

Visualizando o modelo linear

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

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

Um gráfico de dispersão de se o cliente cancelou ou não versus tempo desde a última compra. Todos os pontos estão na linha y igual a 0 ou y igual a 1. Uma linha de tendência linear mostra a probabilidade de cancelamento aumentando conforme o tempo desde a última compra aumenta.

Introdução à Regressão com statsmodels em Python

Ampliando a visão

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

O gráfico de dispersão de se o cliente cancelou ou não versus tempo desde a última compra. Os eixos estão ampliados em comparação com a última vez, mostrando que a linha de tendência se estende abaixo de y igual a 0 e acima de y igual a 1, o que deveria ser impossível.

Introdução à Regressão com statsmodels em Python

O que é regressão logística?

  • Outro tipo de modelo linear generalizado.
  • Usado quando a variável resposta é lógica.
  • As respostas seguem uma curva logística (em S).
Introdução à Regressão com statsmodels em Python

Regressão logística com 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
Introdução à Regressão com statsmodels em Python

Visualizando o modelo logístico

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

Um gráfico de dispersão de se o cliente cancelou ou não versus tempo desde a última compra. Linhas de tendência linear e logística são mostradas, ambas indicando aumento nas probabilidades de cancelamento conforme o tempo desde a última compra aumenta. As duas linhas de tendência se acompanham de perto, exceto em tempos altos desde a última compra.

Introdução à Regressão com statsmodels em Python

Ampliando a visão

O gráfico de dispersão de se o cliente cancelou ou não versus tempo desde a última compra, com ambas as linhas de tendência. Os eixos estão ampliados em comparação com a última vez, mostrando que a linha de tendência logística nunca sai do intervalo de zero a um de cancelamento.

Introdução à Regressão com statsmodels em Python

Vamos praticar!

Introdução à Regressão com statsmodels em Python

Preparing Video For Download...