릿지, 라쏘 : 정규화 도입 모델

Ridge 회귀
잔차제곱합 + 패널티항(파라미터의 제곱의 합)
따라서 패널티항을 줄이기 위해서는 파라미터를 그리 크지 않은 것으로 설정해야 함.
Lasso 회귀
릿지랑 비슷한데, 패널티항이 파라미터의 제곱이 아니라 절댓값의 합
따라서 릿지보다는 파라미터 크기 큰 항을 줄이는 속도가 느림.

 

 

파이썬 구현

from sklearn.linear_model import Ridge
from sklearn.linear_model import Lasso

 

릿지회귀, 라쏘회귀를 위한 모듈 import

 

def load_data():
    
    X, y = load_boston(return_X_y = True)
    
    feature_names = load_boston().feature_names
    
    return X,y,feature_names

 

데이터를 불러와, feature_names를 feature_names 변수에 저장

 

def Ridge_regression(X, y):
    
    ridge_reg = Ridge(alpha = 10)
    
    ridge_reg.fit(X, y)
    
    return ridge_reg

 

ridge_reg를 Ridge(alpha=10)모델로 설정하고, 이를 전체 데이터인 X, y에 대해 학습시켜 반환함.

 

def Lasso_regression(X, y):
    
    lasso_reg = Lasso(alpha = 10)
    
    lasso_reg.fit(X, y)
    
    return lasso_reg

 

릿지회귀처럼 수행됨.

 

엘라스틱넷 회귀

ElasticNet 회귀
릿지는 파라미터를 완전히 0으로 만들지는 않고, 라쏘는 너무 많은 파라미터를 0으로 만들기 때문에, 
모델의 복잡성이 높아 이 둘의 장점을 결합한 회귀.

 

def ElasticNet_regression(train_X, train_y):
    
    ElasticNet_reg = ElasticNet(alpha = 10, l1_ratio = 0.4)
    
    ElasticNet_reg.fit(train_X, train_y)
    
    return ElasticNet_reg

 

alpha값은 아무거나 설정하고, l1의 비율을 0.4로 설정한 엘라스틱넷 모델 설정 후 학습

 

 

참고 : LG Aimers