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: Categorical Feature Support in Gradient Boosting Combine predictors using stacking Time-related feature e...
交差検証を行うためのコード
コードは以下のようになります。
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のハイパーパラメータサーチを行う方法の紹介となります。
コメント
[…] Optuna+sklearnを用いたk分割交差検証で、LightGBMのハイパーパラメータ調整をしてみるOptuna+sklearnを用いたk分割交差検証で、LightGBMのハイパーパラメータ調整をした内容の紹介ですkiseno-log.com2 […]