엘라스틱넷(Elastic Net) 회귀는 릿지 회귀(Ridge)와 라쏘 회귀(Lasso)의 장점을 결합한 모델입니다.
즉, L1 정규화(라쏘)와 L2 정규화(릿지)를 동시에 적용하여 변수 선택과 가중치 축소를 함께 수행합니다.
엘라스틱넷은 L1 정규화(라쏘)와 L2 정규화(릿지)를 결합한 형태로, 다음과 같은 손실 함수를 사용합니다.
✅ 릿지와 라쏘의 장점 결합
✅ 다중 공선성이 있는 데이터에서 안정적
✅ 변수 선택과 정규화 효과를 동시에 적용
| 비교 항목 | 릿지 (Ridge) | 라쏘 (Lasso) | 엘라스틱넷 (Elastic Net) |
|---|---|---|---|
| 정규화 방식 | L2 정규화 (∑β2\sum \beta^2∑β2) | L1 정규화 ((\sum | \beta |
| 과적합 방지 | ✅ 가능 | ✅ 가능 | ✅ 가능 |
| 변수 선택 기능 | ❌ 없음 (모든 변수 유지) | ✅ 있음 (일부 계수 0) | ✅ 있음 (라쏘보다 더 안정적) |
| 다중 공선성 해결 | ✅ 효과적 | ❌ 불안정할 수 있음 | ✅ 효과적 |
| 사용 추천 상황 | 모든 변수를 유지하고 싶을 때 | 변수 선택이 필요한 경우 | 고차원 데이터에서 변수 선택 + 정규화가 모두 필요할 때 |
💡 📌 핵심 차이점:
import numpy as np
import matplotlib.pyplot as plt
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=10, 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 = ElasticNet(alpha=0.1, l1_ratio=0.5) # L1과 L2 정규화 혼합
elastic_net.fit(X_train, y_train)
# 회귀 계수 확인
print("Elastic Net 회귀 계수:", elastic_net.coef_)
# 중요하지 않은 변수는 계수가 0이 될 가능성이 있음
plt.bar(range(len(elastic_net.coef_)), elastic_net.coef_)
plt.xlabel("Feature Index")
plt.ylabel("Coefficient Value")
plt.title("Elastic Net Regression Coefficients")
plt.show() 📌 라쏘처럼 일부 계수가 0이 되고, 릿지처럼 모든 변수를 조절하는 효과를 볼 수 있음!
✅ 고차원 데이터에서 변수 선택과 정규화가 동시에 필요할 때
✅ 라쏘의 변수 선택 기능을 원하지만 불안정성을 해결하고 싶을 때
✅ 릿지보다 더 강력한 변수 선택 기능을 원할 때
✅ 데이터에 다중 공선성이 존재할 때
엘라스틱넷(Elastic Net) 회귀는 릿지(L2)와 라쏘(L1)의 장점을 결합하여, 변수 선택과 정규화를 동시에 수행하는 모델입니다.
라쏘의 단점(불안정성)을 보완하면서도, 불필요한 변수는 제거하고 중요한 변수는 유지하는 균형 잡힌 방식을 제공합니다. 🚀
요양원 선택 전 반드시 확인해야 할 체크리스트를 공개합니다. 공식 평가 자료 조회법, 방문 시 확인…
공공기관 채용 비리의 실태와 피해 지원자의 대응법을 정리했습니다. 채용 비리 신고 방법, 공익신고자 보호제도, 취준생…
주식 손실을 세금 절약에 활용하는 합법적 방법을 공개합니다. 해외주식 손익통산, ISA 계좌 활용, 연금계좌 절세까지…
배달이 예상 시간보다 크게 늦으면 취소·환불을 요청할 수 있습니다. 배달앱별 지연 취소 방법과 잘못 배달됐을…
통신비 절약의 핵심은 요금제 최적화입니다. 내 데이터 사용량 확인법, 알뜰폰 전환 비교, 위약금 없이 요금제…