본문 바로가기

BLOG/머신러닝

[머신러닝] 사이킷런(Scikit-learn) 데이터로 릿지 회귀 모델 만들기 - Ridge()

이번 글에서는 사이킷런 라이브러리에서 제공하는 보스턴 주택 데이터(boston data)를 이용하여 릿지 회귀 모델을 만들어 보도록 하겠습니다.

 

 

1. 릿지(Ridge) 회귀 모델이란?

릿지 회귀 모델은 회귀를 하기 위한 선형 모델로, 가중치의 절댓값을 최소한으로 만드는 예측 함수를 사용합니다.

즉, 기울기를 작게 만들도록 제약을 거는데요, 과대적합이 되지 않도록 모델을 강제로 제약하는 '규제'를 하는 모델입니다.

 

 

2. 사이킷런 데이터 불러와 train data, test data로 나누기

릿지 회귀 모델에 사용할 데이터를 사이킷런 라이브러리에서 불러오고, train_test_split()함수를 이용하여 train data, test data로 나누어보도록 하겠습니다.

 

import mglearn
from sklearn.model_selection import train_test_split

X, y = mglearn.datasets.load_extended_boston()
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

 

코드 입력후 실행하고, X_train, X_test, y_train, y_test 변수를 출력해보면, 각 데이터가 잘 입력되었음을 확인할 수 있습니다.

 

 

3. 릿지 회귀 모델 만들기

train data, test data를 잘 만들어줬다면 릿지 회귀 모델을 만들어야 하는데요, 그전에, 사이킷런에서 제공하는 릿지 회귀모델 함수를 사용하기 위해 해당 라이브러리를 import 해줍니다.

 

from sklearn.linear_model import Ridge

 

그리고나서, 아래 코드와 같이 Ridge() 함수 뒤에 학습시킬 데이터 X_train, y_train을 fit() 함수에 입력한 뒤 함께 코드를 작성해주면 릿지 회귀 모델이 만들어집니다.

 

ridge = Ridge().fit(X_train, y_train)

 

이렇게 입력해주면, 해당 데이터로 학습된 릿지 회귀 모델이 만들어진답니다.

 

 

4. 학습 결과 확인하기

추가로, 릿지 회귀 모델로 학습이 잘 이루어졌는지 확인하기 위해 score() 함수를 사용하여 정확도를 측정할 수 있는데요, 아래와 같이 코드를 작성하여 학습 결과를 확인할 수 있습니다.

 

print("훈련 세트 점수: {:.2f}".format(ridge.score(X_train, y_train)))
print("테스트 세트 점수: {:.2f}".format(ridge.score(X_test, y_test)))

# output:
훈련 세트 점수: 0.89
테스트 세트 점수: 0.75

 

결과를 보면, train data로는 0.89의 정확도를 내었고, 학습된 결과로 train data로 정확도를 측정한 결과 다소 낮은 0.75가 나왔음을 확인할 수 있습니다.

 

 

 

이렇게 사이킷런에서 제공하는 Ridge() 함수를 이용하여 릿지 회귀 모델을 만들어 보았는데요, 각자 데이터가 있다면 위 코드에 적용하여 사용해보시기 바랍니다 :D