머신러닝에서는 과대적합(overfitting)을 줄이면서, 일반성을 가지는 모델을 생성하는 것이 중요함
이를 위해 사용되는 규제 기법에는 릿지(ridge) 회귀, 라쏘(lasso) 회귀 기법 등이 있음
릿지 회귀(Ridge Regression)
- 회귀계수의 제곱 값에 페널티를 부여하는 방식
- 회귀 계수 값의 크기를 감소시켜 과적합을 개선하는 방식
- L2 규제라고도 함
- 모델러에 의해 지정된 alpha 값을 통해서 페널티를 조정할 수 있음
<적용 프로세스>
1) alpha 값 정의
2) Ridge(alpha) 클래스 객체 생성
3) fit(X, y) 을 통해 학습 데이터 연결 및 규제 학습 수행
4) predict(X) 통해 학습된 모델의 예측 수행
5) score(X, y) 통해 R^2 값 확인(모델의 성능 지표 계산)
'''
-------- [최종 출력 결과] --------
Training-datasset R2 : 0.748
Test-datasset R2 : 0.708
Ridge Regression Coefficients :
RM 3.6
CHAS 3.3
RAD 0.3
ZN 0.1
INDUS 0.1
AGE 0.0
TAX -0.0
B 0.0
CRIM -0.1
LSTAT -0.6
PTRATIO -0.8
DIS -1.3
NOX -15.7
dtype: float64
----------------------------------
'''
# 필요한 라이브러리 로딩
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
# 릿지 회귀 모델 적용을 위해 Ridge 로딩
from sklearn.linear_model import Ridge
# 데이터셋 로딩
boston = load_boston()
# 데이터셋 분할
# random_state 값은 강의와 동일하게 지정하세요.
x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.3, random_state=12)
# 규제를 위한 alpha 값 초기화
# 학습시에는 alpha 값을 바꾸가면서 테스트해보시고,
# 최종 코드 제출시에는 0.1 로 지정후 제출하세요.
alpha = 0.1
# Rigde 클래스 객체 생성
ridge = Ridge(alpha=alpha)
# 규제 학습 수행
ridge.fit(x_train, y_train)
# 모델을 통한 예측
ridge_pred = ridge.predict(x_test)
# 학습된 모델에 대한 R^2 계산
r2_train = ridge.score(x_train, y_train)
r2_test = ridge.score(x_test, y_test)
print('Training-datasset R2 : {0:.3f}'.format(r2_train))
print('Test-datasset R2 : {0:.3f}'.format(r2_test))
# 컬럼별 회귀계수 저장한 Series 객체 생성 및 출력
ridge_coef_table = pd.Series(data=np.round(ridge.coef_, 1), index=boston.feature_names)
print('Ridge Regression Coefficients :')
print(ridge_coef_table.sort_values(ascending=False))
# 막대그래프 시각화
plt.figure(figsize=(10,5))
ridge_coef_table.plot(kind='bar')
plt.ylim(-12, 5)
plt.show()
'프로젝트 > 코드프레소 체험단' 카테고리의 다른 글
시각화를 위한 Matplotlib, Pandas 활용하기 (0) | 2022.01.18 |
---|---|
파이썬으로 구현하는 머신러닝 : 회귀분석 - 사이킷런 활용한 라쏘 규제 실습 (0) | 2022.01.18 |
파이썬으로 구현하는 머신러닝 : 회귀분석 - 규제의 이해 (0) | 2022.01.16 |
파이썬으로 구현하는 머신러닝 : 회귀분석 - 다중 선형회귀 분석 실습 (0) | 2022.01.16 |
파이썬으로 구현하는 머신러닝 : 회귀분석 - 회귀모델의 추정과 평가 (0) | 2022.01.16 |