Python에서 회귀 모델의 aic를 계산하는 방법


AIC(Akaike Information Criterion)는 다양한 회귀 모델의 적합성을 비교하는 데 사용되는 측정항목입니다.

다음과 같이 계산됩니다.

AIC = 2K – 2ln (L)

금:

  • K: 모델 매개변수의 수입니다. K의 기본값은 2이므로 예측 변수가 하나만 있는 모델의 K 값은 2+1 = 3입니다.
  • ln (L) : 모델의 로그 우도입니다. 이는 데이터가 주어졌을 때 모델의 확률을 알려줍니다.

AIC는 데이터의 가장 큰 변화를 설명하는 모델을 찾는 동시에 과도한 수의 매개변수를 사용하는 모델에 페널티를 적용하도록 설계되었습니다.

여러 회귀 모델을 적용한 후에는 각 모델의 AIC 값을 비교할 수 있습니다. AIC가 가장 낮은 모델이 가장 적합합니다.

Python에서 다중 회귀 모델의 AIC를 계산하려면 주어진 모델에 대한 AIC 값을 알려주는 aic 라는 속성이 있는 statsmodels.regression.linear_model.OLS() 함수를 사용할 수 있습니다.

다음 예에서는 이 함수를 사용하여 Python의 다양한 회귀 모델에 대한 AIC를 계산하고 해석하는 방법을 보여줍니다.

예: Python에서 AIC 계산 및 해석

mtcars 데이터 세트의 변수를 사용하여 두 개의 서로 다른 다중 선형 회귀 모델을 맞추고 싶다고 가정해 보겠습니다.

먼저 다음 데이터 세트를 로드합니다.

 from sklearn. linear_model import LinearRegression
import statsmodels. api as sm
import pandas as pd

#define URL where dataset is located
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/mtcars.csv"

#read in data
data = pd. read_csv (url)

#view head of data
data. head ()

        model mpg cyl disp hp drat wt qsec vs am gear carb
0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
3 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
4 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2

각 모델에서 사용할 예측 변수는 다음과 같습니다.

  • 모델 1의 예측 변수: disp, hp, wt, qsec
  • 모델 2의 예측 변수: disp, qsec

다음 코드는 첫 번째 모델을 피팅하고 AIC를 계산하는 방법을 보여줍니다.

 #define response variable
y = data['mpg']

#define predictor variables
x = data[['disp', 'hp', 'wt', 'qsec']]

#add constant to predictor variables
x = sm. add_constant (x)

#fit regression model
model = sm. OLS (y,x). fit ()

#view AIC of model
print (model. aic )

157.06960941462438

이 모델의 AIC는 157.07 로 밝혀졌습니다.

다음으로 두 번째 모델을 피팅하고 AIC를 계산합니다.

 #define response variable
y = data['mpg']

#define predictor variables
x = data[['disp', 'qsec']]

#add constant to predictor variables
x = sm. add_constant (x)

#fit regression model
model = sm. OLS (y,x). fit ()

#view AIC of model
print (model. aic )

169.84184864154588

이 모델의 AIC는 169.84 로 나타났습니다.

첫 번째 모델의 AIC 값이 낮으므로 가장 적합한 모델입니다.

이 모델이 가장 좋은 것으로 식별되면 모델 피팅을 진행하고 R-제곱 값 및 베타 계수를 포함한 결과를 분석하여 예측 변수 세트와 응답 변수 간의 정확한 관계를 결정할 수 있습니다.

추가 리소스

Python의 선형 회귀에 대한 완전한 가이드
Python에서 조정된 R-제곱을 계산하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다