Elastic Net
라쏘 회귀(Lasso Regression)와 릿지 회귀(Ridge Regression)의 장점을 결합한 회귀 분석 방법으로 데이터를 분석하고 예측하는 데 유용하며, 다수의 상관관계가 높은 변수나 고차원 데이터에서 특히 효과적
1. Elastic Net이란?
![]() |
|
2. Elastic Net 특징
1) 상관관계가 높은 변수 처리
2) 규제의 유연성
3) 고차원 데이터에 적합
4) 하이퍼파라미터 튜닝 필요
5) 계산 복잡성 증가
3. Elastic Net 학습 방법
Elastic Net은 라쏘와 릿지 회귀처럼 손실 함수를 최소화하는 방향으로 학습합니다. 좌표 하강법(Coordinate Descent)과 같은 최적화 알고리즘을 사용해 계수 βj를 반복적으로 업데이트
4. Elastic Net과 라쏘, 릿지 회귀 비교
특징 | 라쏘 회귀 | 릿지 회귀 | Elastic Net |
규제 | L1 규제 | L2 규제 | L1 + L2 규제 |
변수 선택 | 일부 변수 제거 (0으로 설정) | 모든 변수를 사용 (작게 만듦) | 일부 제거 + 안정적 선택 |
상관관계가 높은 변수 | 하나만 선택 | 모두 유지 | 함께 선택 가능 |
사용 상황 | 중요한 변수만 선택해야 할 때 | 과적합을 방지해야 할 때 | 고차원 데이터, 변수 상관관계 |
Python의 Scikit-learn 라이브러리를 사용하여 간단하게 Elastic Net 모델을 구현하는 방법
from sklearn.linear_model import ElasticNet
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
# 데이터 생성
X, y = make_regression(n_samples=100, n_features=10, noise=0.1, random_state=42)
# 훈련/테스트 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Elastic Net 모델 생성 및 학습
elastic_net = ElasticNet(alpha=0.1, l1_ratio=0.5) # alpha: 규제 강도, l1_ratio: L1과 L2 비율
elastic_net.fit(X_train, y_train)
# 결과 출력
print("회귀 계수:", elastic_net.coef_)
print("제거된 변수 수:", sum(elastic_net.coef_ == 0))
print("모델 점수 (R^2):", elastic_net.score(X_test, y_test))
분류 - 로지스틱 회귀(Logistic Regression) (2) | 2024.11.28 |
---|---|
분류(Classification) (0) | 2024.11.26 |
회귀분석-라쏘 회귀(Lasso Regression) (0) | 2024.11.18 |
회귀분석-릿지 회귀(Ridge Regression) (0) | 2024.10.30 |
회귀분석-다항 회귀(Polynomial Regression) (0) | 2024.10.28 |