본문 바로가기
Python/Machine Learning

가중치 규제 - Ridge,Lasso,Elastic Net

by skwkiix 2024. 7. 28.
728x90

0.  과적합(Overfitting) 과 일반화 성능

회귀분석의 성능을 평가할 때 대부분 실제값 - 예측값의 차이를 가지고 평가한다.

실제값 - 예측값의 관계만 살펴보게 되면 회귀계수에 대해서 과적합이 되는 경우가 발생할 수 있다.

이렇게 되면, 당연히 train 데이터 성능보다,  test 데이터에서는 성능이 잘 안 나올 수 있고, 실시간 배치 데이터를 받았을 때 성능이 나빠질 수 있다.

 

과적합을 방지하여 일반화 성능을 높이는 방법은 다음과 같다.

 

1. 학습 데이터 늘리기

2. 모델의 복잡도 줄이기

3. 가중치 규제(Regularization) 적용

4. 드롭아웃

 

모델은 기본적으로 손실함수(Cost Function)을 최소화하는 방법으로 작동한다.

이때, 학습데이터에 존재하는 노이즈가 과하게 모델에 반영되어, 손실함수가 필요 이상으로 작아지게 되면, 과적합이 되어 일반화 성능이 떨어진다. 이번 포스팅에서는, 학습데이터 잔차 오류 최소화 + 회귀 계수 규제를 통해서 일반화 성능을 높이는 방법을 알아본다.

 


1.  가중치 규제  - L1 Norm(Lasso), L2 Norm (Ridge)

모델의 손실 함수 값이 너무 작아지지 않도록 특정한 값(Regularization Term)을 추가하는 것으로,

Weight 값이 과도하게 커지는 것 방지 및 데이터의 일반화 반영이 가능하다.

 

 

 

L1 norm ( Lasso  Regression )

특정 방향으로만 움직일 수 있는 경우, 두 벡터 간의 최단 거리 찾기(Manhattan distance)

L1 norm은 주어진 벡터의 각 성분의 절댓값을 모두 합한 것

 

 $$ \| \mathbf{w} \|_1 = \sum_{i=1}^{n} |w_i| $$
여기서 \(\mathbf{w}\)는 모델의 가중치(weights) 벡터이며, \(w_i\)는 각 가중치의 성분이다.

L1 norm을 사용한 규제는 가중치의 절대값을 추가 비용으로 고려하여, 가중치 값을 줄이고 sparse한 모델을 만드는 경향이 있다.

즉, L1 규제는 중요하지 않은 특성들의 가중치를 0으로 만들어 feature selection 효과를 가질 수 있기에 Feature Selection에 유리하다.

 

L2 Norm (Ridge Regression)

L2 norm은 주어진 벡터의 각 성분의 제곱을 모두 합한 것의 제곱근이다.

 $$ \| \mathbf{w} \|_2 = \sqrt{\sum_{i=1}^{n} w_i^2} $$

L2 norm을 사용한 규제는 가중치의 제곱값을 추가 비용으로 고려하며, 이는 큰 가중치를 피하고 모든 특성이 조금씩 기여할 수 있도록 돕는다.  L2 규제는 모든 특성을 고르게 사용하는 경향이 있어, 특성 간 상호작용이 중요한 경우에 유리할 수 있다.  outlier에 대해서도 비교적 민감하지 않다.

 

Elastic Net

ElasticNet은 회귀 분석 기법으로, L1 규제(라쏘 회귀)와 L2 규제(릿지 회귀)를 결합한 것이다. 목적함수를 최소화 하는 방식으로 동작한다.

 

$$ \min_{\beta} \left\{ \frac{1}{2n} \sum_{i=1}^n (y_i - \mathbf{x}_i^T \beta)^2 + \lambda_1 \|\beta\|_1 + \frac{\lambda_2}{2} \|\beta\|_2^2 \right\} $$

- \( \|\beta\|_1 \) :  L1 규제 항(라쏘 회귀)으로, 계수 벡터의 절대값 합
- \( \|\beta\|_2^2 \) :  L2 규제 항(릿지 회귀)으로, 계수 벡터의 제곱합
- \( \lambda_1 \) , \( \lambda_2 \) : 규제 강도를 조절하는 하이퍼파라미터

라쏘 회귀는 일부 계수를 0으로 만들어 변수 선택(feature selection)을 가능하게 하는 반면, 릿지 회귀는 모든 계수를 작게 만들어 과적합을 방지한다. ElasticNet은 이 두 가지 규제 방식을 결합하여 각 기법의 장점을 모두 취한다.

ElasticNet을 실제로 적용하기 위해서는 \(\lambda_1\)과 \(\lambda_2\)를 적절히 선택해야 하는데, 교차 검증을 통해 최적의 값을 찾는다.