Optuna【機械学習のパラメータ最適化】

Optunaを使ってハイパーパラメータを調整します。kaggleにまとめました。

www.kaggle.com

Optunaの基本

github.com

optuna.readthedocs.io

公式のチュートリアルは下。

import ...

# Define an objective function to be minimized.
def objective(trial):

    # Invoke suggest methods of a Trial object to generate hyperparameters.
    regressor_name = trial.suggest_categorical('classifier', ['SVR', 'RandomForest'])
    if regressor_name == 'SVR':
        svr_c = trial.suggest_float('svr_c', 1e-10, 1e10, log=True)
        regressor_obj = sklearn.svm.SVR(C=svr_c)
    else:
        rf_max_depth = trial.suggest_int('rf_max_depth', 2, 32)
        regressor_obj = sklearn.ensemble.RandomForestRegressor(max_depth=rf_max_depth)

    X, y = sklearn.datasets.load_boston(return_X_y=True)
    X_train, X_val, y_train, y_val = sklearn.model_selection.train_test_split(X, y, random_state=0)

    regressor_obj.fit(X_train, y_train)
    y_pred = regressor_obj.predict(X_val)

    error = sklearn.metrics.mean_squared_error(y_val, y_pred)

    return error  # An objective value linked with the Trial object.

study = optuna.create_study()  # Create a new study.
study.optimize(objective, n_trials=100)  # Invoke optimization of the objective function.

OptunaでXGBoost, LightGBM

そもそも、XGBoost,LightGBMにはパラメータチューニングの機能があるので、そちらの機能を使用してもよさそうです。

参考にしました

optuna入門 - Qiita

GridSearchCVはもう古い!Optunaでサポートベクターマシンもラクラクチューニング - Qiita

LightGBMをOptunaでパラメータチューニングする - Qiita

XGBoostをOptunaでパラメータチューニングする - INOUE-KOBO.COM

LightGBMのハイパーパラメータチューニング(Optuna)をしてみた - Qiita