일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- python
- pandas
- python기초
- 데이터 분석
- 크롤링(crawling)
- 데이터
- 파이썬
- DB
- 데이터베이스
- 데이터 가공
- 알고리즘기초
- Database
- Deep Learning
- pythone
- 딥러닝
- 예측
- tensorflow
- 데이터전처리
- SQL예제
- 시각화
- 훈련
- 회귀모델
- keras
- 해석
- 데이터 수집
- 머신러닝
- sklearn
- 정확도
- HeidiSQL
- MariaDB
- Today
- Total
코딩헤딩
[ML(머신러닝)] 다중회귀모델 3 (규제, 릿지, 라쏘) 본문
1. 규제
- 과대 또는 과소 적합중에 주로 과대적합이 발생 했을 때 사용
- 훈련의 정확도가 다소 낮아지는 경향이 있으나, 검증(테스트) 정확도를 높이는 효과가 있음
- 훈련모델을 일반화 하는데 주로 사용되는 방법임
- 규제 개념을 적용한 향상된 모델 : 릿지(Ridge)와 라쏘(Lasso)가 있다.
<규제 순서>
1. 정규화(단위(스케일)를 표준화 하는 방식)
2. 규제가 적용된 모델 훈련/검증
훈련 및 테스트 독립변수 정규화 하기
* 정규화를 위한 라이브러리
from sklearn.preprocessing import StandardScaler
<정규화 순서>
1. 정규화 클래스 생성
2. fit() : 정규화 패턴 찾기
3. transform() : 찾은 패턴으로 정규화 데이터로 변환 (훈련 및 테스트 독립변수 변화)
* 정규화 클래스 생성
ss = StandardScaler()
ss
* 정규화 패턴 찾기
ss.fit(train_poly)
* 찾은 패턴으로 훈련 및 테스트 독립변수 변환 생성하기
train_scaled = ss.transform(train_poly)
test_scaled = ss.transform(test_poly)
print(f"{train_scaled.shape} / {test_scaled.shape}")
릿지(Ridge)모델
* 모델 생성하기
from sklearn.linear_model import Ridge
ridge = Ridge()
ridge
* 모델 훈련시키기
ridge.fit(train_scaled, train_target)
* 훈련 및 검증(테스트) 정확도 확인하기
train_r2 = ridge.score(train_scaled, train_target)
test_r2 = ridge.score(test_scaled, test_target)
train_r2, test_r2
* 예측하기
test_pred = ridge.predict(test_scaled)
* 평가하기(MAE)
mae = mean_absolute_error(test_target, test_pred)
train_r2, test_r2, mae
<해석>
- 과적합 여부를 확인한 결과 과소적합은 발생하지 않았으며, 기존 특성공학을 적용한 우수한 모델보다는
훈련정확도 0.005정도 낮아졌지만, 검증(테스트) 정확도는
0.013 정도 높아졌음
- 또한, 평균절대오차(MAE)도 1g 낮아졌음
- 따라서, 일반화되고, 오차가 적은 Ridge(릿지) 모델은 매우 우수한 모델로 판단.
라쏘(Lasso)
* 사용할 패키지
from sklearn.linear_model import Lasso
* 모델 생성하기
lasso = Lasso()
lasso
* 훈련하기
lasso.fit(train_scaled, train_target)
* 점수 확인
train_r2 = lasso.score(train_scaled, train_target)
test_r2 = lasso.score(test_scaled, test_target)
train_r2, test_r2
* 예측하기
test_pred = lasso.predict(test_scaled)
test_pred
* 평가하기
mae = mean_absolute_error(test_target, test_pred)
mae
<해석>
- 0.0002정도의 과소적합이 있는것으로 보임
- 오차값도 3g정도 작아졌음
- 과소적합이 미세한 차이이기 떄문에 릿지 모델과 비교 했을 떄 나쁜 모델은 아니지만,
사용하기에는 미흡한 부분으로 판단함
<릿지(Ridge) 모델 규제 튜닝하기>
ridge = Ridge(alpha=0.01)
ridge.fit(train_scaled, train_target)
ridge.score(train_scaled, train_target), ridge.score(test_scaled, test_target)
결과 : (0.988739278805747, 0.9851828913418638)
lasso = Lasso(alpha=1)
lasso.fit(train_scaled, train_target)
lasso.score(train_scaled, train_target), lasso.score(test_scaled, test_target)
결과 : (0.9861305259897015, 0.98632202810554)
- alpha : 규제강도 값
- 값의 범위 0.01~ 100 사이의 값
- 값이 작을수록 훈련 정확도는 낮아지면서, 과적합에 도움을 주게 됨
- 값이 커질수록 훈련 정확도는 높아짐, 과적합에는 도움이 되지 않을수도 있음
- 기본값은 = 1
'머신러닝 | 딥러닝' 카테고리의 다른 글
Deep learning[딥러닝] 신경망계층 추가 (1) | 2024.01.03 |
---|---|
Deep learning[딥러닝] 인공신경망 훈련모델 (데이터 전처리, 모델 생성) (0) | 2024.01.03 |
[ML(머신러닝)] 다중회귀모델(Multiple Regression) 2 (1) | 2023.12.30 |
[ML(머신러닝)] 다중회귀모델(Multiple Regression) (0) | 2023.12.29 |
[ML(머신러닝)] KNN 회귀모델 -5 <다항회귀모델(곡선)> (0) | 2023.12.28 |