-
Hyper-parameter Tuning기계학습이론과실습 2022. 4. 20. 17:50
- Hyper-parameter Tuning은 Model Tuning이라고도 불리며, 사용자가 임의로 설정해줘야 하는 값을 조정하는 것을 의미한다. 이를 위해서는 Validation Dataset을 사용한다.
- 이전에는 데이터를 Train Data와 Test Data로 나눠서 모델을 구축하고 모델의 성능을 평가한 후 가장 성능이 좋은 모델을 선택하였다.
- 이번에는 데이터를 Train Data, Validation Data, Test Data 세 가지로 나눈 후, 검증데이터를 통해 Hyper-parameter의 값을 결정하고, Test Data를 통해 모델의 최종 성능을 평가한다.
- 이때, 모형의 일반화 정도를 높이기 위해서 K-Fold Cross Validation을 사용하기도 한다. 기존의 Train Data를 K개의 Dataset으로 나눈 뒤 K-1개의 Dataset으로 모델을 훈련하고 1개의 Dataset으로 모델의 성능을 평가한다. 모델의 성능을 평가하기 위한 Dataset을 바꾸며 해당 작업을 K번 반복한다. 이후, 모델의 성능에 대한 K개의 지표를 평균낸 값이 해당 K-Fold Cross Validation을 통한 특정 Hyper-parameter의 모델 성능 지표가 된다. 최적의 Hyper-parameter를 해당 방법을 통해 찾은 뒤 Test Data를 통해 모델의 최종 성능을 평가한다.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris_features, iris_labels, test_size = 0.3, random_state=0)from sklearn.linear_model import LogisticRegression
Ir_base = LogisticRegression(penalty='none')
from sklearn.model_selection import cross_val_socre
scores = score_val_score(Ir_base, X_train, y_train, cv=5)
scores.mean()
- 해당 작업을 각 Hyper-parameter 값에 대해서 반복해주면 되지만, 반복작업이 매우 번거로우므로 Gridsearch 방법을 사용한다. Gridsearch 이후, Best Parameters를 사용하여 전체 학습 데이터를 다시 학습하는 것이 더 효과적이다.
lr_model = LogisticRegression(max_iter=10000)
from sklearn.model_selection import GridSearchCV
LR_params = {
'penalty' : ['none', 'l1', 'l2'],
'C': [0.01, 0.05, 0.1, 0.5, 1, 5, 10],
'solver':['saga']
}grid_search = GridSearchCV(lr_model, param_grid=LR_params, cv=5)
grid_search.fit(X_train, y_train)
grid_search.best_params_
best_model = grid_search.best_estimator_
# Best estimator (모형)을 return합니다.
y_preds = best_model.predict(X_test)from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_preds)'기계학습이론과실습' 카테고리의 다른 글
Course Intro (0) 2022.05.04 Naive Bayes (0) 2022.05.03 Document Classification (0) 2022.04.25 Imbalanced Classification (0) 2022.04.25 Logistic Regression (0) 2022.04.18