예측과 오즈비

R로 시작하는 회귀 분석

Richie Cotton

Data Evangelist at DataCamp

ggplot 예측

plt_churn_vs_recency_base <- ggplot(
  churn, 
  aes(time_since_last_purchase, has_churned)
) +
  geom_point() +
  geom_smooth(
    method = "glm", 
    se = FALSE, 
    method.args = list(family = binomial)
  )

최근 구매 후 경과 시간 대비 이탈의 산점도와 로지스틱 추세선.

R로 시작하는 회귀 분석

예측 만들기

mdl_recency <- glm(
  has_churned ~ time_since_last_purchase, data = churn, family = "binomial"
)
explanatory_data <- tibble(
  time_since_last_purchase = seq(-1, 6, 0.25)
)
prediction_data <- explanatory_data %>% 
  mutate(
    has_churned = predict(mdl_recency, explanatory_data, type = "response")
  )
R로 시작하는 회귀 분석

포인트 예측 추가

plt_churn_vs_recency_base +
  geom_point(
    data = prediction_data, 
    color = "blue"
  )

최근 구매 후 경과 시간 대비 이탈의 산점도와 로지스틱 추세선. predict() 결과가 추세선을 정확히 따르도록 표시됨.

R로 시작하는 회귀 분석

최빈 결과 구하기

prediction_data <- explanatory_data %>% 
  mutate(
    has_churned = predict(mdl_recency, explanatory_data, type = "response"),
    most_likely_outcome = round(has_churned)
  )
R로 시작하는 회귀 분석

최빈 결과 시각화

plt_churn_vs_recency_base +
  geom_point(
    aes(y = most_likely_outcome),
    data = prediction_data,
    color = "green"
  )

최근 구매 후 경과 시간 대비 이탈의 산점도와 로지스틱 추세선. 최빈 결과가 주석으로 표시됨. 경과 시간이 짧을수록 최빈 결과는 이탈 아님, 길수록 이탈임.

R로 시작하는 회귀 분석

오즈비

오즈비는 사건이 일어날 확률을 일어나지 않을 확률로 나눈 값입니다.

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

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

확률에 따른 오즈비 선 그래프. 확률이 1에 가까워질수록 곡선은 무한대로 점근적으로 증가함.

R로 시작하는 회귀 분석

오즈비 계산하기

prediction_data <- explanatory_data %>%
  mutate(
    has_churned = predict(mdl_recency, explanatory_data, type = "response"),
    most_likely_response = round(has_churned),
    odds_ratio = has_churned / (1 - has_churned)
  )
R로 시작하는 회귀 분석

오즈비 시각화

ggplot(
  prediction_data, 
  aes(time_since_last_purchase, odds_ratio)
) +
  geom_line() +
  geom_hline(yintercept = 1, linetype = "dotted")

최근 구매 후 경과 시간에 따른 오즈비 선 그래프, 오즈비=1 기준선 포함. 경과 시간이 짧을 때 최빈 결과는 이탈 아님. 시간이 늘수록 이탈 오즈가 증가하여 이탈 아님 대비 최대 5배까지 상승.

R로 시작하는 회귀 분석

로그 오즈비 시각화

ggplot(
  prediction_data, 
  aes(time_since_last_purchase, odds_ratio)
) +
  geom_line() +
  geom_hline(yintercept = 1, linetype = "dotted") +
  scale_y_log10()

최근 구매 후 경과 시간에 따른 오즈비 선 그래프와 오즈비=1 기준선. y축은 로그 스케일로, 곡선이 직선 형태로 보임.

R로 시작하는 회귀 분석

로그 오즈비 계산하기

prediction_data <- explanatory_data %>%
  mutate(
    has_churned = predict(mdl_recency, explanatory_data, type = "response"),
    most_likely_response = round(has_churned),
    odds_ratio = has_churned / (1 - has_churned),
    log_odds_ratio = log(odds_ratio),
    log_odds_ratio2 = predict(mdl_recency, explanatory_data)
  )
R로 시작하는 회귀 분석

모든 예측 한눈에

tm_snc_lst_prch has_churned most_lkly_rspns odds_ratio log_odds_ratio log_odds_ratio2
0 0.491 0 0.966 -0.035 -0.035
2 0.623 1 1.654 0.503 0.503
4 0.739 1 2.834 1.042 1.042
6 0.829 1 4.856 1.580 1.580
... ... ... ... ... ...
R로 시작하는 회귀 분석

척도 비교

Scale 해석이 쉬움 변화 해석이 쉬움 정밀함
Probability
Most likely outcome ✔✔
Odds ratio
Log odds ratio
R로 시작하는 회귀 분석

연습해 봅시다!

R로 시작하는 회귀 분석

Preparing Video For Download...