가중치 규제(L1, L2 규제)는 머신 러닝 모델에서 과적합을 방지하기 위해 가중치를 제한하는 방법이다. 주로 선형 회귀나 로지스틱 회귀와 같은 선형 모델에서 사용된다. 이 두가지 규제는 모델을 정규화하는 방법이다.
정규화에 대해서는 다음 포스팅에서 올릴 예정이다. -> 표준화&정규화
규제 유형: L1 규제 (가중치의 절대값에 규제를 추가)
목적 함수: 비용 함수에 L1 norm을 추가하여 최적화
특징:
데이터 로드, 데이터 전처리, 데이터 분할 등은 했다고 가정하고 라쏘의 사용방법에 대해 살펴보자.
from sklearn.linear_model import Lasso
# L1 (Lasso) 규제
lasso = Lasso(alpha=0.1) # alpha는 규제 강도를 조절하는 매개변수
lasso.fit(X_train, y_train)
lasso_pred = lasso.predict(X_test)
sklearn 라이브러리를 활용하여 라쏘 규제를 적용해보았다.
규제 유형: L2 규제 (가중치의 제곱에 규제를 추가)
목적 함수: 비용 함수에 L2 norm을 추가하여 최적화
특징:
데이터 로드, 데이터 전처리, 데이터 분할 등은 했다고 가정하고 라쏘의 사용방법에 대해 살펴보자.
from sklearn.linear_model import Ridge
# L2 (Ridge) 규제
ridge = Ridge(alpha=0.1) # alpha는 규제 강도를 조절하는 매개변수
ridge.fit(X_train, y_train)
ridge_pred = ridge.predict(X_test)
sklearn 라이브러리를 활용하여 릿지 규제를 적용해보았다.
라쏘(Lasso)와 릿지(Ridge)는 회귀 분석에서 사용되는 두 가지 주요한 규제(정규화) 기법이다. 이들은 모두 모델의 과적합을 방지하고 일반화 성능을 향상시키기 위해 사용된다. 각각의 방법은 모델의 복잡도를 조절하기 위해 가중치(w)에 페널티를 부여하는 방식으로 작동한다.
라쏘는 L1 규제, 릿지는 L2규제를 사용한다. 이 둘의 주요한 차이점은 가중치에 있다고 생각한다. L1은 가중치를 0까지 만들 수 있는 반면, L2는 가중치를 0에 근사한 값으로 만들지 완전히 0으로 만들진 않는다.
또한, 데이터의 유형에 따라 어떤 규제를 쓸지 달라질 수 있으니 더 적합한 규제를 쓰는 것이 좋을 것이라고 생각한다.
참고로, L1과 L2를 같이 쓰는 Elastic Net이라는 방법도 있다.