Python 为什么不在RandomizedSearchCV中评估过度测试拟合结果?

Python 为什么不在RandomizedSearchCV中评估过度测试拟合结果?,python,optimization,hyperparameters,gridsearchcv,Python,Optimization,Hyperparameters,Gridsearchcv,我正在尝试优化sklearn中分类器和回归方法的hiperparameters。我有个问题。为什么在评估结果时,选择最佳训练精度,而不是在测试中评估此结果,并使用其他训练精度迭代其他值以获得最佳测试精度?因为显然,最佳列车精度的参数与最佳测试精度的参数不同 谢谢 在训练模型时,我们通常将数据分为训练集、验证集和测试集。让我们看看每一组的建议 列车组:模型使用它来学习其参数。通常,模型会降低其在列车组上的成本,并选择成本最低的参数 验证集:根据名称,验证集用于验证模型在尚未看到的数据上也会表现良好

我正在尝试优化sklearn中分类器和回归方法的hiperparameters。我有个问题。为什么在评估结果时,选择最佳训练精度,而不是在测试中评估此结果,并使用其他训练精度迭代其他值以获得最佳测试精度?因为显然,最佳列车精度的参数与最佳测试精度的参数不同


谢谢

在训练模型时,我们通常将数据分为训练集、验证集和测试集。让我们看看每一组的建议

列车组:模型使用它来学习其参数。通常,模型会降低其在列车组上的成本,并选择成本最低的参数

验证集:根据名称,验证集用于验证模型在尚未看到的数据上也会表现良好。这让我们相信,该模型并没有记住训练数据,在训练数据上表现得很好,但在新数据上表现得不好。如果模型足够复杂,则存在模型记忆训练数据以提高其在训练集上的性能,但在验证数据上效果不佳的风险

通常我们使用交叉验证,将训练集划分为n个相等的部分,然后为每个迭代选择一部分作为验证,其余部分作为训练集


测试集:测试集被放在一边,只有当我们对我们的模型感到满意时,才最终使用测试集来评估最终模型在野外新数据上的性能。验证集的一个主要区别是,它不以任何方式用于改进或更改模型或改进模型,但验证集帮助我们选择最终模型。我们之所以这样做,是因为我们不希望模型偏向于测试数据,但却无法很好地处理野外数据。

分享您正在讨论的一段代码