정규화를 적용한 회귀
✅과적합
- 모델이 주어진 훈련 데이터에 과도하게 맞춰져 새로운 데이터가 입력 되었을 때 잘 예측하지 못하는 현상
- 모델이 과도하게 복잡해서 일ㄱ반성이 떨어진 경우 의미
→정규화 적용
✅Ridge
- 회귀 학습에 사용되는 Loss Function(비용함수)에 L2 정규화 항을 추가
- 중요하지 않은 βi를 0에 가깝게 만들어 모델의 복잡성을 줄일 수 있음
- βi를 0에 가깝게 만들지만 완전한 0은 아니기 때문에 모델이 여전히 복잡할 수 있음
from sklearn.linear_model import Ridge
def Ridge_regression(X, y):
# Rige(alpha) : 기본값은 1, 값이 클 수록 더 강한 정규화
ridge_reg = Ridge(10)
ridge_reg.fit(X,y)
return ridge_reg
✅Lasso
- 회귀 학습에 사용되는 Loss Function (비용함수)에 L1 정규화 항을 추가
- 중요하지 않은 βi를 0으로 만들어 모델의 복잡성을 줄일 수 있음
- 너무 많은 βi를 0으로 만들 수 있어 모델의 정확성이 떨어질 수 있음
- 몇 개의 중요 변수만 선택하기 때문에 정보 손실의 가능성이 있음
from sklearn.linear_model import Lasso
def Lasso_regression(X, y):
# Lassoha) : 기본값은 1, 값이 클 수록 더 강한 정규화
lasso_reg = Lasso
lasso_reg.fit(X,y)
return lasso_reg
✅ElasticNet
- Lasso 회귀, Ridge 회귀의 단점을 보완하기 위함
- Lasso 회귀의 L1 정규화와 Ridge 회귀의 L2 정규화 적용 비율을 조정하여 모델 구현
lasticNet(alpha, l1_ratio)
- alpha: 기본값은 1
- alpha값이 클수록 더 강한 정규화를 적용
- l1_ratio: L1 정규화를 반영할 비율
from sklearn.linear_model import ElasticNet
def ElasticNet_regression(train_X, train_y):
ElasticNet_reg = ElasticNet(alpha=0.01,l1_ratio=0.99)
ElasticNet_reg.fit(train_X, train_y)
return ElasticNet_reg