엘라스틱넷(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)의 장점을 결합하여, 변수 선택과 정규화를 동시에 수행하는 모델입니다.
라쏘의 단점(불안정성)을 보완하면서도, 불필요한 변수는 제거하고 중요한 변수는 유지하는 균형 잡힌 방식을 제공합니다. 🚀
오늘은 AI 생태계에 혁신적인 변화를 가져올 것으로 예상되는 MCP(Model Context Protocol)에 대해 상세히 알아보겠습니다. 2024년…
1. TPM이란? TPM(Trusted Platform Module)은 국제 표준 기반의 보안 하드웨어 칩으로, 컴퓨터나 디지털 장비 내에서…
시즌2, 기대했는데... 실망도 두 배!두뇌싸움을 기대했는데, 전략도 없는 자기들만의 감정에 따른 편가르기, 정치싸움이 되어 버린…
BPF(Berkeley Packet Filter) 도어는 해커가 관리자 몰래 뒷문을 새로 만든 것입니다.해커가 명령을 내려 특정 데이터들을 뒷문을…
1. IPC의 개념과 목적 1.1 IPC란 무엇인가? IPC (Inter-Process Communication)는 운영체제 내의 서로 독립적인 프로세스…