scikit-learnのGridSearchCV
は、(内部の)クロスバリデーションフォールドのスコアを収集し、次にすべてのフォールドのスコア全体の平均をとっているようです。私はこの背後にある根拠について疑問を抱いていた。一見すると、クロスバリデーションフォールドの予測を収集し、選択したスコアメトリックをすべてのフォールドの予測に適用する方が、より柔軟に見えます。Scikit-learn:GridSearchCVの得点
私がこれを見つけた理由は、cv=LeaveOneOut()
とscoring='balanced_accuracy'
(scikit-learn v0.20.dev0)の不均衡なデータセットでGridSearchCV
を使用していることです。バランスのとれた精度(またはリコール)のようなスコアメトリックを左抜きのサンプルに適用することは意味がありません。むしろ、すべての予測を最初に収集してから、すべての予測にスコアメトリックを適用したいと考えています。それとも、これは推論の誤りを伴うのでしょうか?
アップデート:私は予測が最初にすべての内側の折り目から収集され、スコアリング指標が一度適用される差がGridSearchCV
に基づいてカスタムグリッドサーチクラスを作成することによって、それを解決しました。
はい、しかし、私の質問は、その方法を尊重しています_ 'GridSearchCV'はスコアリングを使用しています。これは、内部の相互検証フォールドのそれぞれにスコアリングを個別に適用し、次にすべての内部フォールドの予測を収集してからスコアリングメトリックを1回適用するのではなく、スコアリング全体の平均化を行います。私の場合は、後者がより適切と思われる。 – monade
OK、私はその時質問を誤解しました。私にとっては、 'LeaveOneOut'と' balanced_accuracy'を使いたいならば、それぞれの折り目の予測を集め、それらのすべてをスコアリングすることは妥当と思われます。 私はそれを行うために独自のグリッドサーチャーを作る必要があると思います。そのために 'model_selection.ParameterGrid'と' model_selection.KFold'を使うことができます。 – KPLauritzen
ありがとう@KPLauritzen、私はそれをやろう! – monade