반응형
회귀 분석 모델 (Regression Models)
1) Ridge Regression (릿지 회귀)
Ridge 회귀는 L2 정규화를 사용하여 과적합을 방지하는 회귀 분석 기법으로
선형 계수를 작게 만들어서 과대적합을 완화, 비교적 효과가 좋다.
좀 더 쉽게 말하면,
모델의 복잡도를 줄이기 위해 가중치에 대한 패널티를 부여하는 것이다. (특히 다중 공선성 문제를 해결할 때 유용)
여기서 L2 정규화는 가중치의 제곱합을 최소화하는 방식이다. 자세한건 다음에 추가로 설명하겠다.
from sklearn.linear_model import Ridge
ridge = Ridge()
ridge.fit(x, y)
print(ridge.score(x, y))
릿지와 라쏘모델 사용할 때 규제의 양을 임의로 조절 가능하다.
alpha는 하이퍼파라미터 값으로 사용자가 지정 해야하는 변수다.
alpha의 값의 크면 규제 강도가 세지므로 계수의 값을 줄이고 조금 더 과소적합이 되도록 유도한다.
alpha의 값이 적으면 계수를 줄이는 역활이 줄어 들고 선형 회귀 모델과 유사하며 과대 적합이 될 가능성이 크다.
- 적절한 랏지 alpha 찾기
- alpha에 대한 $R^2$ 값의 그래프를 그려 보면 훈련, 테스트 각각의 값이 가장 가까운 지점이 최적의 alpha 값을 가진다.
import matplotlib.pyplot as plt
from sklearn.linear_model import Ridge
train = []
target = []
# 0.001 에서 100까지 10배씩 늘려가면서 회귀 모델을 훈련한 다음 각 점수를 저장
alpha = [0.001, 0.01, 0.1, 1, 10, 100]
for a in alpha:
ridge = Ridge(alpha=a)
ridge.fit(x, y)
train.append(ridge.score(x,y)) # 학습 데이터
target.append(ridge.score(x_,y_)) # 검증 데이터
plt.plot(np.log10(alpha), train) # 0.001 -> -3 , 0.01 -> -2 0.1 -> -1
plt.plot(np.log10(alpha), target)
plt.xlabel('Alpha')
plt.ylabel('R2-Score')
# 두 그래프가 가장 근접한 위치의 값을 채택
2) Lasso Regression (라쏘 회귀)
Lasso 회귀는 L1 정규화를 사용하여 변수 선택을 유도하는 기법으로
가중치의 절댓값 합에 패널티를 주어 일부 가중치가 0이 되도록 만들어, 불필요한 변수를 제거한다.
이는 모델을 더 간단하게 만들어 과적합을 방지하고 해석을 편하게 만들어 준다.
유용한 특성을 골라내는 용도로 사용가능 하다.
최적의 모델을 찾기 위해 좌표축을 따라 최적화를 수행하는 좌표 하강법을 사용한다.
from sklearn.linear_model import Lasso
lasso = Lasso()
lasso.fit(x,y)
print(lasso.score(x,y))
- 적절한 라쏘 alpha 찾기
import matplotlib.pyplot as plt
from sklearn.linear_model import Lasso
train = []
target = []
alpha = [0.001, 0.01, 0.1, 1, 10, 100]
for a in alpha:
lasso = Lasso(alpha=a)
lasso.fit(x, y)
train.append(lasso.score(x,y)) # 학습 데이터
target.append(lasso.score(x_,y_)) # 검증 데이터
plt.plot(np.log10(alpha), train) # 0.001 -> -3 , 0.01 -> -2 , 0.1 -> -1 , 1 -> 10
plt.plot(np.log10(alpha), target)
plt.xlabel('Alpha')
plt.ylabel('R2-Score')
정리
- 회귀 분석 모델: 과적합을 방지하고 모델 성능을 향상시키는 기술
- Ridge: L2 정규화를 사용해 과적합을 방지
- Lasso: L1 정규화를 사용해 변수를 선택하고, 모델을 단순화
'AI' 카테고리의 다른 글
3탄: 차원의 저주 해결법! 고차원 문제를 극복하는 방법 (0) | 2025.02.28 |
---|---|
2탄: 차원의 저주란? 고차원 데이터에서 발생하는 문제 (0) | 2025.02.27 |
1탄 : 차원이란 무엇인가? 차원의 저주를 보기전 차원의 개념부터 이해하기 (0) | 2025.02.27 |
[AI] Generalization / Overfitting / Underfitting (7) | 2025.01.09 |
[AI] machine learning_오차 측정 지표 (0) | 2025.01.08 |