Skip to main content

모형 선택

과대적합 overfitting

  • 최소제곱법은 잔차분산이 가장 작은 계수를 추정
  • 주어진 표본에 가장 맞는 계수를 찾게 됨
  • 표집 오차가 존재하기 때문에, 주어진 표본에 지나치게 맞는 계수를 추정하면 모집단의 계수와 다를 수 있음
  • (교재 그림) 초록색 선이 실제 데이터 패턴
    • 빨간 선은 사용한 모형으로 추정한 패턴
    • 0차, 1차 함수는 과소적합(underfitting)
    • 9차 함수는 과대적합(overfitting)
    • 잔차 = 0이지만(모든 선이 점을 지남) 실제 데이터 패턴과는 거리가 멂

독립변수의 개수와 과적합

  • 최소제곱법은 잔차분산이 작아지는 방향으로 계수를 추정
  • 종속변수와 아무 관련이 없는 독립변수를 추가하더라도 잔차분산이 커지는 경우는 없음
  • 모집단에서는 아무 관련이 없어도 표본에서는 약간의 관계라도 있을 수 있으므로 잔차분산은 작아지게 됨
  • 독립변수가 많으면 많을 수록 잔차분산은 무조건 작아짐(R제곱은 높아짐)

무작위 데이터의 과적합 예시

import numpy as np
np.random.seed(0)
random_data = pd.DataFrame({
'x1': np.random.randn(5), # 모든 변수를 무작위로 생성
'x2': np.random.randn(5),
'x3': np.random.randn(5),
'x4': np.random.randn(5),
'y': np.random.randn(5)
})
# 회귀분석을 하면 R제곱이 100%
ols('y ~ x1 + x2 + x3 + x4', data=random_data).fit().summary()

수정 R제곱과 AIC, BIC

  • 여러 모형을 비교할 때 R제곱을 사용하면 독립변수가 많은 모형에 편향
  • 독립변수의 개수를 이론적으로 보정한 수정 R제곱, AIC, BIC 등의 지수가 있음
  • 수정 R제곱: R제곱을 보정 → 클 수록 좋음
  • AIC와 BIC: 잔차분산을 보정 → 작을 수록 좋음
    • 예측이 주 목적이라면 AIC를 선호
    • 모델의 간결성이나 변수들 간의 인과적 관계 설명에 더 중점을 둔다면 BIC를 선호BIC는 변수 개수에 더 큰 패널티 → 더 적은 수의 변수를 가진 모델을 선택할 가능성이 높음

표준오차에 영향을 미치는 요소

  • 예측 오차의 크기: 예측 오차가 클 수록 표준 오차도 커짐
  • 표본의 크기: 표본이 클수록(시행이 많을 수록) 표준 오차는 작아짐
  • 요인의 분산: 요인의 분산이 클수록 표준 오차는 작아짐
  • 요인 간의 관계: 한 요인의 값을 다른 요인들로 예측할 수 있으면 표준 오차는 커짐

분산팽창인자(Variance Inflation Factor)

  • VIF: 해당 요인과 다른 요인 간의 관계에 의해서 표준 오차가 얼마나 증가하는지를 나타내는 지표
  • j번째 요인의 VIF는 다음과 같이 계산: 1 - 1/R_j^2
    • R_j: j번째 요인을 다른 모든 요인으로 분석했을 때의 결정계수(R 제곱)
import doeutils
doeutils.vif(FORMULA, DATA)

VIF 해석

  • VIF = 1: 해당 요인이 다른 요인과 완전히 독립적임. 표준 오차에 영향을 주지 않음
  • VIF > 1: 해당 요인이 다른 요인과 관련이 있음. 표준 오차가 증가함
  • VIF > 10: 해당 요인이 다른 요인과 강한 관계가 있음. 이러한 변수는 별도의 조치를 취함(예: 모형에서 제거, 변수 변환 등)

요인들 사이에 관련이 있는 경우

car = pd.read_excel('car.xlsx')
FORMULA = 'price ~ mileage + year' # 회귀모형의 수식
DATA = car
m1 = ols(FORMULA, DATA).fit() # 회귀모델 생성
m1.summary() # 회귀모델 요약 출력
  • year의 계수 추정치: 106
FORMULA = 'price ~ mileage + year'
m2 = ols(FORMULA, DATA).fit() # 회귀모델 생성
m2.summary() # 회귀모델 요약 출력
  • year의 계수 추정치: 84

퀴즈