在 scikit-learn 中使用Boston Housing Dataset和RandomForestRegressor
(带有默认参数)时,我注意到一些奇怪的事情:当我将折叠数增加到 10 次以上时,平均交叉验证分数下降。我的交叉验证策略如下:
cv_met = ShuffleSplit(n_splits=k, test_size=1/k)
scores = cross_val_score(est, X, y, cv=cv_met)
...num_cvs
变化多端。我设置test_size
为1/num_cvs
反映 k-fold CV 的训练/测试拆分大小行为。基本上,我想要像 k-fold CV 这样的东西,但我也需要随机性(因此是 ShuffleSplit)。
该试验重复了几次,然后绘制了平均分数和标准差。
(请注意,k
圆圈的面积表示 的大小;标准偏差在 Y 轴上。)
始终如一地,增加k
(从 2 到 44)将导致分数的短暂增加,然后k
随着进一步增加(超过约 10 倍)而稳步下降!如果有的话,我希望更多的训练数据会导致分数小幅增加!
更新
将评分标准更改为平均绝对误差会导致我期望的行为:评分会随着 K-fold CV 中折叠数量的增加而提高,而不是接近 0(与默认值一样,' r2 ')。问题仍然是为什么默认评分指标会导致在平均数和 STD 指标上表现不佳,因为折叠次数越来越多。