L1 Norm : 미분시 기울기가 0이 되므로
정의
- L1 Norm은 벡터의 각 원소들의 절댓값 합으로 계산됩니다.
특징
- 희소성(Sparsity):
- 벡터에서 많은 원소가 0인 경우를 선호합니다.
- 값이 작은 원소를 완전히 0으로 만드는 경향이 있어, 특성 선택(feature selection)에 유리합니다.
- 머신러닝에서 Lasso Regression(L1 규제)에서 사용됩니다.
- 기하학적 의미:
- L1 Norm은 직선 공간(맨해튼 거리, Manhattan Distance)에서의 거리로 해석됩니다.
- 사용 사례:
- 데이터가 희소하거나, 희소성을 유지하고 싶을 때 사용됩니다.
- 예: 텍스트 분석, 이미지 처리 등.
import numpy as np
# 데이터 정의
x1 = np.array([1, 2, 3]) # 단일 특성 값
y = np.array([3, 5, 7]) # 목표값
w1 = 1.0 # 초기 가중치
lmbda = 0.5 # 정규화 강도
# 손실 함수 계산
def loss(w1, x1, y, lmbda):
residuals = y - w1 * x1
return np.sum(residuals**2) + lmbda * abs(w1)
# 손실 함수 미분
def loss_gradient(w1, x1, y, lmbda):
residuals = y - w1 * x1
grad = -2 * np.sum(residuals * x1)
if w1 > 0:
grad += lmbda
elif w1 < 0:
grad -= lmbda
return grad
# 초기 손실과 미분 계산
initial_loss = loss(w1, x1, y, lmbda)
gradient = loss_gradient(w1, x1, y, lmbda)
initial_loss, gradient
# 학습률 정의
learning_rate = 0.01
# 업데이트 과정
num_iterations = 10 # 예제 시뮬레이션 반복 횟수
w1_values = [w1] # 가중치 추적
loss_values = [initial_loss] # 손실 값 추적
for _ in range(num_iterations):
# 기울기 계산
grad = loss_gradient(w1, x1, y, lmbda)
# 가중치 업데이트
w1 -= learning_rate * grad
# 손실 계산
current_loss = loss(w1, x1, y, lmbda)
# 값 저장
w1_values.append(w1)
loss_values.append(current_loss)
w1_values, loss_values
L2 Norm
정의
- L2 Norm은 벡터의 각 원소들의 제곱 합의 제곱근으로 계산됩니다.
특징
- 부드러운 변화(Smoothness):
- 벡터의 원소들을 0에 가깝게 줄이지만, 완전히 0으로 만들지는 않습니다.
- 값이 큰 원소를 더 강하게 억제하는 경향이 있습니다.
- 머신러닝에서 Ridge Regression(L2 규제)에서 사용됩니다.
- 기하학적 의미:
- L2 Norm은 유클리드 거리(Euclidean Distance)로 해석됩니다.
- 점과 점 사이의 직선 거리를 측정합니다.
- 사용 사례:
- 데이터가 희소하지 않고, 모든 피처가 모델에 기여할 가능성이 있을 때 사용됩니다.
- 예: 회귀 분석, 신경망 가중치 정규화 등.
비교
특징 | L1 Norm | L2 Norm |
계산 방식 | 각 원소의 절댓값 합 | 각 원소의 제곱 합의 제곱근 |
기하학적 의미 | 맨해튼 거리 (Manhattan Distance) | 유클리드 거리 (Euclidean Distance) |
희소성 유지 | 희소성을 더 잘 유지 | 희소성 유지가 덜함 |
규제의 효과 | 일부 특성을 완전히 0으로 만듦 | 특성을 0에 가깝게 줄임 |
머신러닝 응용 | Lasso Regression, 희소 모델 | Ridge Regression, 신경망 정규화 |
선호 상황 | 희소 데이터나 특성 선택이 필요한 경우 | 모든 특성을 고려해야 할 경우 |
결론
- L1 Norm은 특성을 줄이거나 희소성을 강조하고 싶을 때 유용하며,
L2 Norm은 모든 특성을 부드럽게 규제하며 안정적인 모델링에 적합합니다. - 목적에 따라 적합한 Norm을 선택하여 데이터 전처리나 정규화에 활용하면 됩니다.
Lasso Regression과 Ridge Regression은 모두 선형 회귀 모델을 기반으로 한 정규화(regularization) 기법으로, 모델이 과적합(overfitting) 되는 것을 방지하고 더 일반화된 성능을 제공하는 방법입니다. 이 두 기법은 회귀 분석에서 중요한 역할을 하며, 각각 L1 정규화와 L2 정규화를 사용합니다.
1. Lasso Regression (Least Absolute Shrinkage and Selection Operator)
- Lasso는 L1 정규화를 사용한 회귀 기법입니다. L1 정규화는 모델의 회귀 계수 중 일부를 0으로 만들 수 있게 해줍니다.
- Lasso는 변수 선택(variable selection)을 도와주는 특징이 있습니다. 즉, 불필요한 변수의 회귀 계수를 0으로 만들어서 해당 변수를 제외하는 효과가 있습니다.
- 수학적으로 Lasso의 비용 함수는 다음과 같습니다.
- 장점: Lasso는 변수 선택을 통해 모델의 단순화가 가능하고, 중요한 변수만 남기게 됩니다.
- 단점: λ값이 너무 크면 과소적합(underfitting)이 발생할 수 있습니다.
2. Ridge Regression
- Ridge는 L2 정규화를 사용한 회귀 기법입니다. L2 정규화는 회귀 계수들이 커지는 것을 방지하지만, 계수를 0으로 만드는 대신 계수들의 크기를 줄이는 방식입니다.
- Ridge 회귀는 모든 변수를 포함시켜서, 각 변수의 영향력을 균형 있게 반영합니다.
- 수학적으로 Ridge의 비용 함수는 다음과 같습니다.
- 장점: Ridge는 모든 변수에 대해 회귀 계수를 조금씩 축소시켜서 모델의 복잡도를 줄이고, 과적합을 방지합니다.
- 단점: Lasso와 달리 불필요한 변수의 계수를 0으로 만들지 않기 때문에, 모델이 좀 더 복잡해질 수 있습니다.
차이점
- Lasso는 불필요한 변수의 계수를 0으로 만들어서 변수 선택을 수행하는 반면, Ridge는 모든 변수에 대해 계수를 축소하지만 0으로 만들지 않습니다.
- Lasso는 변수 선택에 유리하고, Ridge는 모든 변수의 영향을 균형 있게 반영하는 데 유리합니다.
사용 예
- Lasso는 변수 선택이 중요한 경우, 즉 변수의 개수가 많고 중요한 변수만 선택하려는 경우에 유용합니다.
- Ridge는 변수 간의 상관관계가 높거나 모든 변수를 고려하고 싶을 때 유리합니다.
'코딩관련 개인 학습 및 기록 > 머신러닝, 딥러닝' 카테고리의 다른 글
R2 Score, SST, SSR, SSE (0) | 2024.12.24 |
---|---|
MAE, MSE, RMSE (0) | 2024.12.23 |
단일회귀, 다중회귀, 다항회귀 (0) | 2024.12.23 |
Min-max normalization, Robust normalization, Standardization (0) | 2024.12.23 |
Time-series cross-validation (0) | 2024.12.23 |