Optuna
모델의 성능을 개선하기 위해 주로 사용하는 방법은 다음과 같습니다.
– 학습 데이터 추가
– 딥러닝 네크워크 개선
– 하이퍼 파라미터 탐색
하이퍼 파라미터
모델 학습과정을 제어하기 위해 사용하는 파라미터
학습 과정 전에 미리 설정 (예, 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))