2

我现在正在参加几个Kaggle机器学习比赛,我只是有一个快速问题。为什么我们使用交叉验证来评估我们算法在这些比赛中的有效性?为什么使用交叉验证?

当然,在这些比赛中,您在公共排行榜中的得分,您的算法在哪里与实际实时数据进行测试,可以让您更准确地表示算法的有效性?

+6

此问题似乎是脱离主题,因为它属于http://stats.stackexchange.com/ – sashkello

回答

2

交叉验证是模型构建的必要步骤。如果交叉验证给你带来不好的结果,那么即使在实时数据上尝试交叉验证也没有意义。你正在训练和验证的套件也是实时数据,不是吗?所以,结果应该是相似的。没有验证你的模型,你对它的性能没有任何了解。对训练集提供100%准确性的模型可以在验证集上给出随机结果。

让我重新迭代,交叉验证不是替代实时数据测试,它是模型构建过程的一部分。

+0

感谢您的回应。所以我的总体行动计划应该是对我的模型进行初步的CV测试。如果这表现的很好,那么我应该把它插入现场测试。如果它在CV中表现很好,而且在现场测试中表现不佳,那么我很可能是过度配合。这两个指标都需要给我一个模型如何运行的好主意。我理解正确吗? –

+0

@SimonKiely这是一个粗略的想法,但它有很多(http://en.wikipedia.org/wiki/Cross-validation_(statistics))。一些技巧在这里http://stats.stackexchange.com/questions/19048/what-is-the-difference-between-test-set-and-validation-set我也建议你浏览一些文献,因为它不是就像看起来一样简单...... – sashkello

+2

@SimonKiely如果你在训练集上表现得非常好,那么你已经成功地找到了将你的训练集分开的功能。我们执行交叉验证来“验证”我们的训练实例是真实世界数据集的*代表*。这是关键 - 如果我们可以在我们的训练集上建立一个模型,并使用该模型成功预测一个独立集(测试集),我们可以很有信心地说这个模型将推广到现实世界的一套数据。 – willwest