Optuna

Published by onesixx on

모델의 성능을 개선하기 위해 주로 사용하는 방법은 다음과 같습니다. 
– 학습 데이터 추가
– 딥러닝 네크워크 개선
– 하이퍼 파라미터 탐색

하이퍼 파라미터

모델 학습과정을 제어하기 위해 사용하는 파라미터
학습 과정 전에 미리 설정 (예, learning rate, bact size, optimizer …)

하이퍼 파라미터는 모델의 성능에 직접적인 영향을 주기 때문에, 주어진 데이터와 알고리즘으로 최상의 결과를 내는 하이퍼 파라미터를 탐색하는 일은 매우 중요합니다.

https://dacon.io/en/codeshare/4646

Random Search, Grid Search, Bayesian Optimization, Optuna

하이퍼 파라미터 최적화를 자동화해주는 프레임워크

!pip install optuna

import optuna

import sklearn
import sklearn.datasets
import sklearn.ensemble
import sklearn.model_selection
import sklearn.svm


def objective(trial):
    iris = sklearn.datasets.load_iris()
    x, y = iris.data, iris.target

    classifier_name = trial.suggest_categorical('classifier', ['SVC', 'RandomForest'])

    ## 분류기에 따라 다르게 하이퍼 파라미터를 지정할 수 있습니다.
    if classifier_name == 'SVC':
        svc_c = trial.suggest_loguniform('svc_c', 1e-10, 1e10)
        classifier_obj = sklearn.svm.SVC(C=svc_c, gamma='auto')
    else:
        rf_max_depth = int(trial.suggest_loguniform('rf_max_depth', 2, 32))
        classifier_obj = sklearn.ensemble.RandomForestClassifier(max_depth=rf_max_depth, n_estimators=10)
    
    accuracy = cross_val_score(classifier_obj, x, y, cv = 4).mean()
    return accuracy


study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=100)
print(study.best_trial.params)


model = sklearn.svm.SVC(C = 5.314343000427283)
model.fit(X_Train,Y_Train)

optunapredict = model.predict(X_Test)
print(classification_report(Y_Test, optunapredict))
print("\
\bOptuna : ", accuracy_score(Y_Test, optunapredict))
Categories: DeepLearning

onesixx

Blog Owner

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x