엘라스틱넷(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

타입스크립트 (TypeScript)

1. 타입스크립트 개요 타입스크립트(TypeScript)는 마이크로소프트(Microsoft)가 개발한 자바스크립트(JavaScript)의 상위 집합(Superset) 언어입니다.즉, 자바스크립트에 정적 타입(Static Type)을 추가하고,…

5개월 ago

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

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

6개월 ago

오라클 래치(Latch)

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

7개월 ago

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

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

7개월 ago

Vector Store(벡터 스토어)

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

7개월 ago

Gemini CLI (재미나이 CLI)

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

7개월 ago