我在两篇论文中看到了这一点:
作者使用 10 折交叉验证,然后将验证的结果或什至将最佳折叠的结果呈现为他们的建模结果。
没有任何测试数据用于验证最终模型。这些是我正在谈论的同行评审论文。这是正确的做法吗?甚至可以引用这样的来源吗?
我在两篇论文中看到了这一点:
作者使用 10 折交叉验证,然后将验证的结果或什至将最佳折叠的结果呈现为他们的建模结果。
没有任何测试数据用于验证最终模型。这些是我正在谈论的同行评审论文。这是正确的做法吗?甚至可以引用这样的来源吗?
关键问题是
是否使用 K 折交叉验证来选择最终模型(或算法)?
如果是,如您所说,那么最终模型应该在与 K-fold CV 中使用的数据没有重叠的额外集(即测试集)上进行测试。
如果不是,则 K-fold CV 报告的平均分数为最终测试分数,无需额外设置。
因此,如果作者只从所有 K 个模型中挑选出最好的模型,它应该在额外的集合上进行测试。模型在验证折上的得分(来自 K-fold CV)是不可接受的。
此外,这里是该站点上的相关帖子(我的回答),其中更详细地介绍了测试和验证集(分数)。
编辑:
我在stats.stackexchange.com上发现了一个类似的问题。此外,阿米巴的这条评论建议“嵌套 CV ”而不是“CV + 测试集”,我认为值得在这里充实。
K-fold CV评估
1. For k = [1,..,K]
1. tr = (K-1)/K of data, ts = 1/K of data
2. m[k] = model trained using tr (can be further split into tr2 + v)
3. score[k] = score of m[k] on ts
3. Test score = average of score[1],...,score[K]
K-fold CV选择与评估
1. tr = 80% of data, ts = 20% of data (or some other ratio)
2. For k = [1,..,K]
1. tr2 = (K-1)/K of tr, v = 1/K of tr
2. m[k] = model trained using tr2 (can be further split into tr3 + v2)
3. score[k] = score of m[k] on v
3. M = best of m[1],...,m[K]
4. Test score = score of M on ts
嵌套 k 折 CV 选择和评估
1. For k = [1,..,K]
1. tr = (K-1)/K of data, ts = 1/K of data
2. For k2 = [1,..,K2]
1. tr2 = (K2-1)/K2 of tr, v = 1/K2 of tr
2. m[k2] = model trained using tr2 (can be further split into tr3 + v2)
3. score[k2] = score of m[k2] on v
3. M = best of m[1],...,m[K2]
4. score[k] = score of M on ts
2. Test score = average of score[1],...,score[K]
请注意,在这些算法中,model trained
包括参数学习、超参数调优和模型选择(当然,最外层的模型选择除外)。例如,为了在超参数 8 和 12 之间进行选择,我们需要一个更深的内部循环model trained
。