릿지, 라쏘 : 정규화 도입 모델
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
'AI > 기계학습' 카테고리의 다른 글
머신러닝과 딥러닝의 차이 (0) | 2024.05.20 |
---|---|
회귀 총정리 (0) | 2024.05.13 |
회귀 알고리즘 평가 지표 RSS, MSE, MAE, R^2 (0) | 2024.05.12 |
if __name__ == '__main__': 의 의미는? (0) | 2024.05.11 |
교차 검증 - 과적합 방지 기법 (0) | 2024.05.11 |