Optuna+sklearnを用いたk分割交差検証で、LightGBMのハイパーパラメータ調整をしてみる

Source Code Software Computer機械学習

sklearnとOptunaとによりk分割交差検証を行い、LightGBMのハイパーパラメータサーチを行う方法についてです。

2020/6/6追記

Optunaのバージョンアップ(1.5.0)に伴い、LightGBM専用のクロスバリデーションの機能が実装されたようです。その使用方法については、以下を参照ください。

以下は、Optuna 1.5.0以前に検討した内容です。

はじめに

OptunaによるLightGBMの導入や基本的な動かし方は、以前の記事を参照ください。

交差検証に使用する関数

今回はscikit-learnのkFoldおよびcross_validateを使用します。

sklearn.model_selection.KFold
Examples using sklearn.model_selection.KFold: Feature agglomeration vs. univariate selection Comparing Random Forests and Histogram Gradient Boosting models Gra...
sklearn.model_selection.cross_validate
Examples using sklearn.model_selection.cross_validate: Release Highlights for scikit-learn 1.4 Categorical Feature Support in Gradient Boosting Combine predicto...

交差検証を行うためのコード

コードは以下のようになります。

1行目のKFoldで、データをn_splitsで指定したfold数に分割します。

2行目の、cross_validateで、交差検証を行っています。

cross_validate中のscoringで、評価を行うための指標を設定します。

kf = KFold(n_splits=3, shuffle=True, random_state=0)
scores = cross_validate(model, X=X_train, y=y_train,scoring='r2',cv=kf) 
#各foldの評価結果が格納されているため、平均化した値をOptunaに返す。
return scores['test_score'].mean()

評価指標の一覧

3.3. Metrics and scoring: quantifying the quality of predictions
There are 3 different APIs for evaluating the quality of a model’s predictions: Estimator score method: Estimators have a score method providing a default evalu...

全体コード例

以下に、k-fold交差検定とOptunaの組み合わせでLightGBMのハイパーパラメータサーチ行った一連の流れのコードについて記載します。

以上が、 k-fold交差検証とOptunaの組み合わせによりLightGBMのハイパーパラメータサーチを行う方法の紹介となります。

コメント

  1. […] Optuna+sklearnを用いたk分割交差検証で、LightGBMのハイパーパラメータ調整をしてみるOptuna+sklearnを用いたk分割交差検証で、LightGBMのハイパーパラメータ調整をした内容の紹介ですkiseno-log.com2 […]

タイトルとURLをコピーしました