Vorhersagen und Quoten

Einführung in die Regression mit statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Vorhersagen von regplot()

sns.regplot(x="time_since_last_purchase",
            y="has_churned",
            data=churn,
            ci=None,
            logistic=True)

plt.show()

Streudiagramm von Churn vs. Zeit seit letztem Kauf, mit logistischer Trendlinie.

Einführung in die Regression mit statsmodels in Python

Vorhersagen erstellen

mdl_recency = logit("has_churned ~ time_since_last_purchase",
                    data = churn).fit()


explanatory_data = pd.DataFrame( {"time_since_last_purchase": np.arange(-1, 6.25, 0.25)})
prediction_data = explanatory_data.assign( has_churned = mdl_recency.predict(explanatory_data))
Einführung in die Regression mit statsmodels in Python

Punktvorhersagen hinzufügen

sns.regplot(x="time_since_last_purchase",
            y="has_churned",
            data=churn,
            ci=None,
            logistic=True)

sns.scatterplot(x="time_since_last_purchase",
                y="has_churned",
                data=prediction_data,
                color="red")

plt.show()

Streudiagramm von Churn vs. Zeit seit letztem Kauf, mit logistischer Trendlinie. Die Grafik ist mit den Ergebnissen von predict() annotiert, die der Trendlinie genau folgen.

Einführung in die Regression mit statsmodels in Python

Wahrscheinlichstes Ergebnis ermitteln

prediction_data = explanatory_data.assign(
    has_churned = mdl_recency.predict(explanatory_data))

prediction_data["most_likely_outcome"] = np.round(prediction_data["has_churned"])
Einführung in die Regression mit statsmodels in Python

Wahrscheinlichstes Ergebnis visualisieren

sns.regplot(x="time_since_last_purchase",
            y="has_churned",
            data=churn,
            ci=None,
            logistic=True)

sns.scatterplot(x="time_since_last_purchase",
                y="most_likely_outcome",
                data=prediction_data,
                color="red")

plt.show()

Streudiagramm von Churn vs. Zeit seit letztem Kauf, mit logistischer Trendlinie. Die Grafik ist mit den wahrscheinlichsten Ergebnissen annotiert. Bei geringer Zeit seit letztem Kauf ist das wahrscheinlichste Ergebnis kein Churn. Bei hoher Zeit ist Churn am wahrscheinlichsten.

Einführung in die Regression mit statsmodels in Python

Quoten (Odds)

„Odds“ (Quoten) sind die Wahrscheinlichkeit für ein Ereignis geteilt durch die Wahrscheinlichkeit, dass es nicht eintritt.

$$ \text{odds} = \frac{\text{probability}}{(1 - \text{probability)}} $$

$$ \text{odds} = \frac{0.25}{(1 - 0.25)} = \frac{1}{3} $$

Liniendiagramm von Quoten vs. Wahrscheinlichkeit. Die Kurve steigt asymptotisch gegen unendlich, wenn die Wahrscheinlichkeit gegen 1 geht.

Einführung in die Regression mit statsmodels in Python

Quoten berechnen

prediction_data["odds"] = prediction_data["has_churned"] / 
                            (1 - prediction_data["has_churned"])

Einführung in die Regression mit statsmodels in Python

Quoten visualisieren

sns.lineplot(x="time_since_last_purchase",
             y="odds",
             data=prediction_data)


plt.axhline(y=1, linestyle="dotted")
plt.show()

Liniendiagramm der Quoten vs. Zeit seit letztem Kauf, mit Linie bei Quote gleich 1. Bei geringer Zeit ist kein Churn wahrscheinlicher. Mit zunehmender Zeit steigen die Churn-Quoten bis zum Fünffachen der Nicht-Churn-Quote.

Einführung in die Regression mit statsmodels in Python

Log-Quoten visualisieren

sns.lineplot(x="time_since_last_purchase",
             y="odds",
             data=prediction_data)

plt.axhline(y=1,
            linestyle="dotted")
plt.yscale("log")

plt.show()

Liniendiagramm der Quoten vs. Zeit seit letztem Kauf, mit Linie bei Quote gleich 1. Die y-Achse ist logarithmisch; dadurch wird die Quotenkurve linear.

Einführung in die Regression mit statsmodels in Python

Log-Quoten berechnen

prediction_data["log_odds"] = np.log(prediction_data["odds"])
Einführung in die Regression mit statsmodels in Python

Alle Vorhersagen zusammen

time_since_last_prchs has_churned most_likely_rspns odds log_odds
0 0.491 0 0.966 -0.035
2 0.623 1 1.654 0.503
4 0.739 1 2.834 1.042
6 0.829 1 4.856 1.580
... ... ... ... ...
Einführung in die Regression mit statsmodels in Python

Skalen vergleichen

Skala Sind Werte leicht zu interpretieren? Sind Änderungen leicht zu interpretieren? Ist präzise?
Wahrscheinlichkeit
Wahrscheinlichstes Ergebnis ✔✔
Quoten
Log-Quoten
Einführung in die Regression mit statsmodels in Python

Lass uns üben!

Einführung in die Regression mit statsmodels in Python

Preparing Video For Download...