본문으로 바로가기

Regularization

category AI/Machine Learning 2021. 2. 19. 21:10

Bias-Variance Trade-off

1) 개요

    - 아래의 이미지를 통해 bias와 variance의 직관적인 이해를 할 수 있다.

출처 : http://scott.fortmann-roe.com

 

2) Bias (편향)

    - high bias, low variance일 경우, 모델이 단순하여 underfitting을 초래하고 train, test dataset 모두에서 낮은 정확도를 나타낼 수 있다.

 

3) Variance (분산)

    - low bias, high variance일 경우, 모델이 너무 복잡하여 overfitting을 초래하여 train dataset에서는 높은 정확도를 보이지만 새로운 data에 대한 정확도는 현저히 낮다.

 

4) 수학적 이해

    - expected MSE (mean squared error)를 낮추기 위해 bias 또는 var를 낮춰야 성능이 좋아진다.

Least squares method (최소제곱법) : MSE를 최소화하는 회귀계수를 계산
    - 파라미터를 데이터의 함수꼴로 나옴)
    - 선형회귀 모델로부터 나온 값의 차이의 제곱의 합을 최소로하는 계수를 찾는다.
    - convex 형태여서 미분하고 0으로 만들고 연립방정식을 통해 우항이 나온다.
$$argmin(\sum_{i=1}^{n}((y_{i}-x_{i}\beta)^{2})) = (X^{T}X)^{-1}X^{T}y$$

Regularization model

1) 개요

    - bais와 var가 동시에 낮은 모델은 없기 때문에 bias를 추가하여 모델을 간단하게 만들어 var을 줄인다.

    - 가중치를 제한하여 훈련 데이터셋에 대한 의존성을 줄여준다.

    - 목표는 규제가 없는 비용과 페널티항의 합을 최소화하는 것

    - 최소제곱법과 다르게 회귀계수에 제약(= 가중치 w)을 더한다.

 

2) Ridge Regression (L2-norm regularization)

    - 제곱 오차를 최소화하면서 회귀 계수 beta의 L2-norm을 제한 (beta의 제곱의 합)

$$L(\beta) = min \sum_{i=1} (y_{i} - \hat{y}_{i})^{2} + \lambda \sum_{j=1}^{p}\beta_{j}^{2}$$

    - 뒷부분은 generalization accuracy로써 parameter lambda를 조절하여 tradeoff를 조절한다.

    - 아래의 그림에서 회색 원 바깥으로 나가지 못하도록 막는 역할을 하는 것이다.

    - 규제 파라미터 lambda값이 커질수록 패널티 비용이 증가하여 회색공이 작아진다.

$$\hat{\beta}^{ridge} = (X^{T}X + \lambda I_{p})^{-1}X^{T}y$$

 

3) Lasso; least absolute shrinkage and selection operator (L1-norm regularization)

    - 변수 선택 가능하며 회귀 계수 beta의 L1-norm을 제한 (beta의 절대값의 합)

$$L(\beta) = min \sum_{i=1} (y_{i} - \hat{y}_{i})^{2} + \lambda \sum_{j=1}^{p}|\beta_{j}|$$

    - 아래의 그림에서 볼 수 있듯이 해당 지점에서 특정 변수의 계수 값은 0이다. 따라서 해당 변수는 예측에 아무런 영향을 끼치지 못한다는 말이다. 이는 중요하지 않은 변수라고 할 수 있다. (변수 선택 가능)

    - L1-norm은 미분이 불가능하여 ridge와 달리 closed form solution을 구할 수 없다.

Ridge (L2) Lasso (L1)
변수 선택 불가능 변수 선택 가능
Closed form solution 존재 (미분 가능) Closed form solution 존재 x (numerical optimization 이용)
변수 간 상관관계가 높은 상황에서 좋은 성능 변수 간 상관관계가 높을 때 ridge에 비해 성능 저하
크기가 큰 변수를 우선적으로 줄이는 경향이 있음  

 

4) Elastic Net

    - Ridge + Lasso (L1 and L2 regularization)

    - ridge는 가중치가 0이 안되기 때문에 변수가 많으면 여전히 복잡하고 lasso는 정보의 손실로 인해 성능이 낮아질 수도 있다. 이를 해결하기 위해 사용한다.

    - 상관관계가 큰 변수를 동시에 선택/배제하는 특성을 지니고 있다.

$$\hat{\beta}^{enet}= argmin(\sum_{i=1}^{n}(y_{i}-x_{i}\beta^{2})+ \lambda_{1} \sum_{j=1}^{p}|\beta_{j}|+ \lambda_{2} \sum_{j=1}^{p}\beta_{j}^{2})$$

 

코드 예시

# Ridge regression
from sklearn.linear_model import Ridge
rid = Ridge(alpha = 0.05, normalize = True)
rid.fit(x_train, y_train)

# Lasso regression
from sklearn.linear_model import Lasso
ls = Lasso(alpha = 0.3, normalize = True)
ls.fit(x_train, y_train)

# Elastic Net regression
from sklearn.linear_model import ElasticNet
# alpha = a + b -> a : L1, b : L2
EN = ElasticNet(alpha = 1, l1_ratio = 0.5, normalize = False)
EN.fit(x_train, y_train)

# Use L1, L2, ElasticNet for regression algorithm
from sklearn.linear_model import LogisticRegression
# penalty default : l2 (l1, ElasticNet available)
# C : inverse of regularization
lr = LogisticRegression(solver = 'liblinear', 
			multi_class = 'auto',
                        penalty = 'l1',
                        C=1.0,
                        random_state = 42)
lr.fit(X_train_std, y_train)

1) 가중치 변화 예시


참고

www.youtube.com/channel/UCueLU1pCvFlM8Y8sth7a6RQ

머신러닝 교과서 (길벗)

rasbt.github.io/mlxtend/user_guide/general_concepts/regularization-linear/

 

 

'AI > Machine Learning' 카테고리의 다른 글

Validation (Cross-val, learning-curve, GridSearch)  (0) 2021.02.23
Model pipeline  (0) 2021.02.22
Random Forest  (0) 2021.02.19
Support Vector Machine; SVM  (0) 2021.02.18
Overfitting (과적합)  (0) 2021.02.17