대학원 일기

Regularization: L1(Lasso), L2(Ridge) regularization 본문

AI

Regularization: L1(Lasso), L2(Ridge) regularization

대학원생(노예) 2023. 11. 20. 01:38

Regularization(규제화)

정규화, 규제화 또는 정직화라고 불리며, 오버피팅(overfitting)을 해결하기 위한 방법 중의 하나로 L1, L2 Regularization, Dropout, Batch normalization 등이 있다. 오버피팅은 한국어로 과적합이라고 하며, train set은 매우 잘 맞히지만, validation/test set은 맞히지 못하는 현상을 말한다. 더 좋은 결과를 얻기 위해서는 새로운 시험, 즉 test set에서도 잘 맞혀야하므로 regularization 기법으로 모델에 제약 조건을 걸어 모델의 train loss를 증가시키는 역할을 한다. 그래서 train loss는 약간 증가하지만 결과적으로, validation loss나 최종 test loss를 감소시키려는 목적을 가진다.

L1 regularization (Lasso)의 정의

L1 regularization은 아래와 같은 식으로 정의된다. (: 데이터의 개수, : 데이터의 차원(feature의 개수))

βlasso:=argminβ12Ni=1N(yiβ0j=1Dxijβj)2+λj=1D|βj|

위 식에서 중요한 부분은$ \lambda\sum_{j=1}^{D}|\beta_{j}|$ 이다.

λ는 L1 regularization의 강도를 나타내는 하이퍼 파라미터이고, 이 값이 클수록 regularization 효과가 강해진다. βj는 모델의 가중치이다.

이 부분은 L1 norm에 해당하는 부분으로 L1 regularization이라고 불리는 이유이며, L2 regularization과 차이가 나는 부분이다. 

L1 regularization 특징

  • 희소성(Sparsity): L1 regularization 일부 가중치를 정확하게 0으로 만들 수 있습니다. 이는 피처 선택(feature selection)과 관련이 있어서, 모델에서 불필요한 특성들을 제거하고 모델을 더 간단하게 만들 수 있습니다.
  • 로버스트한 모델: 이상치에 대해 더 강건한 모델을 만들 수 있습니다. 이는 가중치의 절대값을 사용하기 때문에 이상치에 큰 영향을 받지 않습니다.
  • 선형 조합을 통한 특성 선택: L1 regularization 특성 간 상관 관계가 있을 때 하나의 특성을 선택하고 다른 특성들을 제거함으로써 선형 조합을 통한 특성 선택을 수행할 수 있습니다.

L1 regularization은 주로 선형 모델에서 사용된다. 

L1 regularization Code 

Click
더보기

아이리스 데이터를 불러온다.

from sklearn.datasets import load_iris
import pandas as pd 
import matplotlib.pyplot as plt

iris = load_iris()
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
target_df = pd.DataFrame(data=iris.target, columns=['species'])

def converter(species):
    if species == 0:
        return 'setosa'
    elif species == 1:
        return 'versicolor'
    else:
        return 'virginica'

target_df['species'] = target_df['species'].apply(converter)

iris_df = pd.concat([iris_df, target_df], axis=1)
iris_df.head()

 

X = [iris_df['petal length (cm)'][a] for a in iris_df.index if iris_df['species'][a]=='virginica']
Y = [iris_df['sepal length (cm)'][a] for a in iris_df.index if iris_df['species'][a]=='virginica']

X = np.array(X)
Y = np.array(Y)

plt.figure(figsize=(5,5))
plt.scatter(X,Y)
plt.xlabel('petal length (cm)')
plt.ylabel('sepal length (cm)')
plt.grid()
plt.show()
from sklearn.linear_model import Lasso

L1 = Lasso()
L1.fit(X.reshape(-1,1), Y)
a, b = L1.coef_, L1.intercept_
print("기울기 : %0.2f, 절편 : %0.2f" %(a,b))

plt.figure(figsize=(5,5))
plt.scatter(X,Y)
plt.plot(X,L1.predict(X.reshape(-1,1)),'-b')
plt.xlabel('petal length (cm)')
plt.ylabel('sepal length (cm)')
plt.grid()
plt.show()

출력 결과, 기울기는 0.00, 절편은 6.59가 나온다. 데이터의 feature의 개수가 2개 밖에 없어 기울기가 0으로 나오는 듯하다.

 

L2 regularization (Ridge)의 정의

L2 regularization 은 아래와 같은 식으로 정의된다.

βlasso:=argminβ12Ni=1N(yiβ0j=1Dxijβj)2+λj=1Dβj2

L2 규제화가 L1 규제화와의 차이점은 λj=1Dβj2이 부분으로 L1에서는 β에 절대값을 취하지만, L2는 제곱을 하고 있다. 즉, L2 규제화에서는 λj=1Dβj2이 부분이 핵심이다. 

L2 regularization 특징

  • 가중치 감소(Weight Decay): L2 정규화는 가중치를 감소시켜 모델의 복잡성을 줄이는 효과가 있습니다. 이는 가중치의 크기가 작아지게 되므로, 모델이 더 일반화되고 과적합을 방지할 수 있습니다.
  • 모든 특성에 영향을 미침: L2 정규화는 모든 가중치에 대해 제곱을 사용하기 때문에 특정 특성을 무시하는 효과가 없습니다. 모든 특성이 일정한 정도로 모델에 영향을 미치게 됩니다.
  • 로스 함수의 등고선 모양: L2 정규화를 추가하면 로스 함수의 등고선이 원형으로 변하게 되는 특징이 있습니다.

L1 / L2 regularization의 차이점

https://en.wikipedia.org/wiki/Lasso_(statistics)

  1. 적용하는 패널티의 형태:
    • L1 정규화: 가중치의 절대값에 비례하는 패널티를 추가합니다. 이는 몇몇 가중치를 정확하게 0으로 만들어 희소한 모델을 만들 수 있습니다.
    • L2 정규화: 가중치의 제곱에 비례하는 패널티를 추가합니다. 이는 가중치를 작게 유지하면서 0에 가깝게 만듭니다.
  2. 희소성(Sparsity):
    • L1 정규화: 희소성을 유도하여 일부 가중치를 정확하게 0으로 만들 수 있습니다. 이는 특성 선택(feature selection)의 효과를 가지며, 모델을 더 간단하게 만들 수 있습니다.
    • L2 정규화: 특별한 노력 없이는 일반적으로 희소성을 유도하지 않습니다. 대부분의 가중치가 0이 아니라 작은 값으로 유지됩니다.
  3. 로버스트성(Robustness):
    • L1 정규화: 이상치(outliers)에 대해 더 강건합니다. 이는 가중치의 절대값을 사용하므로, 이상치에 큰 영향을 받지 않습니다.
    • L2 정규화: 이상치에 민감할 수 있습니다. 이는 가중치의 제곱을 사용하므로, 큰 가중치에 민감해질 수 있습니다.
  4. 특성 간 상관 관계:
    • L1 정규화: 특성 간 상관 관계가 있을 때 하나의 특성을 선택하고 나머지를 제거하여 선형 조합을 통한 특성 선택을 수행할 수 있습니다.
    • L2 정규화: 모든 특성이 조금씩 영향을 미치게 되어 특성 간 상관 관계를 강조하지 않습니다.
  5. 등고선 모양:
    • L1 정규화: 등고선이 각 축에서 꼭지점 형태를 띕니다.
    • L2 정규화: 등고선이 원형을 띕니다.

 

'AI' 카테고리의 다른 글

성능 평가(Evaluation Metric)  (0) 2023.11.12