Dlaczego potrzebujesz regresji logistycznej

Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Maarten Van den Broeck

Content Developer at DataCamp

Zbiór danych o odpływie klientów banku

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
... ... ...
odpowiedź długość relacji ostatnia aktywność
1 https://www.rdocumentation.org/packages/bayesQR/topics/Churn
Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Odpływ a ostatnia aktywność: model liniowy

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
Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Wizualizacja modelu liniowego

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

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

Wykres punktowy odpływu klientów w zależności od czasu od ostatniego zakupu. Punkty leżą na liniach y=0 lub y=1. Liniowa linia trendu pokazuje rosnące prawdopodobieństwo odpływu wraz z upływem czasu od ostatniego zakupu.

Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Powiększenie skali

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

Wykres punktowy odpływu klientów w zależności od czasu od ostatniego zakupu. Osie są oddalone, co pokazuje, że linia trendu wychodzi poniżej y=0 i powyżej y=1, co nie powinno być możliwe.

Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Czym jest regresja logistyczna?

  • Kolejny typ uogólnionego modelu liniowego.
  • Stosowana gdy zmienna odpowiedzi jest logiczna.
  • Odpowiedzi układają się wzdłuż krzywej logistycznej (w kształcie S).
Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Regresja logistyczna z użyciem `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
Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Wizualizacja modelu logistycznego

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

Wykres punktowy przedstawiający odpływ klientów w zależności od czasu od ostatniego zakupu. Pokazano linie trendu: liniową i logistyczną — obie wskazują rosnące prawdopodobieństwo odpływu. Linie są zbliżone, z wyjątkiem dużych wartości czasu od ostatniego zakupu.

Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Powiększenie skali

Wykres punktowy odpływu klientów w zależności od czasu od ostatniego zakupu z obiema liniami trendu. Osie są oddalone, co pokazuje, że linia logistyczna nie wychodzi poza zakres 0–1.

Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Czas na ćwiczenia!

Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Preparing Video For Download...