Kを大きく選択すると交差検定スコアが低下するのはなぜですか?


11

ボストン住宅データセット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分割交差検定のK

(のサイズはk円の面積で示されることに注意してください。標準偏差はY軸にあります。)

一貫して、k(2から44に)増加すると、スコアが一時的に増加し、その後kさらに増加すると(〜10倍を超えて)、着実に減少します!どちらかと言えば、より多くのトレーニングデータがスコアのマイナーな増加につながることを期待します!

更新

絶対エラー意味するようにスコアリング基準を変更すると、期待どおりの動作が得られます。スコアリングは、KフォールドCVのフォールド数を増やすと、0に近づくのではなく(デフォルトの ' r2 'のように)向上します。デフォルトのスコアリングメトリックの結果、フォールド数が増えると、平均メトリックとSTDメトリックの両方でパフォーマンスが低下するのはなぜですか。


あなたの折り目に重複したレコードはありますか?これは、過剰適合が原因である可能性があります。
QUITあり--Anony-Mousse 2016年

1
@ Anony-Mousseいいえ。BostonHousingデータセットには重複したレコードがなく、ShuffleSplitのサンプリングによって重複したレコードが発生しないためです。
Brian Bien

4
また、プロットを改善します。エラーバーを使用して、平均、+-stddev、および最小/最大を表示します。もう一方の軸にkを置きます。
QUITあり--Anony-Mousse 2016年

1
トレーニングの例を増やしても、過剰適合の可能性が高まるとは思いません。このデータセットを使用して学習曲線をプロットし、ShuffleSplit(さまざまなテストサイズでn_splits = 300)を使用して、より多くのトレーニング例が利用可能になるにつれて、一貫して精度が向上することを確認しました。
Brian Bien

1
申し訳ありませんが、正解です。より良い方が良いです。1が最適です。しかし、平均二乗誤差または絶対誤差を使用すれば、この問題は発生しません。そのため、エラー項で何かをしなければなりません
rep_ho

回答:


1

r ^ 2スコアは、単一のサンプルに適用した場合は定義されません(例:リーブワンアウトCV)。

r ^ 2は、小さなテストセットの評価には適していません。十分に小さなテストセットを評価するために使用すると、良い予測にもかかわらず、スコアがネガティブになる可能性があります。

単一のサンプルが与えられた場合、特定のドメインの適切な予測はひどく見えるかもしれません。

from sklearn.metrics import r2_score
true = [1]
predicted = [1.01] # prediction of a single value, off by 1%
print(r2_score(true, predicted))
# 0.0

テストセットのサイズを大きくし(予測の精度を同じに保ちます)、突然r ^ 2スコアがほぼ完全に表示されます。

true = [1, 2, 3]
predicted = [1.01, 2.02, 3.03]
print(r2_score(true, predicted))
# 0.9993

反対に、テストサイズが2つのサンプルであり、偶然に互いに近い2つのサンプルを評価している場合、予測が非常に良い場合でも、これはr ^ 2スコアに大きな影響を与えます。 :

true = [20.2, 20.1] # actual target values from the Boston Housing dataset
predicted = [19, 21]
print(r2_score(true, predicted))
# -449.0
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.