| 비교 항목 | 릿지 회귀 (Ridge Regression) | 라쏘 회귀 (Lasso Regression) |
|---|---|---|
| 정규화 방식 | L2 정규화 (제곱합 ∑βj2\sum \beta_j^2∑βj2) | L1 정규화 (절댓값 합 (\sum |
| 과적합 방지 | 가능 (모든 계수를 작게 만듦) | 가능 (일부 계수를 0으로 만들어 변수 선택) |
| 변수 선택 | ❌ 없음 (모든 변수를 유지) | ✅ 있음 (일부 계수를 0으로 만듦) |
| 계수 축소 방식 | 모든 계수를 작게 만듦 | 불필요한 변수의 계수를 0으로 만들어 완전히 제거 |
| 다중 공선성 해결 | ✅ 효과적 | ✅ 효과적이지만 릿지보다 불안정할 수 있음 |
| 해석 가능성 | ❌ 낮음 (모든 변수를 유지) | ✅ 높음 (불필요한 변수 제거) |
| 적합한 데이터셋 | 연속적인 데이터 (변수 선택이 필요하지 않은 경우) | 고차원 데이터 (변수 선택이 필요한 경우) |
| 모델의 복잡도 조절 | 모델의 크기만 줄임 (모든 변수를 사용) | 모델을 단순화하고 중요 변수만 선택 |
아래 그래프는 릿지와 라쏘의 계수 변화를 나타냅니다.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import Ridge, Lasso
from sklearn.datasets import make_regression
# 데이터 생성
X, y = make_regression(n_samples=100, n_features=10, noise=10, random_state=42)
# 릿지와 라쏘 모델 생성
ridge = Ridge(alpha=1.0)
lasso = Lasso(alpha=0.1)
# 모델 학습
ridge.fit(X, y)
lasso.fit(X, y)
# 계수 시각화
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.bar(range(len(ridge.coef_)), ridge.coef_)
plt.title("Ridge Regression Coefficients")
plt.xlabel("Feature Index")
plt.ylabel("Coefficient Value")
plt.subplot(1, 2, 2)
plt.bar(range(len(lasso.coef_)), lasso.coef_)
plt.title("Lasso Regression Coefficients")
plt.xlabel("Feature Index")
plt.ylabel("Coefficient Value")
plt.show() | 상황 | 추천 모델 |
|---|---|
| 모든 변수를 유지하고 싶음 | 릿지 (Ridge) |
| 다중 공선성이 높은 경우 | 릿지 (Ridge) |
| 중요하지 않은 변수를 자동으로 제거하고 싶음 | 라쏘 (Lasso) |
| 데이터에 변수가 많고 일부만 중요한 경우 | 라쏘 (Lasso) |
| 변수 선택 기능이 필요 없음 | 릿지 (Ridge) |
| 모델을 더 간결하게 만들고 싶음 | 라쏘 (Lasso) |
고차원 데이터에서 변수 선택이 필요하면 라쏘, 모든 변수를 유지하면서 조절하고 싶다면 릿지!
요양원 선택 전 반드시 확인해야 할 체크리스트를 공개합니다. 공식 평가 자료 조회법, 방문 시 확인…
공공기관 채용 비리의 실태와 피해 지원자의 대응법을 정리했습니다. 채용 비리 신고 방법, 공익신고자 보호제도, 취준생…
주식 손실을 세금 절약에 활용하는 합법적 방법을 공개합니다. 해외주식 손익통산, ISA 계좌 활용, 연금계좌 절세까지…
배달이 예상 시간보다 크게 늦으면 취소·환불을 요청할 수 있습니다. 배달앱별 지연 취소 방법과 잘못 배달됐을…
통신비 절약의 핵심은 요금제 최적화입니다. 내 데이터 사용량 확인법, 알뜰폰 전환 비교, 위약금 없이 요금제…