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 교차검증을 수행합니다.
= 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

+ Recent posts