왜 로지스틱 회귀가 필요할까요?

R로 시작하는 회귀 분석

Richie Cotton

Data Evangelist 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
... ... ...
response 관계 기간 최근 활동
1 https://www.rdocumentation.org/packages/bayesQR/topics/Churn
R로 시작하는 회귀 분석

이탈 vs. 최신성: 선형 모델

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로 시작하는 회귀 분석

선형 모델 시각화

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

예측값은 이탈의 양이 아니라 이탈 확률입니다.

마지막 구매 이후 경과 시간 대비 이탈 여부 산점도. 모든 점은 y=0 또는 y=1에 있으며, 선형 추세선은 시간이 길수록 이탈 확률이 증가함을 보여줍니다.

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)

마지막 구매 이후 경과 시간 대비 이탈 여부 산점도. 축 범위를 넓혀 보면, 추세선이 y=0 아래와 y=1 위로 뻗어 나가는데, 이는 불가능해야 합니다.

R로 시작하는 회귀 분석

로지스틱 회귀란?

  • 또 다른 형태의 일반화 선형 모델.
  • 반응 변수가 논리형일 때 사용.
  • 반응은 로지스틱(S자) 곡선을 따름.
R로 시작하는 회귀 분석

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로 시작하는 회귀 분석

로지스틱 회귀: binomial 패밀리로 glm()

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로 시작하는 회귀 분석

로지스틱 모델 시각화

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

마지막 구매 이후 경과 시간 대비 이탈 여부 산점도. 선형 및 로지스틱 추세선이 표시되며, 둘 다 시간이 길수록 이탈 확률이 증가함을 보여줍니다. 두 추세선은 대부분 비슷하나, 경과 시간이 매우 길면 차이가 납니다.

R로 시작하는 회귀 분석

확대 축소해서 보기

마지막 구매 이후 경과 시간 대비 이탈 여부 산점도와 두 추세선. 축 범위를 넓혀 보면, 로지스틱 추세선은 이탈 확률 0~1 범위를 벗어나지 않음을 확인할 수 있습니다.

R로 시작하는 회귀 분석

Ayo berlatih!

R로 시작하는 회귀 분석

Preparing Video For Download...