엘라스틱넷(Elastic Net) 회귀릿지 회귀(Ridge)와 라쏘 회귀(Lasso)의 장점을 결합한 모델입니다.
즉, L1 정규화(라쏘)와 L2 정규화(릿지)를 동시에 적용하여 변수 선택과 가중치 축소를 함께 수행합니다.

1. 엘라스틱넷의 핵심 개념

  • 릿지 회귀처럼 모든 변수의 가중치를 줄이면서도(L2) 라쏘 회귀처럼 일부 변수를 0으로 만들어 제거(L1) 가능
  • 다중 공선성이 높은 데이터에서 불안정한 라쏘의 단점을 보완
  • 고차원 데이터에서 변수 선택과 정규화를 동시에 수행

2. 엘라스틱넷 회귀 수식

엘라스틱넷은 L1 정규화(라쏘)와 L2 정규화(릿지)를 결합한 형태로, 다음과 같은 손실 함수를 사용합니다.

  • 첫 번째 항: 일반적인 선형 회귀의 손실 함수 (MSE)
  • 두 번째 항 (L1 정규화): 일부 계수를 0으로 만들어 변수 선택 효과 제공 (라쏘)
  • 세 번째 항 (L2 정규화): 모든 계수를 작게 조정하여 다중 공선성을 해결 (릿지)
  • λ1 ​과 λ2 ​: 각각 L1과 L2 정규화의 강도를 조절하는 하이퍼파라미터

3. 엘라스틱넷의 특징

릿지와 라쏘의 장점 결합

  • 라쏘처럼 불필요한 변수를 자동으로 제거
  • 릿지처럼 모든 변수의 가중치를 적절하게 조절하여 과적합 방지

다중 공선성이 있는 데이터에서 안정적

  • 다중 공선성이 심한 경우 라쏘는 일부 변수만 선택하는데, 엘라스틱넷은 좀 더 균형 잡힌 선택을 함

변수 선택과 정규화 효과를 동시에 적용

  • 데이터에 따라 L1과 L2의 비율을 조정 가능 (α\alphaα 값으로 설정)
    • α=1\alpha = 1α=1: 라쏘와 동일 (L1 정규화만 적용)
    • α=0\alpha = 0α=0: 릿지와 동일 (L2 정규화만 적용)
    • 0<α<10 < \alpha < 10<α<1: L1과 L2 정규화를 조합한 효과

4. 릿지 vs. 라쏘 vs. 엘라스틱넷 비교

비교 항목릿지 (Ridge)라쏘 (Lasso)엘라스틱넷 (Elastic Net)
정규화 방식L2 정규화 (∑β2\sum \beta^2∑β2)L1 정규화 ((\sum\beta
과적합 방지✅ 가능✅ 가능✅ 가능
변수 선택 기능❌ 없음 (모든 변수 유지)✅ 있음 (일부 계수 0)✅ 있음 (라쏘보다 더 안정적)
다중 공선성 해결✅ 효과적❌ 불안정할 수 있음✅ 효과적
사용 추천 상황모든 변수를 유지하고 싶을 때변수 선택이 필요한 경우고차원 데이터에서 변수 선택 + 정규화가 모두 필요할 때

💡 📌 핵심 차이점:

  • 릿지는 모든 변수를 유지하지만 가중치를 작게 조정
  • 라쏘는 일부 변수를 완전히 제거하여 변수 선택 기능 제공
  • 엘라스틱넷은 라쏘의 변수 선택 기능을 유지하면서도, 릿지처럼 안정성을 높임

5. 엘라스틱넷 회귀 예제 (Python)

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이 되고, 릿지처럼 모든 변수를 조절하는 효과를 볼 수 있음!

6. 엘라스틱넷을 사용하는 경우

고차원 데이터에서 변수 선택과 정규화가 동시에 필요할 때
라쏘의 변수 선택 기능을 원하지만 불안정성을 해결하고 싶을 때
릿지보다 더 강력한 변수 선택 기능을 원할 때
데이터에 다중 공선성이 존재할 때

7. 결론: 한 줄 요약

엘라스틱넷(Elastic Net) 회귀릿지(L2)와 라쏘(L1)의 장점을 결합하여, 변수 선택과 정규화를 동시에 수행하는 모델입니다.
라쏘의 단점(불안정성)을 보완하면서도, 불필요한 변수는 제거하고 중요한 변수는 유지하는 균형 잡힌 방식을 제공합니다. 🚀

zerg96

Recent Posts

노트북(윈도우)에서 아이폰 유선 테더링 하기

윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…

3일 ago

오라클 래치(Latch)

오라클 데이터베이스의 성능을 논할 때, 내부적으로 발생하는 경합(Contention)은 피할 수 없는 주제다. 특히 다수의 프로세스가…

7일 ago

사장님도 3표, 나도 3표? ‘3%룰’ 완전 정복!

안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…

3주 ago

Vector Store(벡터 스토어)

'벡터 스토어' 완벽 가이드: AI 시대, 데이터의 새로운 심장을 만나다 IT 업계는 인공지능(AI)이라는 거대한 패러다임의…

3주 ago

Gemini CLI (재미나이 CLI)

1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…

3주 ago

과적합 (overfitting)

과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…

1개월 ago