개발하는 뚱이
💣릿지 & 라쏘 회귀란??(Ei : Ez Ai) 본문
규제란??
모델이 과적합이 일어나지 않게 가중치를 제한하여 과적합을 완화하는 방법
과적합(Overfitting)
과적합이란 모델이 학습 데이터에 너무 맞춰서 학습한 상태를 말합니다.
이때 학습 데이터에서는 성능이 뛰어나지만 새로운 데이터에 대해서 성능이 떨어지는 문제가 생기는 것을 말합니다.
다중 회귀를 하다 보면 독립변수(특성)의 개수가 엄청 많은 경우가 있는데, 이럴 때 모델은 특성들 간의 관계를 학습하기 어려워지고, 유의미한 데이터(노이즈)를 학습하면서 과적합 문제가 발생 합니다.
이제 이러한 문제를 해결하기 위한 방법을 알아봅시다.
릿지 & 라쏘 회귀는 선형회귀의 한 종류입니다.
선형 회귀에서 독립 변수의 개수에 따라 단순회귀와 다중 회귀로 나뉩니다.
단순 회귀 : 독립 변수(특성) = 1
다중 회귀 : 독립 변수(특성) >= 2
라쏘 회귀란??
L1-norm을 적용한 선형회귀 모델입니다.
기존의 선형회귀는 손실함수를 통해 가중치와 편향을 찾았습니다.
이제 이러한 선형 회귀에 라쏘를 추가해 제약 조건을 준 것을 말합니다.
라쏘 회귀는 MSE(mean square error:손실함수의 한 종류)가 최소가 되는 가중치와 편향을 찾으면서 가중치의 절댓값의 합이 최소가 되게 한다는 말입니다.
좀 쉽게 이해하자면 가중치를 0으로 만들거나 0에 가깝게 만들어 불필요한 특성을 제거하는 것을 말합니다.
식은 아래와 같습니다.
식이 굉장히 어렵습니다. 그렇기 때문에 자세한 식 설명은 하지 않고 중요한 부분만 3가지만 설명하겠습니다.
- m은 특성의 개수
- α는 패널티의 효과를 조절하는 하이퍼파라미터
- MSE + penalty는 손실함수 뒤에 더해지는 페널티 항
라쏘 회귀는 최종적으로 MSE와 penalty항의 합이 최소가 되는 W와 B를 찾는 것이 목적입니다.
라쏘 회귀의 장점
- 불필요한 특성을 제거할 수 있다. -> 모델의 해석력이 좋아진다!
릿지 회귀란??
릿지 회귀는 L2-norm을 적용한 선형회귀 모델입니다.
릿지 회귀는 라쏘 회귀와 비슷하게 작동하기 때문에 큰 설명은 하지 않겠습니다.
릿지회귀가 라쏘 회귀와 다른점은 가중치를 0으로 만들지 않고 0과 가까운 값으로 만든다는 특징입니다.
라쏘 회귀는 절댓값을 사용하였다면 릿지 회귀는 ^2을 사용하여 규제를 한다는 특징이 있습니다.
릿지 회귀에 대한 설명은 라쏘 회귀와 비슷하기 때문에 자세한 설명을 하지 않았지만 궁금한 점이 있다면 댓글 부탁드립니다.
간단 요약
- 규제 : 가중치를 제한하여 과적합을 완화하는 방법
- 과적합 : 모델이 학습 데이터에 너무 맞춰서 학습한 상태를 말함
- 다중 회귀 : 독립 변수(특성) >= 2
- 라쏘 회귀 : L1-norm을 적용한 선형회귀 모델
- 릿지 회귀 : L2-norm을 적용한 선형회귀 모델
- 릿지 회귀는 특성들이 비슷할 때, 라쏘 회귀는 특성들이 비슷하지 않을 때
코드 구현
from sklearn.linear_model import Ridge, Lasso
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.datasets import make_regression
# 예제 데이터 생성
X, y = make_regression(n_samples=100, n_features=2, noise=0.1, random_state=42)
# 학습용, 테스트용 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 릿지 회귀 모델
ridge = Ridge(alpha=1.0)
ridge.fit(X_train, y_train)
y_pred_ridge = ridge.predict(X_test)
ridge_mse = mean_squared_error(y_test, y_pred_ridge)
print(f"릿지 회귀 MSE: {ridge_mse:.2f}")
# 라쏘 회귀 모델
lasso = Lasso(alpha=0.1)
lasso.fit(X_train, y_train)
y_pred_lasso = lasso.predict(X_test)
lasso_mse = mean_squared_error(y_test, y_pred_lasso)
print(f"라쏘 회귀 MSE: {lasso_mse:.2f}")
이 코드에서 alpha가 하이퍼파라미터로 우리가 직접 입력을 해야 합니다.
코드를 읽어 보면서 흐름을 아는 것이 중요합니다.
이해가 안 되더라도 한 번씩 읽어보는 것을 권장합니다.
언제나 배우며 성장하는 학생입니다.
정리한 것 중 잘못된 거나 추가 사항이 있으시다면 피드백을 남겨주시면 정말 감사하겠습니다.
이메일 : hyohyeonkim08@gmail.com
'Ei(Ez Ai)' 카테고리의 다른 글
🦕SVM이란??(Ei : Ez Ai) (0) | 2024.11.17 |
---|---|
🛬손실함수와 경사하강법이란??(Ei : Ez Ai) (2) | 2024.10.20 |
🌲의사결정 트리란??(Ei : Ez Ai) (6) | 2024.10.05 |
🐍로지스틱 회귀란 무엇일까?? (Ei : Ez Ai) (2) | 2024.10.02 |
🦢선형 회귀란 무엇일까?? (Ei : Ez Ai) (2) | 2024.09.23 |