엘라스틱넷(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)의 장점을 결합하여, 변수 선택과 정규화를 동시에 수행하는 모델입니다.
라쏘의 단점(불안정성)을 보완하면서도, 불필요한 변수는 제거하고 중요한 변수는 유지하는 균형 잡힌 방식을 제공합니다. 🚀
윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…
과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…