web-dev-qa-db-ja.com

LightGBMの相互検証

クロスバリデーションに関するLightGBMのドキュメントを読んだ後、このコミュニティが結果のクロスバリデーションとLightGBMを使用した予測の改善に光を当てることを望んでいます。予測を改善するために_lightgbm.cv_からの辞書出力をどのように使用することになっていますか?

例は次のとおりです。以下のコードを使用してcvモデルをトレーニングします。

_cv_mod = lgb.cv(params, 
                d_train, 
                500, 
                nfold = 10, 
                early_stopping_rounds = 25,
                stratified = True)
_

上記のコードの最適な反復で見つかったパラメーターを使用して、出力を予測するにはどうすればよいですか?この場合、_cv_mod_には_lightgbm.train_のような「予測」メソッドがなく、_lightgbm.cv_からの辞書出力は、lightgbm.train.predict(..., pred_parameters = cv_mod)で使用するとエラーをスローします。

重要な変換ステップがありませんか?

11
Nlind

一般に、CVの目的は、ハイパーパラメーターの最適化を行うための[〜#〜] not [〜#〜]です。目的は、モデル構築手順のパフォーマンスを評価することです

基本的なトレイン/テストスプリットは、概念的には1倍CVと同じです(スプリットのカスタムサイズは、kフォールドCVの1/Kトレインサイズとは対照的です)。より多くの分割(つまり、k> 1 CV)を行う利点は、一般化誤差の推定に関する詳細情報を取得することです。エラー+統計の不確実性を取得するという意味で、より多くの情報があります。優れた CrossValidatedについての議論 があります(同じ質問をカバーするが、異なる方法で作成された質問に追加されたリンクから始めます)。ネストされたクロス検証をカバーし、絶対に簡単ではありません。しかし、一般的な概念に頭を包む場合、これはさまざまな非自明な状況で役立ちます。あなたが取り去らなければならないアイデアは次のとおりです:CVの目的は、モデル構築手順のパフォーマンスを評価することです

その考えを念頭に置いて、一般的に(LightGBMだけでなく)ハイパーパラメーター推定にどのようにアプローチしますか?

  • 一部のデータのパラメーターセットでモデルをトレーニングし、独立した(検証)セットでモデルの各バリエーションを評価します。次に、選択した最適な評価指標を提供するバリアントを選択して、最適なパラメーターを選択します。
  • このは、単純なtrain/test splitで実行できます。しかし、評価されたパフォーマンス、したがって最適なモデルパラメーターの選択は、特定のスプリットの変動にすぎない可能性があります。
  • したがって、これらのモデルのそれぞれを、いくつかのトレイン/テスト分割、つまりk-fold CVでより統計的に堅牢な平均評価を評価できます。

その後、さらに一歩進んで、追加のホールドアウトセットがあり、それがハイパーパラメーター最適化が開始される前に分離されたと言うことができます。この方法で、そのセットで選択された最適なモデルを評価して、最終的な汎化誤差を測定できます。ただし、さらに一歩進んで、単一のテストサンプルを使用する代わりに、外側のCVループを使用して、ネストされた相互検証を行うことができます。

技術的には、lightbgm.cv()では、固定モデルパラメーターを使用したk分割のパフォーマンスのみを評価できます。ハイパーパラメーターの調整では、最適なパラメーターセットを選択するために、さまざまなパラメーターを提供し、平均化されたパフォーマンスを記録するループで実行する必要があります。ループが完了した後。このインターフェイスは、CVループでハイパーパラメーター最適化を行うための完全な機能を提供するsklearnとは異なります。個人的には、lightgbmのsklearn-APIを使用することをお勧めします。これは、ネイティブlightgbm.train()機能の単なるラッパーであるため、遅くはありません。しかし、それはあなたがsklearnツールキットのフルスタックを使用することを可能にします。

14

CVの結果に満足している場合は、これらのパラメーターを使用して 'lightgbm.train'メソッドを呼び出すだけです。 @phoが言ったように、CVは通常、パラメータの調整のためだけです。実際のCVオブジェクトを予測に使用しません。

1
bbennett36

パラメーターの最適化にはCVを使用する必要があります。

モデルがすべてのフォールドで良好に機能する場合、これらのパラメーターを使用してトレーニングセット全体でトレーニングします。次に、外部テストセットでそのモデルを評価します。

0
pho