我正在尝试为sklearn中的分类器和回归方法优化hiperparameters。我有一个问题。为什么在评估结果时,例如选择最佳训练精度,而不是在整个测试中评估此结果,然后使用其他训练精度迭代其他值以获得最佳测试精度?因为显然,用于最佳列车精度的参数与用于最佳测试精度的参数并不相同。
谢谢!
答案 0 :(得分:0)
在训练模型时,我们通常将数据分为训练,验证和测试集。让我们看看每个集合的提议是什么
训练集:模型用于学习其参数。通常,模型会降低其在火车上的成本,并选择能够提供最低成本的参数。
验证集:顾名思义,验证集用于验证模型在尚未看到的数据上也能表现良好。这使我们充满信心,模型不会记住训练数据并在训练数据上表现很好,但是在新数据上表现不好。如果模型足够复杂,则可能存在模型记忆训练数据以提高其在训练集上的性能,但在验证数据上效果不佳的问题。
通常,我们使用交叉验证,将训练集分为n个相等的部分,然后对于每次迭代,我们选择一个部分作为验证,其余部分作为训练集。
测试集:测试集被保留,仅在我们对模型感到满意时才使用,以估计您的最终模型在新数据上的表现如何。验证集的主要区别在于,它不以任何方式用于改进或更改模型或改进模型,但验证集可帮助我们选择最终模型。我们之所以这样做,是因为我们不希望模型偏向于测试数据,但对于野外数据却不能很好地发挥作用。