Předpovědi a poměr šancí

Úvod do regrese s knihovnou statsmodels v Pythonu

Maarten Van den Broeck

Content Developer at DataCamp

Předpovědi funkce regplot()

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

plt.show()

Bodový graf odchodu zákazníků vs. čas od posledního nákupu s logistickou trendovou čarou.

Úvod do regrese s knihovnou statsmodels v Pythonu

Tvorba předpovědí

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))
Úvod do regrese s knihovnou statsmodels v Pythonu

Přidání bodových předpovědí

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

Bodový graf odchodu zákazníků vs. čas od posledního nákupu s logistickou trendovou čarou. Graf je doplněn o výsledky funkce predict(), které přesně kopírují trendovou čáru.

Úvod do regrese s knihovnou statsmodels v Pythonu

Získání nejpravděpodobnějšího výsledku

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

prediction_data["most_likely_outcome"] = np.round(prediction_data["has_churned"])
Úvod do regrese s knihovnou statsmodels v Pythonu

Vizualizace nejpravděpodobnějšího výsledku

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

Bodový graf odchodu zákazníků vs. čas od posledního nákupu s logistickou trendovou čarou. Graf je doplněn o nejpravděpodobnější výsledky. Při krátkém čase od posledního nákupu je nejpravděpodobnějším výsledkem setrvání zákazníka. Při dlouhém čase je nejpravděpodobnějším výsledkem odchod.

Úvod do regrese s knihovnou statsmodels v Pythonu

Poměr šancí

Poměr šancí je pravděpodobnost, že nastane jev, dělená pravděpodobností, že nenastane.

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

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

Spojnicový graf poměru šancí vs. pravděpodobnost. Křivka roste asymptoticky k nekonečnu, jak se pravděpodobnost blíží jedné.

Úvod do regrese s knihovnou statsmodels v Pythonu

Výpočet poměru šancí

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

Úvod do regrese s knihovnou statsmodels v Pythonu

Vizualizace poměru šancí

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


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

Spojnicový graf poměru šancí vs. čas od posledního nákupu s vodorovnou čarou na hodnotě jedna. Při krátkém čase je nejpravděpodobnějším výsledkem setrvání zákazníka. Poměr šancí odchodu roste s časem od posledního nákupu až na pětinásobek.

Úvod do regrese s knihovnou statsmodels v Pythonu

Vizualizace log-poměru šancí

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

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

plt.show()

Spojnicový graf poměru šancí vs. čas od posledního nákupu s vodorovnou čarou na hodnotě jedna. Osa y používá logaritmické měřítko, díky čemuž je křivka poměru šancí lineární.

Úvod do regrese s knihovnou statsmodels v Pythonu

Výpočet log-poměru šancí

prediction_data["log_odds"] = np.log(prediction_data["odds"])
Úvod do regrese s knihovnou statsmodels v Pythonu

Všechny předpovědi pohromadě

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
... ... ... ... ...
Úvod do regrese s knihovnou statsmodels v Pythonu

Porovnání škál

Škála Jsou hodnoty snadno interpretovatelné? Jsou změny snadno interpretovatelné? Je přesná?
Pravděpodobnost
Nejpravděp. výsledek ✔✔
Poměr šancí
Log-poměr šancí
Úvod do regrese s knihovnou statsmodels v Pythonu

Lass uns üben!

Úvod do regrese s knihovnou statsmodels v Pythonu

Preparing Video For Download...