로지스틱 회귀의 계수는 확률이 아니라 로그 오즈를 움직입니다. 계수에 지수를 씌워야 비로소 "오즈가 몇 배가 되는가"로 읽을 수 있습니다.
풀고 시작
문제 1. 이탈 여부를 예측하는 로지스틱 회귀에서 상담 횟수의 계수가 0.69로 나왔습니다. 가장 알맞은 해석은 무엇입니까?
로지스틱 회귀의 계수는 x가 1 늘 때 로그 오즈가 늘어나는 양입니다. 지수를 씌우면 오즈의 배수가 되는데, e의 0.69제곱은 약 2이므로 오즈가 약 2배가 됩니다. 확률 자체가 늘어나는 양은 원래 확률 수준에 따라 달라집니다.
로지스틱 회귀: 확률을 직선으로 다루는 요령
목표변수가 이탈한다와 안 한다처럼 둘 가운데 하나일 때, 8강의 선형회귀를 그대로 쓰면 곤란합니다. 예측값이 0보다 작거나 1보다 커져 확률로 읽을 수 없기 때문이죠. 로지스틱 회귀는 확률을 한 번 바꿔서 이 문제를 풉니다.
사건이 일어날 확률을 p라 할 때 일어나지 않을 확률에 대한 비율 p/(1−p)을 오즈(odds)라고 합니다. 확률이 0.8이면 오즈는 0.8 나누기 0.2로 4이고, 확률이 0.5면 오즈는 1입니다. 오즈에 로그를 씌운 로그 오즈(logit)는 음의 무한대부터 무한대까지 어떤 값이든 가질 수 있으므로, 이것을 독립변수의 직선식으로 둡니다. 거꾸로 풀면 예측 확률은 S자 모양의 시그모이드 함수를 따라 늘 0과 1 사이에 머뭅니다.
계수는 선형회귀처럼 최소제곱법이 아니라 최대우도법(maximum likelihood)으로 추정합니다. 관측된 결과가 나올 가능성이 가장 커지는 계수를 고르는 방법입니다. 계수 β는 x가 1 늘 때 로그 오즈가 β만큼 는다는 뜻이고, e의 β제곱을 구하면 오즈가 몇 배가 되는지로 읽힙니다. 계수가 0이면 오즈가 1배, 곧 영향이 없고, 음수면 오즈가 줄어듭니다.
fit <- glm(churn ~ calls + tenure, data = df, family = binomial)
summary(fit) # 계수와 p값
exp(coef(fit)) # 오즈비
p <- predict(fit, newdata = new, type = "response") # 예측 확률
ifelse(p >= 0.5, "이탈", "유지") # 임계값으로 분류
glm에 family = binomial을 주는 것이 로지스틱 회귀입니다. predict에 type = "response"를 주면 로그 오즈가 아니라 확률을 돌려주고, 이 확률을 임계값(흔히 0.5)과 비교해 분류합니다. 임계값을 어디에 둘지는 14강에서 다시 봅니다.
의사결정나무: 질문을 이어 붙인 규칙
의사결정나무(decision tree)는 "가입 기간이 1년 미만인가?", "월 요금이 5만 원 이상인가?" 같은 질문으로 자료를 거듭 나눠 규칙을 만듭니다. 맨 위의 뿌리 마디에서 출발해 중간 마디를 거쳐 더 나누지 않는 끝 마디에 이르며, 끝 마디마다 예측값이 붙습니다. 뿌리에서 끝 마디까지의 단계 수가 깊이입니다.
어떤 질문으로 나눌지는 나눈 뒤의 마디가 얼마나 순수해지는지로 정합니다. 목표변수가 범주라면 지니 지수나 엔트로피가 작아지는 쪽, 또는 카이제곱 통계량의 p값이 작아지는 쪽으로 나눕니다. 지니 지수는 1에서 각 범주 비율의 제곱합을 뺀 값이라, 한 범주만 있으면 0이고 두 범주가 반반이면 0.5로 가장 큽니다. 목표변수가 숫자라면 분산이 줄어드는 쪽으로 나눕니다.
알고리즘
분리 기준
가지 수
CART
지니 지수(범주), 분산 감소(숫자)
늘 두 갈래
C4.5
엔트로피에 기반한 정보이득비
여러 갈래 가능
CHAID
카이제곱 통계량, F통계량
여러 갈래 가능
나무를 끝까지 키우면 끝 마디마다 관측치가 한두 개만 남아 훈련 데이터를 외우는 과대적합에 빠집니다. 그래서 마디 크기나 깊이로 성장을 멈추는 정지 규칙을 두고, 다 키운 뒤 검증 성능을 떨어뜨리는 가지를 잘라 내는 가지치기(pruning)를 합니다.
의사결정나무는 규칙으로 읽혀 설명하기 쉽고, 중요한 변수를 스스로 고르며, 변수의 단위를 맞출 필요가 없고, 이상값에도 덜 흔들립니다. 반면 데이터가 조금만 바뀌어도 나무 모양이 크게 달라지는 불안정성이 있고, 경계가 축에 평행한 계단 모양이라 매끄러운 직선 관계를 표현하기 어렵습니다. 이 불안정성을 여러 나무로 달래는 방법이 13강의 앙상블입니다. R에서는 rpart 패키지가 CART를 구현합니다.
인출 문제
문제 1. 확률 p가 0.8일 때 오즈는 얼마입니까?
오즈는 일어날 확률을 일어나지 않을 확률로 나눈 값이라 0.8을 0.2로 나눠 4입니다. 0.25는 반대 사건의 오즈입니다.
문제 2. R에서 로지스틱 회귀를 적합하는 표현으로 알맞은 것은?
glm에 family = binomial을 주면 이항 목표변수에 대한 로지스틱 회귀가 됩니다. lm은 선형회귀입니다.
문제 3. 두 범주가 반반씩 섞인 마디의 지니 지수는 얼마입니까?
지니 지수는 1에서 각 범주 비율의 제곱합을 뺀 값이라 1에서 0.25와 0.25를 뺀 0.5입니다. 두 범주일 때 가장 불순한 상태입니다.
문제 4. 의사결정나무의 단점으로 가장 알맞은 것은?
위쪽 분리가 바뀌면 그 아래 전체가 달라지므로 나무는 데이터 변화에 민감합니다. 해석이 쉽고 단위를 맞출 필요가 없는 것은 오히려 장점입니다.
더 풀기
출제기준의 세부항목을 따라 이 강의 범위에서 새로 낸 문제입니다. 모의고사도 여기에서 뽑습니다.
묶음 1
문제 1. 이진 목표변수에 선형회귀를 그대로 쓰기 어려운 이유로 가장 알맞은 것은?
직선은 양쪽으로 끝없이 뻗으므로 예측값이 0과 1 사이를 벗어납니다. 로지스틱 회귀는 로그 오즈를 직선으로 둬 확률이 늘 0과 1 사이에 머물게 합니다.
문제 2. 확률이 0.5일 때 오즈와 로그 오즈는 각각 얼마입니까?
0.5를 0.5로 나누면 오즈는 1이고, 1의 로그는 0입니다. 로그 오즈가 양수면 확률이 0.5보다 크고 음수면 작습니다.
문제 3. 로지스틱 회귀에서 로그 오즈를 확률로 되돌리는 함수의 모양은 무엇입니까?
시그모이드 함수는 어떤 값을 넣어도 0과 1 사이의 값을 내며, 가운데서 가파르고 양 끝에서 완만한 S자 모양입니다.
문제 4. 로지스틱 회귀의 계수를 추정하는 방법은 무엇입니까?
로지스틱 회귀는 관측된 결과가 나올 가능성, 곧 우도가 가장 커지는 계수를 고르는 최대우도법으로 추정합니다.