21년 4월 15일
코드스테이츠 부트캠프 #일차
교차검증(Cross validation)의 문제점
모델을 만들기 위해서 훈련/검증/테스트 세트로 나눠 학습을 진행했는데 이는 hold-out 교차검증이라고 한다.
그런데 데이터가 충분하지 않다거나 검증세트 크기가 충분하지 않으면 예측 성능에 대한 추정이 부정확해질 수 있다. 이외에 다른 문제점들도 있지만 지금까지 배운 내용으로는 이렇게 2가지가 있다.
그렇다면 교차검증의 문제점을 해결하기 위해서는
어떤 학습 모델을 사용해야할까?
어떤 하이퍼파라미터를 사용해야할까?
교차검증을 하기 위해서는 데이터를 k개로 등분해야 하는데 이를 k-fold cross validation(CV)라고 한다.
예를 들어, 3등분으로 나누고 훈련세트 (2/3)과 검증세트 (1/3)로 총 3번 바꾸어가며 검증하는 것을 3-fold CV라고 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
target = 'SalePrice'
features = train.columns.drop([target])
X_train = train[features]
y_train = train[target]
X_test = test[features]
y_test = test[target]
pipe = make_pipeline(
OneHotEncoder(use_cat_names=True),
SimpleImputer(strategy='mean'),
StandardScaler(),
SelectKBest(f_regression, k=20),
Ridge(alpha=1.0)
)
# 3-fold 교차검증을 수행합니다.
k = 3
scores = cross_val_score(pipe, X_train, y_train, cv=k,
scoring='neg_mean_absolute_error')
print(f'MAE ({k} folds):', -scores)
|
cs |
MAE (3 folds): [19912.3716215 23214.74205495 18656.29713167]
하이퍼파라미터 튜닝
최적화(optimization) : 훈련 데이터로 더 좋은 성능을 얻기 위해 모델을 조정하는 과정
일반화(generaliztion) : 학습된 모델이 처음 본 데이터에서 얼마나 좋은 성능을 내는지
이상적인 모델은 과소적합과 과적합 사이에 있는 것이다.
Validation Curve
검증곡선은 훈련/검증데이터에 대해
y축 : 스코어 / x 축 : 하이퍼파라미터 로 그린 그래프이다.
max_depth = 5 부근에서 설정해 주어야 과적합을 막고 일반화 성능을 지킬 수 있다.
Randomized Search CV
하이퍼파라미터의 최적값을 찾을 때 사용하는데 사이킷런에서 튜닝을 도와주는 2가지 툴이 있다.
-GridSearchCV
-RandomziedSearchCV
(hold-out 교차검증을 수행한 경우 훈련/검증 데이터셋에서 최적화된 하이퍼파라미터로 최종 모델을 재학습(refit) 해야한다.)
추천하는 하이퍼파라미터
Random Forest
- class_weight (불균형(imbalanced) 클래스인 경우)
- max_depth (너무 깊어지면 과적합)
- n_estimators (적을경우 과소적합, 높을경우 긴 학습시간)
- min_samples_leaf (과적합일경우 높임)
- max_features (줄일 수록 다양한 트리생성)
Logistic Regression
- C (Inverse of regularization strength)
- class_weight (불균형 클래스인 경우)
- penalty
'개발 관련자료 > ML, DL' 카테고리의 다른 글
L1 regularization, L2 regularization 간단한 개념 (0) | 2021.06.11 |
---|---|
Ridge regression과 Lasso regression 개념 (0) | 2021.06.11 |
ROC Curve / AUC (0) | 2021.05.05 |
Confision Matrix (0) | 2021.05.05 |
Random Forests (0) | 2021.04.25 |