<Python> Machine Learning-정규화를 적용한 회귀

Google 아니고 Joogle·2023년 3월 30일
0

Python

목록 보기
5/5
post-thumbnail

정규화를 적용한 회귀

✅과적합

  • 모델이 주어진 훈련 데이터에 과도하게 맞춰져 새로운 데이터가 입력 되었을 때 잘 예측하지 못하는 현상
  • 모델이 과도하게 복잡해서 일ㄱ반성이 떨어진 경우 의미
    →정규화 적용

✅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

profile
Born to be happy, Not perfect 🤍

0개의 댓글