在使用scikit-learn中的Boston Housing数据集和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倍CV的训练/测试拆分大小行为。基本上,我想要类似k-fold CV的东西,但是我也需要随机性(因此ShuffleSplit)。
将该试验重复几次,然后绘制平均得分和标准差。
(请注意,的大小k
由圆的面积表示;标准偏差在Y轴上。)
一致地,增加k
(从2到44)会导致得分短暂增加,然后k
随着进一步增加(超过10倍)而稳步下降!如果有的话,我希望更多的培训数据会导致分数略有提高!
更新资料
更改评分标准以表示绝对错误会导致我预期的行为:评分会随着K折CV中的折叠数增加而提高,而不是接近0(默认值为' r2 ')。问题仍然是,为什么默认得分指标导致均值和STD指标的性能下降,而折叠次数却越来越多。
您的褶皱中是否有重复的记录?这可能是由于过度拟合。
—
已退出-Anony-Mousse
@ Anony-Mousse不,因为波士顿房屋数据集没有重复记录,ShuffleSplit的抽样也没有重复记录。
—
布莱恩·比恩
此外,改善绘图效果。使用误差线显示平均值,±stddev和最小值/最大值。将k放在另一轴上。
—
已退出-Anony-Mousse
我不认为更多的训练示例会增加过拟合的机会。我再次使用ShuffleSplit(n_splits = 300,具有不同的测试大小)使用此数据集绘制了一条学习曲线,并发现随着提供了更多的训练示例,准确性不断提高。
—
布赖恩·比恩
抱歉,您是对的,更好是更好,最好是1。但是,如果使用均方误差或绝对误差,则不会出现此问题。因此,它必须对错误项进行处理
—
rep_ho