7강 - 로지스틱 회귀분석 (Logistic Regression)
범주형 결과를 확률로 예측하는 회귀
목차
- 로지스틱 회귀란?
- 왜 선형회귀를 쓰면 안 되나?
- 시그모이드 함수 (Sigmoid)
- 오즈(Odds)와 로짓(Logit)
- 오즈 (Odds)
- 로짓 (Logit) = log(오즈)
- 로지스틱 회귀의 다른 표현
- 회귀계수 해석 — 오즈비 (Odds Ratio)
- 핵심 개념
- 계산 예시
- 오즈비를 확률로 착각하지 말 것
- 최대우도 추정 (Maximum Likelihood Estimation, MLE)
- 왜 최소제곱법(OLS)이 아닌가?
- 직관 — 동전 던지기
- 확률(Probability)과 우도(Likelihood)의 차이
- 로지스틱 회귀에서의 MLE
- 로그우도 (Log-Likelihood)
- 모형 평가
- 모형 전체 유의성 — 우도비 검정 (Likelihood Ratio Test)
- 개별 계수 유의성 — Wald 검정
- Pseudo R² (의사 결정계수)
- 분류 성능 지표
- 모형 가정
- 다중 로지스틱 회귀
- 다항·서수형 로지스틱 회귀
- 종속변수가 0/1이 아닐 때 — 비율 데이터
- logit 선형회귀 vs 이항 로지스틱
- 선형회귀 vs 로지스틱 회귀
- 실습 자료
로지스틱 회귀란?
종속변인이 **범주형(특히 이분형, 0/1)**일 때 사용하는 회귀분석이다. “X가 변하면 사건이 발생할 확률이 어떻게 변하는가?”를 묻는다. 결과는 0~1 사이의 확률로 나오고, 임계값(보통 0.5)을 기준으로 분류한다.
스포츠 분석에서는 다음과 같은 이분형 결과에 자주 쓰인다.
| 종속변인 (Y) | 활용 예시 |
|---|---|
| 승리 여부 (1=승, 0=패) | 패스 성공률·슈팅·점유율이 승리 확률에 미치는 영향 |
| 골 여부 (1=골, 0=노골) | 슛 위치·각도·거리가 골 확률에 미치는 영향 (xG 모델) |
| 부상 여부 (1=부상, 0=정상) | 훈련량·연령이 부상 위험에 미치는 영향 |
| 선발 출전 여부 | 최근 폼·경기 수가 선발 확률에 미치는 영향 |
왜 선형회귀를 쓰면 안 되나?
예를 들어 “슈팅 거리”로 “골 여부(1/0)“를 예측한다고 하자. 선형회귀로 적합하면 다음과 같은 직선이 나온다.
여기서 문제가 생긴다.
- 거리 20m → (확률이 음수?!)
- 거리 -10m → (확률이 1 초과?!)
- 골/노골은 0/1만 있는데 모형은 를 출력
- 잔차가 정규분포가 아니어서 가정 위반
결국 어떤 실수 입력이든 0~1로 매핑해 주는 함수가 필요하다. 그것이 시그모이드 함수다.
시그모이드 함수 (Sigmoid)
시그모이드는 실수 전체를 0~1 구간으로 눌러 담는 S자 곡선이다.
여기서 는 선형 결합 이다.
곡선의 성질은 다음과 같다.
- (경계)
- 항상 0~1 사이 값이므로 확률로 해석 가능
따라서 로지스틱 회귀 모형은 선형 결합을 시그모이드에 넣어 확률로 변환한 것이다.
오즈(Odds)와 로짓(Logit)
로지스틱 회귀의 핵심 개념이다. 확률 → 오즈 → 로짓 변환을 이해해야 계수 해석이 가능하다.
오즈 (Odds)
오즈는 성공 확률과 실패 확률의 비율이다.
| 확률 | 오즈 | 의미 |
|---|---|---|
| 0.5 | 5:5 | |
| 0.75 | 3:1, 성공이 3배 더 일어남 | |
| 0.9 | 9:1 | |
| 0.25 | 1:3 |
로짓 (Logit) = log(오즈)
로짓은 오즈에 로그를 씌운 값이다.
| 확률 | 로짓 |
|---|---|
| 0.5 | |
| 0.75 | |
| 0.9 | |
| 0.25 |
로지스틱 회귀의 다른 표현
로짓을 쓰면 로지스틱 회귀를 선형 형태로 다시 쓸 수 있다.
즉 로지스틱 회귀는 로짓(log-odds)을 선형으로 모델링하는 것이다. 그래서 회귀계수가 로짓 단위로 나온다. 선형 결합 는 시그모이드를 거쳐 확률 가 되고, 이 로 만든 오즈에 로그를 씌우면 다시 로 돌아온다.
회귀계수 해석 — 오즈비 (Odds Ratio)
핵심 개념
회귀계수 는 로짓 단위이므로 직접 해석하기 어렵다. 대신 로 변환하면 **오즈비(Odds Ratio)**가 된다.
해석은 이렇다. ” 가 1단위 증가하면, 이 일어날 오즈가 배가 된다.”
| OR | 의미 |
|---|---|
| OR = 1 | X와 Y는 관련 없음 (오즈 변화 없음) |
| OR > 1 | X 증가 → 사건 발생 오즈 증가 |
| OR < 1 | X 증가 → 사건 발생 오즈 감소 |
| OR = 2 | X가 1단위 증가하면 오즈가 2배 |
| OR = 0.5 | X가 1단위 증가하면 오즈가 절반 |
계산 예시
경기당 슈팅 수가 승리 확률에 미치는 영향을 다음 모형으로 적합했다고 하자.
이므로 . 즉 “슈팅이 1회 늘면 승리 오즈가 1.35배(35% 증가)“이다. 실제로 확인해 보면,
- 슈팅 10 → → → 오즈
- 슈팅 11 → → → 오즈
오즈비 로 일치한다.
오즈비를 확률로 착각하지 말 것
오즈비는 오즈의 비율이지 확률의 비율이 아니다. “OR = 1.35니까 승리 확률이 35% 증가한다”는 틀린 해석이다. 확률 변화는 시작점에 따라 다르기 때문이다.
- 에서 슈팅 1↑: (7%p 증가)
- 에서 슈팅 1↑: (2%p 증가)
오즈비를 ”% 증감”으로 옮길 때는 다음 공식을 쓴다.
예를 들어 OR = 1.35는 오즈 35% 증가, OR = 0.80은 오즈 20% 감소를 뜻한다.
최대우도 추정 (Maximum Likelihood Estimation, MLE)
관측된 데이터가 가장 그럴듯하게 나올 확률이 되도록 하는 모수(parameter)를 찾는 방법이다.
왜 최소제곱법(OLS)이 아닌가?
선형회귀의 OLS는 잔차(실제값 − 예측값)의 제곱합을 최소화한다. 종속변인이 연속형일 때 잘 작동한다. 그런데 로지스틱 회귀는 실제값 가 0 또는 1이고 예측값은 0~1 사이 확률이다. “0.7 확률 예측”과 “1 실제값”의 차이를 제곱하는 것은 의미가 약하다. 그래서 다른 방법이 필요하다. “내가 본 0/1 패턴이 가장 잘 나오게 하는 를 찾자”는 것이 MLE다.
직관 — 동전 던지기
동전을 10번 던졌더니 앞면 7번, 뒷면 3번 나왔다. 이 동전의 앞면 확률 는 얼마일까? 여러 후보에 대해 “이 결과가 나올 확률(우도, Likelihood)“을 계산해 본다.
| 후보 | 우도 (Likelihood) |
|---|---|
| ← 가장 큼 | |
일 때 우도가 최대이므로 MLE 추정값은 0.7이다. 핵심 아이디어는 “내가 본 데이터가 가장 잘 설명되는 모수가 진짜 모수일 것”이라는 것이다.
확률(Probability)과 우도(Likelihood)의 차이
| 구분 | 무엇이 고정? | 무엇이 변함? |
|---|---|---|
| 확률 (Probability) | 모수 (예: ) | 데이터 (앞/뒷 결과) |
| 우도 (Likelihood) | 데이터 (앞7, 뒤3 관측됨) | 모수 (뭐였을지 추정) |
확률은 ” 인 동전을 10번 던지면 앞면 7번 나올 확률은?”을 묻고, 우도는 “앞면 7번 나왔다. 그럼 는 얼마였을까?”를 묻는다. MLE는 우도를 최대로 만드는 모수를 찾는 것이다.
로지스틱 회귀에서의 MLE
선수 5명의 결과가 (1=승리, 0=패배)이라고 하자. 후보 로 각 선수의 승리 확률 를 시그모이드로 계산한 뒤, 관측된 결과가 일어날 확률(우도)을 모두 곱한다.
즉 이면 를, 이면 를 곱한다. 이 을 가장 크게 만드는 이 MLE 추정값이다.
로그우도 (Log-Likelihood)
실제 계산에서는 우도 대신 로그우도 을 최대화한다. 확률을 여러 개 곱하면 매우 작은 수가 되어 컴퓨터가 underflow를 일으킬 수 있는데, 로그를 씌우면 곱셈이 덧셈으로 바뀌어 계산이 안정된다.
이것은 머신러닝에서 말하는 이진 교차 엔트로피(Binary Cross-Entropy) 손실함수와 동일하다. 우도 최대화는 최소화와 같다. 실제로는 Newton-Raphson, IRLS 같은 반복 알고리즘으로 푼다.
통계 패키지(R, Python statsmodels, SPSS)가 자동으로 MLE를 수행하므로 사용자는 결과만 해석하면 된다. **수렴(convergence)**이 잘 됐는지 확인하고, 출력되는 -2 Log Likelihood(deviance), AIC, BIC 로 모형을 비교한다(낮을수록 좋음).
모형 평가
선형회귀의 ·F검정 대신 다른 지표를 쓴다.
모형 전체 유의성 — 우도비 검정 (Likelihood Ratio Test)
가설은 다음과 같다.
- : 모든 회귀계수 = 0 (모형이 무의미)
- : 적어도 하나의 회귀계수 ≠ 0
검정통계량은 귀무모형과 연구모형의 deviance 차이로, 분포를 따른다.
이면 모형이 유의하다.
개별 계수 유의성 — Wald 검정
또는 통계량을 쓴다. 이면 해당 변수가 유의하다.
Pseudo R² (의사 결정계수)
선형회귀의 와 비슷한 개념이지만 계산 방식이 다르다.
| 종류 | 특징 |
|---|---|
| Cox & Snell R² | 흔히 보고. 최댓값이 1보다 작음 (한계) |
| Nagelkerke R² | Cox & Snell을 보정해 0~1 범위 |
| McFadden R² | 가장 보수적 (값이 작게 나옴) |
Nagelkerke 기준으로 .10 미만은 약함, .10~.30은 보통, .30 이상은 강함으로 본다. 선형회귀의 와 기준이 다르므로, 로지스틱은 Pseudo R²가 작아도 의미 있을 수 있다.
분류 성능 지표
혼동행렬(Confusion Matrix)은 예측과 실제를 교차한 표다.
| 실제 Y=1 | 실제 Y=0 | |
|---|---|---|
| 예측 Y=1 | TP (맞춤) | FP (잘못된 양성) |
| 예측 Y=0 | FN (놓침) | TN (맞춤) |
여기서 주요 지표를 계산한다.
| 지표 | 공식 | 의미 |
|---|---|---|
| 정확도 (Accuracy) | 전체 중 맞춘 비율 | |
| 정밀도 (Precision) | 예측 1 중 실제 1 비율 | |
| 재현율/민감도 (Recall) | 실제 1 중 예측 1 비율 | |
| 특이도 (Specificity) | 실제 0 중 예측 0 비율 | |
| F1 score | 정밀도·재현율 조화평균 |
ROC 곡선은 임계값을 0~1로 바꿔가며 (1-특이도, 민감도)를 그린 곡선이고, AUC는 그 아래 면적이다.
| AUC | 판별력 |
|---|---|
| 0.5 | 무작위 추측 수준 |
| 0.7 | 보통 |
| 0.8 | 좋음 |
| 0.9 | 매우 좋음 |
| 1.0 | 완벽 |
불균형 데이터(예: 이 5%, 이 95%)에서는 “전부 0”으로 예측해도 정확도가 95%가 나온다. 이럴 때 정확도는 성능을 잘못 보여주므로 AUC나 F1 score 같은 지표를 함께 봐야 한다.
모형 가정
로지스틱 회귀는 선형회귀보다 가정이 적다. 잔차의 정규성·등분산성 가정이 없다(잔차 자체가 이분형이라 의미가 없다). 대신 다음이 중요하다.
| 가정 | 의미 | 검정 |
|---|---|---|
| 종속변인이 이분형 | 0 또는 1 | 변수 확인 |
| 관측치 독립 | 한 경기 결과가 다른 경기에 영향 X | 연구 설계 |
| 로짓의 선형성 | 연속형 X와 로짓이 선형 | Box-Tidwell 검정 |
| 다중공선성 없음 | 독립변인 간 높은 상관 X | VIF |
특히 로짓의 선형성이 핵심으로, 연속형 와 가 선형이어야 한다. 위반 시 변수 변환(log, √, 제곱), 다항 항 추가(), 구간화로 대응한다.
표본 크기는 단순히 이 아니라 **드문 집단( 과 중 작은 쪽)**의 크기가 핵심이며, EPV(Events Per Variable) ≥ 10 을 권장한다. 예를 들어 전체 500명 중 부상 30명이면 드문 집단이 30명이므로 변수는 최대 3개 정도가 적절하다.
다중 로지스틱 회귀
독립변인이 2개 이상인 경우로, 다중회귀와 같은 방식으로 확장한다.
계수 해석은 “다른 변수가 일정할 때, 가 1단위 증가하면 이 일어날 오즈가 배가 된다”로, 다른 변수를 통제한 효과다.
다항·서수형 로지스틱 회귀
종속변인의 범주가 3개 이상일 때의 확장이다.
**다항 로지스틱(Multinomial)**은 순서 없는 3개 이상 범주(예: 승/무/패, 포지션 GK/DF/MF/FW)에 쓴다. 기준 범주(reference category)를 정하고 나머지 각 범주에 대해 이항 로지스틱을 각각 수행한다. 예를 들어 무승부를 기준으로 하면,
회귀계수는 항상 기준 범주 대비 해석한다(“슈팅 1회 증가 시, 무승부 대비 승리 오즈가 배”).
**서수형 로지스틱(Ordinal)**은 순서가 있는 범주(평점 척도, 선수 등급, 만족도)에 쓴다. 순서 정보를 활용하므로 회귀계수가 훨씬 적게 추정되어 효율적이며, 모든 임계값에서 오즈비가 동일하다는 비례 오즈 가정이 필요하다.
종속변수가 0/1이 아닐 때 — 비율 데이터
일반 이항 로지스틱 회귀는 종속변수가 0 또는 1(이분형)이어야 한다. 종속변수가 0~1 사이 연속적 비율(예: 패스 성공률 0.65)이면 다른 접근이 필요하다. 단, 독립변수가 비율인 것은 상관없다. 가 0/1이고 가 비율이면 이항 로지스틱을 그대로 쓸 수 있다.
종속변수 자체가 비율일 때의 선택지는 다음과 같다.
옵션 1: 횟수 데이터로 변환 (가장 권장). 비율 0.84를 성공/시도 형태(예: 420/500)로 바꿔 이항 로지스틱에 (성공 수, 시도 수)로 입력한다. R은 glm(cbind(성공, 실패) ~ X, family=binomial), Python은 statsmodels의 GLM(binomial)을 쓴다.
옵션 2: 베타 회귀. 비율만 있고 분모 정보가 없을 때 베타 분포를 가정한 회귀(R betareg, Python statsmodels)를 쓴다.
옵션 3: logit 변환 + 선형회귀. 비율에 로짓을 씌워 일반 선형회귀를 적합한다.
간단하지만 또는 이면 발산하므로 같은 조정이 필요하다.
logit 선형회귀 vs 이항 로지스틱
둘 다 같은 logit 함수를 쓰지만 데이터 생성 모델과 추정 방법이 다르다.
| 구분 | logit 변환 + 선형회귀 | 이항 로지스틱 회귀 |
|---|---|---|
| 입력 데이터 | 비율 (예: 0.84) | 성공/실패 횟수 (예: 420/500) |
| 추정 방법 | OLS (잔차 제곱 최소화) | MLE (최대우도) |
| 오차항 가정 | 정규분포 | 이항분포 |
| 표본 가중 | 모든 데이터 동일 가중 | 시도 횟수가 자동 가중치 |
| 0/1 처리 | 발산 → 조정 필요 | 자연스럽게 처리 |
| 계수 해석 | ”logit이 만큼 변화" | "오즈가 배 (OR)” |
핵심 차이는 표본 크기 반영이다. “500번 중 420번 성공(0.84)“과 “10번 중 8번 성공(0.80)“은 신뢰도가 다르다. logit 선형회귀는 둘을 비율로만 봐서 동등하게 취급하지만, 이항 로지스틱은 시도 횟수가 큰 데이터에 자동으로 더 큰 가중치를 준다. 또 이항 로지스틱은 데이터 생성 과정()을 직접 모델링하고, 0/1을 자연스럽게 처리하며, 오즈비와 95% 신뢰구간을 표준 형식으로 제공한다.
정리하면, 시도 횟수(분모)가 있으면 이항 로지스틱이 정석이고, 분모가 없으면 베타 회귀가 차선이다. logit 선형회귀는 빠른 탐색 분석에서만 쓰고 정식 보고에는 권장하지 않는다.
선형회귀 vs 로지스틱 회귀
| 구분 | 선형회귀 | 로지스틱 회귀 |
|---|---|---|
| 종속변인 | 연속형 | 이분형(또는 범주형) |
| 출력 | 0 ~ 1 (확률) | |
| 모형 함수 | 직선 | S자 곡선 (sigmoid) |
| 추정 방법 | OLS (최소제곱) | MLE (최대우도) |
| 회귀계수 단위 | Y와 같은 단위 | 로짓 단위 ( = OR) |
| 모형 검정 | F검정 | 우도비 검정 |
| 적합도 지표 | , Adjusted | Pseudo , AUC |
| 잔차 정규성 | 필요 | 불필요 |
| 표본 크기 기준 | 변수당 10명 | EPV ≥ 10 (드문 집단 기준) |