개발 창고/AI

복잡한 모델을 간단하게: Lasso Regression의 모든 것

Royzero 2025. 6. 26. 22:00
반응형

Lasso Regression이란?

Lasso Regression은 과적합(overfitting)을 방지하고 모델을 단순화하기 위해 고안된 선형 회귀의 확장 기법입니다. 특히 변수가 많은 경우, 불필요한 변수를 자동으로 제거해주기 때문에 해석 가능하고 일반화 성능이 높은 모델을 만들 수 있습니다.


Lasso Regression의 개념

LassoLeast Absolute Shrinkage and Selection Operator의 줄임말로, L1 정규화 항을 포함한 회귀 모델입니다.

일반 선형 회귀 식:

y = β₀ + β₁x₁ + β₂x₂ + ... + βₙxₙ + ε

Lasso 회귀의 손실 함수:

Loss = RSS + λ \* Σ|βᵢ|
  • RSS: 잔차 제곱합 (Residual Sum of Squares)
  • λ: 규제 강도 (lambda 값이 클수록 계수가 더 줄어듦)
  • Σ|βᵢ|: 계수의 절댓값 합 (L1 norm)

L1 패널티는 일부 계수를 정확히 0으로 만들어, 변수 선택(feature selection)의 효과를 줍니다.


실제 예시: 집값 예측

예를 들어, 다음과 같은 변수들로 집값을 예측한다고 해봅시다:

  • 면적
  • 방 개수
  • 엘리베이터 유무
  • 건축 연도
  • 단지 이름
  • 관리비
  • ...

이 중 일부는 예측에 큰 영향을 주지 않을 수 있습니다. Lasso Regression은 중요하지 않은 변수의 계수를 0으로 만들어 자동으로 제외시키고, 의미 있는 변수만 모델에 남깁니다.


Lasso를 사용할 때

  1. 변수가 많을 때
    • 특히 고차원 데이터나 다중공선성이 있는 경우 유용합니다.
  2. 변수 선택이 필요한 경우
    • 자동으로 중요 변수만 선택됩니다.
  3. 모델 해석이 필요할 때
    • 불필요한 변수를 제거해 모델이 더 명확해집니다.

Lasso의 한계

  1. 변수 수가 샘플 수보다 많을 경우 불안정
  2. 계수가 편향될 수 있음
    • 정규화로 인해 계수가 0에 더 가까워짐
  3. 상관관계가 높은 변수 중 하나만 선택
    • 모든 관련 변수를 포착하지 못할 수 있음

비교: Lasso vs Ridge vs ElasticNet

모델 정규화 방식 변수 제거 특징
Ridge L2 (제곱합) 계수를 줄이되 제거하지 않음
Lasso L1 (절댓값합) 일부 계수를 0으로 만들어 제거
ElasticNet L1 + L2 Ridge와 Lasso의 장점 결합

Scikit-Learn 코드 예시

from sklearn.linear_model import Lasso
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 데이터 불러오기
X, y = load_boston(return_X_y=True)

# 학습/테스트 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 모델 학습
lasso = Lasso(alpha=1.0)
lasso.fit(X_train, y_train)

# 예측 및 평가
y_pred = lasso.predict(X_test)
print("MSE:", mean_squared_error(y_test, y_pred))
print("Coefficients:", lasso.coef_)

요약

Lasso Regression은 L1 정규화를 통해 모델을 단순화하고 과적합을 줄이는 데 매우 효과적인 회귀 기법입니다. 변수 선택 기능까지 갖추고 있어 해석 가능성과 성능을 동시에 잡을 수 있는 유용한 도구입니다.

고차원 데이터나 해석 가능한 모델이 필요한 상황에서 Lasso는 꼭 알아야 할 핵심 머신러닝 기술입니다.

반응형