L1 규제와 L2 규제는 머신러닝 모델의 복잡성을 제어하기 위한 정규화(regularization) 기법 중 두 가지 주요한 방법입니다. 이 두 규제 방법은 모델의 가중치(weight)를 제한하거나 조절하여 과적합을 방지하고 모델의 일반화 성능을 향상시키는 역할을 합니다.
1. L1 규제 (Lasso Regularization)
L1 규제는 모델의 손실 함수에 가중치의 절댓값에 비례하는 항을 추가하여 모델의 가중치를 작게 유지하거나 0으로 만드는 방식입니다. L1 규제는 특정 가중치들을 완전히 제거하거나 sparse한 모델을 만드는데 효과적입니다. 이를 통해 모델이 불필요한 특성을 무시하고 중요한 특성에 집중할 수 있게 됩니다.
수식적으로는 L1 규제는 다음과 같이 표현됩니다:
여기서 λ는 규제 강도를 나타내며, 가중치 wi의 절댓값의 합을 최소화하는 방향으로 모델을 조정합니다.
가중치 wi의 절댓값의 합을 최소화하는 것은 L1 규제(Lasso Regularization)의 특징 중 하나입니다. 이러한 방식으로 모델을 조정하는 이유는 다음과 같습니다:
특성 선택 (Feature Selection): L1 규제는 가중치의 절댓값을 최소화하는 것으로, 이로 인해 일부 가중치가 0이 되거나 매우 작아지는 효과가 발생합니다. 따라서 L1 규제는 모델이 불필요한 특성을 무시하고 중요한 특성들에 집중하도록 유도합니다. 이는 모델의 복잡성을 낮추고, 과적합을 방지하며, 해석 가능한 모델을 만드는 데 도움이 될 수 있습니다.
해석 가능성과 모델 단순화: L1 규제는 모델의 가중치를 최소화하면서 일부 가중치를 0으로 만드는 경향이 있습니다. 이는 모델의 복잡성을 줄이고 모델의 해석 가능성을 높일 수 있습니다. 불필요한 특성이 제거되므로 모델의 설명력이 높아질 수 있습니다.
다중공선성 제거: L1 규제는 서로 상관관계가 높은 특성들 중에서 중요한 특성 하나를 선택하고 나머지는 무시하게 됩니다. 이로 인해 다중공선성(multicollinearity) 문제를 완화시킬 수 있습니다.
모델의 일반화 능력 향상: L1 규제는 모델의 일반화 능력을 향상시키는데 도움을 줄 수 있습니다. 가중치의 절댓값을 제한하므로 모델이 훈련 데이터의 잡음에 과도하게 적합되는 것을 방지하고, 새로운 데이터에 대한 예측 능력을 개선할 수 있습니다.
L1 규제의 특성 중 하나인 이러한 효과들은 모델의 성능을 개선하고 모델이 실제 데이터에서 더 잘 작동하도록 돕습니다. 하지만 L1 규제 역시 데이터와 문제에 따라서 적합하지 않을 수 있으며, 적절한 규제 강도나 다른 규제 방법과 함께 고려해야 합니다.
2. L2 규제 (Ridge Regularization)
L2 규제는 모델의 손실 함수에 가중치의 제곱에 비례하는 항을 추가하여 모델의 가중치를 작게 유지하는 방식입니다. L2 규제는 모든 가중치가 조금씩 감소되는 효과를 가지며, 이는 모델의 파라미터들을 전반적으로 축소시킵니다.
수식적으로는 L2 규제는 다음과 같이 표현됩니다:
여기서 λ는 규제 강도를 나타내며, 가중치 wi 의 제곱의 합을 최소화하는 방향으로 모델을 조정합니다.
두 규제 방법 모두 λ 값의 조절을 통해 규제의 강도를 조정할 수 있습니다. 작은 λ 값은 규제 효과를 약하게 하며, 클수록 규제 효과가 강해집니다.
어떤 규제 방법을 선택할지는 데이터와 모델의 특성에 따라 달라집니다. L1 규제는 특성 선택에 효과적일 수 있으며, L2 규제는 파라미터들을 더 안정적으로 만드는 데 도움이 될 수 있습니다. 또한 두 규제를 함께 사용하는 Elastic Net 규제도 존재합니다.
해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.
'AI > Machine-Learning' 카테고리의 다른 글
[sklearn] 모델 성능 평가(정확도, f1) (0) | 2023.08.30 |
---|---|
[sklearn] GridSearchCV - 파라미터 튜닝 (0) | 2023.08.30 |
[sklearn] LogisticRegression (0) | 2023.08.29 |
Logit과 Sigmoid함수와 로지스틱회귀 (0) | 2023.08.29 |
[sklearn] make_pipeline() & make_column_transformer() (0) | 2023.08.29 |