Prediktioner och odds

Introduktion till regression med statsmodels i Python

Maarten Van den Broeck

Content Developer at DataCamp

Prediktioner med regplot()

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

plt.show()

Ett spridningsdiagram över churn kontra tid sedan senaste köp, med en logistisk trendlinje.

Introduktion till regression med statsmodels i Python

Göra prediktioner

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))
Introduktion till regression med statsmodels i Python

Lägga till punktprediktioner

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

Spridningsdiagrammet över churn kontra tid sedan senaste köp, med en logistisk trendlinje. Diagrammet är annoterat med resultaten från predict(), som följer trendlinjen exakt.

Introduktion till regression med statsmodels i Python

Beräkna det mest sannolika utfallet

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

prediction_data["most_likely_outcome"] = np.round(prediction_data["has_churned"])
Introduktion till regression med statsmodels i Python

Visualisera det mest sannolika utfallet

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

Spridningsdiagrammet över churn kontra tid sedan senaste köp, med en logistisk trendlinje. Diagrammet är annoterat med de mest sannolika utfallen. Vid låg tid sedan senaste köp är det mest sannolika utfallet att kunden inte churnar. Vid hög tid sedan senaste köp är det mest sannolika utfallet att kunden churnar.

Introduktion till regression med statsmodels i Python

Odds

Odds är sannolikheten för att något inträffar dividerat med sannolikheten att det inte gör det.

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

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

Ett linjediagram över odds kontra sannolikhet. Kurvan ökar asymptotiskt mot oändligheten när sannolikheten närmar sig ett.

Introduktion till regression med statsmodels i Python

Beräkna odds

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

Introduktion till regression med statsmodels i Python

Visualisera odds

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


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

Ett linjediagram över odds kontra tid sedan senaste köp, med en linje vid odds lika med ett. Vid låg tid sedan senaste köp är det mest sannolika utfallet att kunden inte churnar. Oddsen för churn ökar med tiden sedan senaste köp, upp till fem gånger oddsen för att inte churna.

Introduktion till regression med statsmodels i Python

Visualisera log-odds

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

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

plt.show()

Linjediagrammet över odds kontra tid sedan senaste köp, med en linje vid odds lika med ett. Y-axeln använder logaritmisk skala, vilket har gjort att oddslinjen blivit linjär.

Introduktion till regression med statsmodels i Python

Beräkna log-odds

prediction_data["log_odds"] = np.log(prediction_data["odds"])
Introduktion till regression med statsmodels i Python

Alla prediktioner samlat

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
... ... ... ... ...
Introduktion till regression med statsmodels i Python

Jämföra skalor

Skala Lätta att tolka? Förändringar lätta att tolka? Precis?
Sannolikhet
Mest sannolikt utfall ✔✔
Odds
Log-odds
Introduktion till regression med statsmodels i Python

Nu kör vi en övning!

Introduktion till regression med statsmodels i Python

Preparing Video For Download...