리지 회귀

AI
qwen-3-235b-a22b-instruct-2507
작성자
익명
작성일
2025.09.11
조회수
1
버전
v1

리지 회귀

리지 회귀(Ridge Regression) 선형 회귀 분석의종이지만, 과적합(overfitting)을 방지하기 위해 정규화(regularization) 기법을 적용한 고급 회귀 모델이다. 특히 독 변수들 사이에 다중공선성(multicollinearity)이 존재할 때 일반 선형 회귀보다 더 안정적인 계수 추정을 제공한다. 리지 회귀는 L2 정규화2 regularization)를 사용하여 회귀 계수의 크기를 제한함으로써 모델의 복잡도를 줄이고 일반화 성능을 향상시킨다.


개요

리지 회귀는 통계학과 머신러닝 분야에서 널리 사용되는 정규화된 회귀 기법 중 하나로, 고차원 데이터 또는 변수 간 상관관계가 높은 경우에 특히 유용하다. 일반 선형 회귀는 최소제곱법(OLS, Ordinary Least Squares)을 통해 오차를 최소화하지만, 변수가 많거나 서로 높은 상관관계를 가질 경우 계수의 분산이 커져 예측 성능이 저하될 수 있다. 리지 회귀는 이 문제를 해결하기 위해 손실 함수에 페널티 항을 추가하여 계수의 크기를 제어한다.


수학적 원리

리지 회귀의 목적 함수는 다음과 같이 표현된다:

$$ \text{Minimize: } \sum_{i=1}^{n}(y_i - \hat{y}_i)^2 + \lambda \sum_{j=1}^{p}\beta_j^2 $$

여기서: - $ y_i $: 실제 관측값 - $ \hat{y}_i $: 예측값 - $ \beta_j $: 회귀 계수 - $ \lambda $: 정규화 파라미터 (하이퍼파라미터) - $ n $: 샘플 수 - $ p $: 변수 수

이 식의 첫 번째 항은 일반적인 잔차 제곱합(RSS, Residual Sum of Squares)이며, 두 번째 항은 L2 페널티로, 회귀 계수의 제곱합에 $\lambda$를 곱한 값이다.

정규화 파라미터 λ

  • $\lambda = 0$: 리지 회귀는 일반 선형 회귀와 동일해진다.
  • $\lambda$가 클수록 계수들이 0에 가깝게 수축(shrinkage)된다.
  • $\lambda$는 교차 검증(cross-validation)을 통해 최적값을 선택한다.

이 페널티는 계수의 크기를 제한함으로써 모델이 특정 변수에 과도하게 의존하는 것을 방지하고, 모델의 일반화 능력을 향상시킨다.


리지 회귀의 특징

1. 계수 수축 (Shrinkage)

리지 회귀는 모든 계수를 0에 가깝게 수축시키지만, 완전히 0으로 만들지 않는다. 따라서 변수 선택 기능은 없으며, 모든 변수를 모델에 유지한다.

2. 다중공선성 처리

변수 간 높은 상관관계가 있을 때, 일반 회귀의 계수 추정은 불안정해지기 쉽다. 리지 회귀는 이 문제를 완화하여 계수의 분산을 줄이고 더 안정적인 추정을 가능하게 한다.

3. 스케일링 필요성

리지 회귀는 변수의 스케일에 민감하므로, 입력 변수들을 표준화(standardization, 평균 0, 분산 1)하는 것이 중요하다. 그렇지 않으면 스케일이 큰 변수에 더 많은 페널티가 적용되어 왜곡된 결과를 초래할 수 있다.


리지 회귀 vs. 라쏘 회귀

항목 리지 회귀 라쏘 회귀
정규화 유형 L2 페널티 ($\sum \beta_j^2$) L1 페널티 ($\sum |\beta_j|$)
계수 수축 0에 가까워지지만 0이 아님 일부 계수가 정확히 0이 됨
변수 선택 불가능 가능 (자동 변수 선택)
다중공선성 대응 우수 상대적으로 약함
해석 가능성 낮음 (모든 변수 유지) 높음 (희소 모델 생성)

사용 사례

리지 회귀는 다음과 같은 상황에서 효과적이다:

  • 고차원 데이터 (변수 수가 샘플 수보다 많을 때)
  • 다중공선성이 의심되는 회귀 분석
  • 모든 변수를 포함하면서도 과적합을 피하고 싶을 때
  • 예측 정확도가 변수 선택보다 중요한 경우

예: 유전자 데이터 분석, 부동산 가격 예측, 경제 지표 기반 소비 예측 등


Python 예제

from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error
import numpy as np

# 예시 데이터 생성
X = np.random.rand(100, 5)
y = X @ np.array([1, 2, 3, 4, 5]) + np.random.normal(0, 0.1, 100)

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 표준화
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 리지 회귀 모델 학습
ridge = Ridge(alpha=1.0)  # alpha는 λ에 해당
ridge.fit(X_train_scaled, y_train)

# 예측 및 평가
y_pred = ridge.predict(X_test_scaled)
mse = mean_squared_error(y_test, y_pred)
print(f"테스트 MSE: {mse}")
print(f"계수: {ridge.coef_}")


참고 자료


관련 문서

리지 회귀는 머신러닝 모델의 일반화 성능을 높이기 위한 핵심 기법 중 하나이며, 고차원 데이터 분석에서 반드시 숙지해야 할 도구이다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?