Python의 올가미 회귀(단계별)


올가미 회귀는 데이터에 다중 공선성이 존재할 때 회귀 모델을 맞추는 데 사용할 수 있는 방법입니다.

간단히 말해서, 최소 제곱 회귀는 잔차 제곱합(RSS)을 최소화하는 계수 추정값을 찾으려고 시도합니다.

RSS = Σ(y i – ŷ i )2

금:

  • Σ : 합계를 의미하는 그리스 기호
  • y i : i번째 관측값에 대한 실제 응답 값
  • ŷ i : 다중선형회귀모델을 기반으로 예측된 반응값

반대로 올가미 회귀는 다음을 최소화하려고 합니다.

RSS + λΣ|β j |

여기서 j는 1에서 p개의 예측 변수로 이동하고 λ ≥ 0입니다.

방정식의 두 번째 항은 인출 페널티 로 알려져 있습니다. 올가미 회귀에서는 가능한 가장 낮은 MSE(평균 제곱 오차) 테스트를 생성하는 λ 값을 선택합니다.

이 튜토리얼에서는 Python에서 올가미 회귀를 수행하는 방법에 대한 단계별 예를 제공합니다.

1단계: 필요한 패키지 가져오기

먼저 Python에서 올가미 회귀를 수행하는 데 필요한 패키지를 가져옵니다.

 import pandas as pd
from numpy import arange
from sklearn. linear_model import LassoCV
from sklearn. model_selection import RepeatedKFold

2단계: 데이터 로드

이 예에서는 33개의 서로 다른 자동차에 대한 정보가 포함된 mtcars 라는 데이터 세트를 사용합니다. hp를 반응 변수로 사용하고 다음 변수를 예측 변수로 사용합니다.

  • mpg
  • 무게
  • q초

다음 코드는 이 데이터 세트를 로드하고 표시하는 방법을 보여줍니다.

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

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

#select subset of data
data = data_full[["mpg", "wt", "drat", "qsec", "hp"]]

#view first six rows of data
data[0:6]

	mpg wt drat qsec hp
0 21.0 2.620 3.90 16.46 110
1 21.0 2.875 3.90 17.02 110
2 22.8 2.320 3.85 18.61 93
3 21.4 3.215 3.08 19.44 110
4 18.7 3,440 3.15 17.02 175
5 18.1 3.460 2.76 20.22 105

3단계: 올가미 회귀 모델 적합

다음으로 sklearn의 LassoCV() 함수를 사용하여 올가미 회귀 모델을 맞추고 RepeatedKFold() 함수를 사용하여 k-겹 교차 검증을 수행하여 페널티 항에 사용할 최적의 알파 값을 찾습니다.

참고: Python에서는 “lambda” 대신 “alpha”라는 용어가 사용됩니다.

이 예에서는 k = 10 접기를 선택하고 교차 검증 프로세스를 3번 반복합니다.

또한 LassoCV()는 기본적으로 알파 값 0,1, 1, 10만 테스트한다는 점에 유의하세요. 그러나 우리는 0.01 단위로 0에서 1까지 자체 알파 범위를 설정할 수 있습니다.

 #define predictor and response variables
X = data[["mpg", "wt", "drat", "qsec"]]
y = data["hp"]

#define cross-validation method to evaluate model
cv = RepeatedKFold(n_splits= 10 , n_repeats= 3 , random_state= 1 )

#define model
model = LassoCV(alphas= arange (0, 1, 0.01), cv=cv, n_jobs= -1 )

#fit model
model. fit (x,y)

#display lambda that produced the lowest test MSE
print( model.alpha_ )

0.99

테스트의 MSE를 최소화하는 람다 값은 0.99 로 나타났습니다.

4단계: 모델을 사용하여 예측하기

마지막으로 최종 올가미 회귀 모델을 사용하여 새로운 관찰에 대해 예측할 수 있습니다. 예를 들어, 다음 코드는 다음 속성을 사용하여 새 자동차를 정의하는 방법을 보여줍니다.

  • mpg: 24
  • 무게: 2.5
  • 가격: 3.5
  • 초당: 18.5

다음 코드는 적합 올가미 회귀 모델을 사용하여 이 새로운 관측치의 HP 값을 예측하는 방법을 보여줍니다.

 #define new observation
new = [24, 2.5, 3.5, 18.5]

#predict hp value using lasso regression model
model. predict ([new])

array([105.63442071])

입력된 값을 기반으로 모델은 이 자동차의 HP 값이 105.63442071 이라고 예측합니다.

이 예제에 사용된 전체 Python 코드는 여기에서 찾을 수 있습니다.

의견을 추가하다

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