Dự đoán và tỉ lệ cược

Giới thiệu về Hồi quy với statsmodels trong Python

Maarten Van den Broeck

Content Developer at DataCamp

Dự đoán của regplot()

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

plt.show()

Biểu đồ phân tán tỷ lệ rời bỏ theo thời gian từ lần mua gần nhất, kèm đường xu hướng logistic.

Giới thiệu về Hồi quy với statsmodels trong Python

Tạo dự đoán

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))
Giới thiệu về Hồi quy với statsmodels trong Python

Thêm dự đoán điểm

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

Biểu đồ phân tán tỷ lệ rời bỏ theo thời gian từ lần mua gần nhất, kèm đường xu hướng logistic. Biểu đồ được chú thích với kết quả từ predict(), khớp chính xác với đường xu hướng.

Giới thiệu về Hồi quy với statsmodels trong Python

Lấy kết quả dễ xảy ra nhất

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

prediction_data["most_likely_outcome"] = np.round(prediction_data["has_churned"])
Giới thiệu về Hồi quy với statsmodels trong Python

Trực quan hóa kết quả dễ xảy ra nhất

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

Biểu đồ phân tán tỷ lệ rời bỏ theo thời gian từ lần mua gần nhất, kèm đường xu hướng logistic. Biểu đồ được chú thích với kết quả khả năng xảy ra cao nhất: thời gian thấp thì khả năng không rời bỏ cao nhất; thời gian cao thì khả năng rời bỏ cao nhất.

Giới thiệu về Hồi quy với statsmodels trong Python

Tỉ lệ cược (odds)

Tỉ lệ cược (odds) là xác suất xảy ra chia cho xác suất không xảy ra.

$$ \text{odds} = \frac{\text{xác suất}}{(1 - \text{xác suất)}} $$

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

Biểu đồ đường tỉ lệ cược theo xác suất. Đường tăng tiệm cận vô cực khi xác suất tiến tới 1.

Giới thiệu về Hồi quy với statsmodels trong Python

Tính tỉ lệ cược

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

Giới thiệu về Hồi quy với statsmodels trong Python

Trực quan hóa tỉ lệ cược

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


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

Biểu đồ đường tỉ lệ cược theo thời gian từ lần mua gần nhất, có đường ngang tại odds = 1. Khi thời gian thấp, khả năng cao nhất là không rời bỏ. Tỉ lệ cược rời bỏ tăng theo thời gian, tối đa gấp năm lần tỉ lệ không rời bỏ.

Giới thiệu về Hồi quy với statsmodels trong Python

Trực quan hóa 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()

Biểu đồ đường tỉ lệ cược theo thời gian từ lần mua gần nhất, có đường ngang tại odds = 1. Trục y dùng thang log, làm đường odds trở nên tuyến tính.

Giới thiệu về Hồi quy với statsmodels trong Python

Tính log-odds

prediction_data["log_odds"] = np.log(prediction_data["odds"])
Giới thiệu về Hồi quy với statsmodels trong Python

Tổng hợp mọi dự đoán

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
... ... ... ... ...
Giới thiệu về Hồi quy với statsmodels trong Python

So sánh các thang đo

Thang đo Dễ diễn giải giá trị? Dễ diễn giải thay đổi? Chính xác?
Xác suất
Kết quả dễ xảy ra nhất ✔✔
Tỉ lệ cược
Log-odds
Giới thiệu về Hồi quy với statsmodels trong Python

Hãy thực hành!

Giới thiệu về Hồi quy với statsmodels trong Python

Preparing Video For Download...