ทำไมถึงต้องใช้ logistic regression

การถดถอยเบื้องต้นด้วย statsmodels ใน Python

Maarten Van den Broeck

Content Developer at DataCamp

ชุดข้อมูลการเลิกใช้บริการของธนาคาร

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
... ... ...
ตัวแปรตอบสนอง ระยะเวลาความสัมพันธ์ ความถี่ล่าสุดของกิจกรรม
1 https://www.rdocumentation.org/packages/bayesQR/topics/Churn
การถดถอยเบื้องต้นด้วย statsmodels ใน Python

การเลิกใช้บริการกับความถี่ล่าสุด: โมเดลเชิงเส้น

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
การถดถอยเบื้องต้นด้วย statsmodels ใน Python

การแสดงภาพโมเดลเชิงเส้น

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

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

กราฟกระจายแสดงว่าลูกค้าเลิกใช้บริการหรือไม่ เทียบกับเวลานับจากการซื้อครั้งล่าสุด จุดข้อมูลอยู่ที่ y เท่ากับ 0 หรือ 1 เส้นแนวโน้มเชิงเส้นแสดงความน่าจะเป็นของการเลิกใช้บริการที่เพิ่มขึ้นตามเวลาที่ผ่านไปนับจากการซื้อครั้งล่าสุด

การถดถอยเบื้องต้นด้วย statsmodels ใน Python

ซูมออก

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

กราฟกระจายแสดงว่าลูกค้าเลิกใช้บริการหรือไม่ เทียบกับเวลานับจากการซื้อครั้งล่าสุด แกนถูกซูมออกกว่าเดิม แสดงให้เห็นว่าเส้นแนวโน้มลงต่ำกว่า y เท่ากับ 0 และสูงกว่า y เท่ากับ 1 ซึ่งไม่ควรเกิดขึ้น

การถดถอยเบื้องต้นด้วย statsmodels ใน Python

Logistic regression คืออะไร?

  • เป็น generalized linear model อีกประเภทหนึ่ง
  • ใช้เมื่อตัวแปรตอบสนองเป็นค่าตรรกะ
  • ค่าตอบสนองเป็นไปตามเส้นโค้ง logistic (รูปตัว S)
การถดถอยเบื้องต้นด้วย statsmodels ใน Python

Logistic regression ด้วย 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
การถดถอยเบื้องต้นด้วย statsmodels ใน Python

การแสดงภาพโมเดล logistic

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

กราฟกระจายแสดงว่าลูกค้าเลิกใช้บริการหรือไม่ เทียบกับเวลานับจากการซื้อครั้งล่าสุด แสดงเส้นแนวโน้มแบบเชิงเส้นและ logistic ทั้งคู่บ่งชี้ว่าความน่าจะเป็นของการเลิกใช้บริการเพิ่มขึ้นตามเวลา เส้นทั้งสองใกล้เคียงกันมาก ยกเว้นช่วงที่เวลาผ่านไปนานมาก

การถดถอยเบื้องต้นด้วย statsmodels ใน Python

ซูมออก

กราฟกระจายแสดงว่าลูกค้าเลิกใช้บริการหรือไม่ เทียบกับเวลานับจากการซื้อครั้งล่าสุด พร้อมเส้นแนวโน้มทั้งสอง แกนถูกซูมออกกว่าเดิม แสดงให้เห็นว่าเส้นแนวโน้ม logistic ไม่เคยเกินช่วง 0 ถึง 1

การถดถอยเบื้องต้นด้วย statsmodels ใน Python

มาฝึกกันเถอะ!

การถดถอยเบื้องต้นด้วย statsmodels ใน Python

Preparing Video For Download...