ボストン住宅データセットとRandomForestRegressor
(デフォルトパラメータ付きの)scikit-learnで遊んでみて、奇妙なことに気付きました。フォールドの数を10を超えて増やすと、平均クロス検証スコアが減少しました。私のクロス検証戦略は次のとおりです。
cv_met = ShuffleSplit(n_splits=k, test_size=1/k)
scores = cross_val_score(est, X, y, cv=cv_met)
num_cvs
変化したところ… 。k-fold CVのトレイン/テスト分割サイズの動作をミラーリングtest_size
する1/num_cvs
ように設定しました。基本的に、k倍のCVのようなものが必要でしたが、ランダム性も必要でした(したがって、ShuffleSplit)。
この試験を数回繰り返し、平均スコアと標準偏差をプロットしました。
(のサイズはk
円の面積で示されることに注意してください。標準偏差はY軸にあります。)
一貫して、k
(2から44に)増加すると、スコアが一時的に増加し、その後k
さらに増加すると(〜10倍を超えて)、着実に減少します!どちらかと言えば、より多くのトレーニングデータがスコアのマイナーな増加につながることを期待します!
更新
絶対エラーを意味するようにスコアリング基準を変更すると、期待どおりの動作が得られます。スコアリングは、KフォールドCVのフォールド数を増やすと、0に近づくのではなく(デフォルトの ' r2 'のように)向上します。デフォルトのスコアリングメトリックの結果、フォールド数が増えると、平均メトリックとSTDメトリックの両方でパフォーマンスが低下するのはなぜですか。