모형 선택
과대적합
- 과대적합(overfitting)은 모형이 훈련 데이터의 우연한 변동이나 잡음까지 학습하여 새로운 데이터에서 예측 성능이 낮아지는 문제
- 최소제곱법은 훈련 데이터의 잔차제곱합(RSS)을 최소화하는 회귀계수를 추정
- 훈련 데이터에 잘 맞는다는 사실만으로 새 데이터에서도 잘 예측한다고 판단할 수 없음
- 변수가 많아질수록 표본의 우연한 관계까지 모형에 포함될 위험이 커짐
독립변수의 개수와 훈련 성능
- 같은 관측값과 종속변수를 사용하고 절편을 포함한 중첩 모형에서는 독립변수를 추가해도 RSS가 증가하지 않음
- 따라서 훈련 데이터의 R2도 감소하지 않음
- 그러나 자유도를 보정한 잔차분산 추정치는 반드시 감소하지 않음
- n: 관측값 개수
- p: 절편을 포함하여 추정한 회귀계수 개수
- 변수를 추가하면 RSS는 감소하지만 잔차 자유도 n−p도 감소하므로 MSEresid는 증가 가능
- 모형 비교에 훈련 R2만 사용하면 변수가 많은 모형을 선호하게 됨
파이썬 실습: 관련 없는 변수 추가
노트북에서는 서로 독립인 난수로 독립변수 후보 x1부터 x9와 종속변수 y를 생성함. 재실행할 때 같은 결과를 얻도록 난수 시드를 추가.
import numpy as np
import pandas as pd
from statsmodels.formula.api import ols
np.random.seed(0)
rd = pd.DataFrame(dict(
x1=np.random.uniform(size=10),
x2=np.random.uniform(size=10),
x3=np.random.uniform(size=10),
x4=np.random.uniform(size=10),
x5=np.random.uniform(size=10),
x6=np.random.uniform(size=10),
x7=np.random.uniform(size=10),
x8=np.random.uniform(size=10),
x9=np.random.uniform(size=10),
y=np.random.uniform(size=10),
))
먼저 x1만 포함한 모형을 적합.
model1 = ols("y ~ x1", data=rd).fit()
model1.summary()
x2를 추가한 모형을 적합.
model2 = ols("y ~ x1 + x2", data=rd).fit()
model2.summary()
두 모형의 적합도와 모형 선택 지표를 비교.
pd.DataFrame({
"R2": [model1.rsquared, model2.rsquared],
"adjusted_R2": [model1.rsquared_adj, model2.rsquared_adj],
"AIC": [model1.aic, model2.aic],
"BIC": [model1.bic, model2.bic],
"residual_MSE": [model1.mse_resid, model2.mse_resid],
}, index=["x1", "x1 + x2"])
| 모형 | R2 | 수정 R2 | AIC | BIC | 잔차 MSE |
|---|---|---|---|---|---|
y ~ x1 |
0.061 | -0.056 | 6.766 | 7.371 | 0.0965 |
y ~ x1 + x2 |
0.068 | -0.199 | 8.696 | 9.604 | 0.1095 |
x2를 추가하면 훈련 R2는0.061에서0.068로 증가- 수정 R2는 감소하고 AIC와 BIC는 증가하므로 단순한
y ~ x1모형을 선호 x2의 p-value는0.831로, 회귀계수가 0이라는 귀무가설을 기각할 근거가 부족- 잔차 MSE도
0.0965에서0.1095로 증가하므로 독립변수 추가가 잔차분산 추정치를 반드시 낮추지는 않음
모형 선택 지표
- 수정 R2: 독립변수 개수와 표본 크기를 반영하여 R2를 보정한 값으로, 클수록 선호
- AIC와 BIC: 로그우도에 모형 복잡도 벌점을 더한 정보 기준으로, 작을수록 선호
- BIC는 AIC보다 모형 복잡도에 더 큰 벌점을 부여하는 경향이 있음
- AIC와 BIC는 같은 종속변수와 관측값을 사용하고 같은 우도 가정을 적용한 후보 모형끼리 비교
- 모형 선택 지표가 좋더라도 새 데이터에서의 예측 성능이 자동으로 보장되지는 않음
단계적 회귀분석
- 독립변수 후보가 k개이면 절편만 있는 모형을 포함한 변수 조합은 2k개
- 독립변수가 하나 이상인 조합만 세면 2k−1개
- 후보가 많으면 모든 조합을 적합하고 비교하기 어려움
- 단계적 회귀분석(stepwise regression)은 변수를 하나씩 추가하거나 제거하며 후보 모형을 탐색하는 방법
- p-value, AIC, BIC, 교차검증 오차 등 사전에 정한 기준 사용
- 자료에 따라 선택 결과가 달라질 수 있으므로 탐색적으로 사용하고 이론과 새 데이터로 재검토
전진 선택
- 전진 선택(forward selection)은 절편만 있는 모형에서 시작하여 독립변수를 하나씩 추가
- 현재 모형에 추가 가능한 각 변수를 평가하고 선택 기준을 가장 많이 개선하는 변수를 추가
- 어떤 변수를 추가해도 사전에 정한 기준이 충분히 개선되지 않으면 중단
예를 들어 첫 단계에서 A를 선택했다면 다음 단계에서는 A+B, A+C, A+D를 비교. A보다 선택 기준이 개선되는 조합이 없으면 중단.
후진 선택
- 후진 선택(backward selection)은 모든 후보 변수를 포함한 모형에서 시작하여 독립변수를 하나씩 제거
- 각 변수를 제거한 모형을 평가하고 선택 기준의 손실이 가장 작거나 기준을 개선하는 변수를 제거
- 어떤 변수를 제거해도 사전에 정한 기준을 충족하지 못하면 중단
단계적 회귀분석에서 주의할 점
- 선택 경로에 포함되지 않은 변수 조합은 검토하지 못할 수 있음
- 전진 선택과 후진 선택은 시작점과 탐색 경로가 달라 결과가 일치하지 않을 수 있음
- 표본이 달라지거나 독립변수 사이의 상관관계가 높으면 선택 결과가 불안정할 수 있음
- 변수 선택에 사용한 데이터로 계산한 일반적인 p-value와 신뢰구간은 지나치게 낙관적일 수 있음
위계적 회귀분석
- 위계적 회귀분석(hierarchical regression)은 이론이나 연구 가설에 따라 변수 묶음의 투입 순서를 미리 정하는 방법
- 통제변수를 먼저 투입한 뒤 관심 변수 묶음을 추가하여 설명력 증가량을 평가
- 중첩 모형의 수정 R2, ΔR2, F 변화량 등을 비교
- 자료가 자동으로 변수를 선택하는 단계적 회귀분석과 구분
퀴즈
과대적합에 대한 설명으로 가장 적절한 것은?
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.