선형 모델의 맥가이버 칼: Lasso Regression
요약
퀀트 트레이딩 및 머신러닝 모델링에서 과적합을 방지하기 위한 Lasso Regression의 개념과 필요성을 설명합니다. L1 규제를 통해 불필요한 피처의 계수를 0으로 만들어 변수 선택 효과를 제공하는 원리를 다룹니다.
핵심 포인트
- Lasso는 L1 페널티를 사용하여 모델의 복잡성을 제어합니다.
- 일부 계수를 정확히 0으로 만들어 자동 변수 선택 기능을 수행합니다.
- 다중공선성과 노이즈 피처가 많은 금융 데이터 환경에 적합합니다.
- OLS의 과적합 문제를 해결하여 아웃오브샘플 성능을 개선합니다.
출처: https://godzilla.dev/learning/ai_quant_traders_series_7/
AI x Quant Trader Series - Day 7에 관한 godzilla.dev 자료를 아래에서 확인하세요.
선형 모델의 맥가이버 칼: Lasso Regression¶
읽기 시간: 약 15분
선행 학습: 기초 선형 대수학 (Linear Algebra), Python, NumPy
중점 사항: 엔지니어링 직관, 퀀트 활용 (ML 유행 추종이 아님)
Part 1: 규제화된 선형 모델 (Regularized Linear Models) 소개¶
이제 데이터 처리에서 퀀트 트레이딩 (Quantitative Trading) 및 응용 머신러닝 (Machine Learning)에서 가장 중요한 모델링 도구 중 하나인 규제화된 선형 모델 (Regularized Linear Models)로 넘어갑니다.
실제 금융 모델링에서 주요 어려움은 계산(Computation)인 경우가 거의 없습니다. 대신, 거의 항상 구조적인 문제입니다:
- 너무 많은 피처 (Features)
- 강한 다중공선성 (Multicollinearity)
- 제한된 샘플 (Limited Samples)
- 높은 신호 대 잡음비 (High Noise-to-Signal Ratio)
단순한 선형 회귀 (Linear Regression) 모델은 인샘플 (In-sample) 데이터에는 매우 잘 맞을 수 있지만, 아웃오브샘플 (Out-of-sample)에서는 처참하게 실패할 수 있습니다.
이 지점에서 Lasso 회귀 (Lasso Regression)가 필수적이 됩니다.
Part 2: 선형 회귀에서 Lasso로¶
2.1 최소제곱법 (Ordinary Least Squares, OLS)¶
최소제곱법의 목적 함수 (Objective Function)는 다음과 같습니다:
OLS는 오직 예측 오차 (Prediction Error)를 최소화하려고 시도합니다.
모델의 복잡성 (Complexity)에 대해 어떠한 제약도 두지 않습니다.
그 결과:
- 피처들이 서로 상관되어 있을 때 계수 (Coefficients)가 불안정해짐
- 노이즈 피처 (Noise Features)가 0이 아닌 가중치 (Weights)를 받음
- 고차원 환경 (High-dimensional Settings)에서 과적합 (Overfitting)이 거의 확실시됨
2.2 규제화 (Regularization)가 필요한 이유¶
퀀트 금융 (Quantitative Finance)에서 피처 세트에는 종종 다음과 같은 것들이 포함됩니다:
- 수십 개의 기술적 지표 (Technical Indicators)
- 중복되는 팩터 (Overlapping Factors)
- 시차 신호 (Lagged Signals)
이러한 피처 중 상당수는 중복되거나 가짜 정보 (Spurious Information)를 담고 있습니다.
규제화 (Regularization)는 복잡성에 명시적으로 페널티 (Penalty)를 부여하여, 모델이 더 단순하고 안정적인 솔루션을 선호하도록 강제합니다.
Part 3: Lasso Regression — 핵심 아이디어¶
3.1 목적 함수 (Objective Function)¶
Lasso (Least Absolute Shrinkage and Selection Operator)는 L1 페널티 (L1 Penalty)를 추가하여 OLS를 수정합니다:
여기서:
첫 번째 항은 적합 품질 (fit quality)을 측정합니다.
두 번째 항은 계수 크기 (coefficient magnitude)에 페널티를 부여합니다.
$\alpha$는 규제 (regularization)의 강도를 조절합니다.
3.2 Lasso를 다르게 만드는 것¶
Ridge 회귀 (Ridge regression, L2 regularization)와 달리, Lasso는 일부 계수를 정확히 0으로 만듭니다.
이는 다음과 같은 결과를 가져옵니다:
자동 특징 선택 (Automatic feature selection)
희소 모델 (Sparse models)
해석력 향상 (Improved interpretability)
엔지니어링 관점에서 보면:
Lasso는 단순한 회귀 모델이 아니라, 구조화된 필터 (structured filter)입니다.
Part 4: 직관 — 왜 Lasso는 희소성 (Sparsity)을 생성하는가¶
L1 페널티 (L1 penalty)는 날카로운 제약 기하학 (constraint geometry)을 생성합니다.
이 제약 조건 하에서 최적화 (optimization)가 이루어질 때, 해(solution)는 자연스럽게 좌표축 위에 놓이게 됩니다.
실질적인 결과는 간단합니다:
중요하지 않은 특징들은 완전히 제거됩니다.
이러한 동작은 신호의 수가 적을수록 노이즈가 섞인 조합보다 더 나은 성능을 보이는 경우가 많은 퀀트 트레이딩 (quant trading) 분야에서 매우 가치 있습니다.
Part 5: Python으로 Lasso 구현하기¶
이제 scikit-learn을 사용하여 Lasso를 구현해 보겠습니다.
Imports¶
import numpy as np
import pandas as pd
from sklearn.linear_model import Lasso
from sklearn.preprocessing import StandardScaler
5.1 예시 데이터 생성¶
import numpy as np
np.random.seed(42)
X = np.random.randn(100, 10)
true_beta = np.array([3, 0, 0, 1.5, 0, 0, 0, 2, 0, 0])
y = X @ true_beta + np.random.randn(100) * 0.5
5.2 특징 표준화 (Standardize Features)¶
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
5.3 Lasso 모델 학습¶
from sklearn.linear_model import Lasso
import pandas as pd
lasso = Lasso(alpha=0.1)
lasso.fit(X_scaled, y)
pd.Series(lasso.coef_)
출력 결과:
0 2.85
1 0.00
2 0.00
3 1.42
4 0.00
5 0.00
6 0.00
7 1.95
8 0.00
9 0.00
dtype: float64
노이즈 특징들은 자동으로 제거되는 반면, 실제 신호들은 유지됩니다.
Part 6: Alpha ($\lambda$)의 역할¶
6.1 규제 강도의 효과¶
작은 $\alpha$ $\rightarrow$ 약한 규제 $\rightarrow$ 과적합 (overfitting)
큰 $\alpha$ $\rightarrow$ 공격적인 수축 (aggressive shrinkage) $\rightarrow$ 과소적합 (underfitting)
for a in [0.01, 0.1, 1.0]:
model = Lasso(alpha=a)
model.fit(X_scaled, y)
print(a, (model.coef_ != 0).sum())
출력 결과:
0.01 7
0.1 3
1.0 0
6.2 교차 검증 (Cross-Validation) (권장)¶
from sklearn.linear_model import LassoCV
lasso_cv = LassoCV(cv=5)
lasso_cv.fit(X_scaled, y)
lasso_cv.alpha_
lasso_cv.coef_
교차 검증 (Cross-validation)은 서로 다른 시장 국면 (market regimes) 전반에 걸쳐 강건성 (robustness)을 향상시킵니다.
Part 7: Lasso의 한계¶
Lasso가 항상 최적인 것은 아닙니다:
- 특성 (features) 간의 상관관계가 매우 높을 때 성능이 저하됨
- 비선형 상호작용 (non-linear interactions)을 모델링할 수 없음
- 이상치 (outliers)에 민감함
일반적인 해결책은 다음과 같습니다:
- Elastic Net (L1 + L2)
- PCA + Lasso
- Lasso를 이용한 특성 선택 (feature selection) 후 비선형 모델 적용
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기