ทำไมต้องใช้ Logistic Regression

การถดถอยใน R เบื้องต้น

Richie Cotton

Data Evangelist at DataCamp

ชุดข้อมูล Bank Churn

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
... ... ...
response length of relationship recency of activity
1 https://www.rdocumentation.org/packages/bayesQR/topics/Churn
การถดถอยใน R เบื้องต้น

Churn กับ Recency: Linear Model

mdl_churn_vs_recency_lm <- lm(has_churned ~ time_since_last_purchase, data = churn)
Call:
lm(formula = has_churned ~ time_since_last_purchase, data = churn)

Coefficients:
             (Intercept)  time_since_last_purchase  
                 0.49078                   0.06378 
coeffs <- coefficients(mdl_churn_vs_recency_lm)
intercept <- coeffs[1]
slope <- coeffs[2]
การถดถอยใน R เบื้องต้น

แสดงภาพ Linear Model

ggplot(
  churn, 
  aes(time_since_last_purchase, has_churned)
) +
  geom_point() +
  geom_abline(intercept = intercept, slope = slope)

ค่าพยากรณ์ คือความน่าจะเป็นของการ Churn ไม่ใช่ปริมาณการ Churn

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

การถดถอยใน R เบื้องต้น

ขยายมุมมองออก

ggplot(
  churn, 
  aes(days_since_last_purchase, has_churned)
) +
  geom_point() +
  geom_abline(intercept = intercept, slope = slope) +
  xlim(-10, 10) +
  ylim(-0.2, 1.2)

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

การถดถอยใน R เบื้องต้น

Logistic Regression คืออะไร?

  • เป็น Generalized Linear Model อีกประเภทหนึ่ง
  • ใช้เมื่อตัวแปรตอบสนองเป็นค่าเชิงตรรกะ
  • ค่าตอบสนองเป็นไปตามเส้นโค้ง Logistic (รูปตัว S)
การถดถอยใน R เบื้องต้น

Linear Regression ด้วย glm()

glm(has_churned ~ time_since_last_purchase, data = churn, family = gaussian)
Call:  glm(formula = has_churned ~ time_since_last_purchase, family = gaussian, 
    data = churn)

Coefficients:
             (Intercept)  time_since_last_purchase  
                 0.49078                   0.06378  

Degrees of Freedom: 399 Total (i.e. Null);  398 Residual
Null Deviance:        100 
Residual Deviance: 98.02     AIC: 578.7
การถดถอยใน R เบื้องต้น

Logistic Regression: glm() กับ Binomial Family

mdl_recency_glm <- glm(has_churned ~ time_since_last_purchase, data = churn, family = binomial)
Call:  glm(formula = has_churned ~ time_since_last_purchase, family = binomial, 
    data = churn)

Coefficients:
             (Intercept)  time_since_last_purchase  
                -0.03502                   0.26921  

Degrees of Freedom: 399 Total (i.e. Null);  398 Residual
Null Deviance:        554.5 
Residual Deviance: 546.4     AIC: 550.4
การถดถอยใน R เบื้องต้น

แสดงภาพ Logistic Model

ggplot(
  churn, 
  aes(time_since_last_purchase, has_churned)
) +
  geom_point() +
  geom_abline(
    intercept = intercept, slope = slope
  ) +
  geom_smooth(
    method = "glm", 
    se = FALSE, 
    method.args = list(family = binomial)
  )

กราฟกระจายแสดงการ Churn ของลูกค้าเทียบกับเวลาตั้งแต่การซื้อครั้งล่าสุด แสดงเส้นแนวโน้มทั้งแบบ Linear และ Logistic ซึ่งทั้งคู่ชี้ว่าความน่าจะเป็นของการ Churn เพิ่มขึ้นตามเวลา เส้นทั้งสองใกล้เคียงกันยกเว้นที่ค่า time since last purchase สูง

การถดถอยใน R เบื้องต้น

ขยายมุมมองออก

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

การถดถอยใน R เบื้องต้น

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

การถดถอยใน R เบื้องต้น

Preparing Video For Download...