了解机器学习的交叉验证

时间:2020-09-21 17:58:59

标签: python validation data-science cross-validation

关于交叉验证,以下正确吗?

训练数据分为不同的组,除一个训练数据集外,所有训练数据集均用于训练模型。训练完模型后,“淘汰”训练数据将用于执行超参数调整。一旦选择了最佳的超参数,就将测试数据应用于模型以给出结果,然后将其与经过相似过程但训练数据集具有不同组合的其他模型进行比较。然后选择在测试数据上具有最佳结果的模型。

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为这是不正确的。您写道:

一旦对模型进行了训练,就会使用“遗留”训练数据来执行超参数调整

您可以通过选择(手动或使用诸如网格搜索或随机搜索之类的方法)一组模型的超参数(甚至在使模型适合数据之前由您设置值的参数)来调整模型。然后,对于一组选定的超参数值,您可以使用交叉验证来计算验证集错误。

所以应该像这样:

训练数据分为不同的组,除一个训练数据集外,所有训练数据集均用于训练模型。对模型进行训练后,“淘汰”训练数据将用于...

...计算错误。在交叉验证结束时,您将根据k个遗漏的集合计算出k个错误。接下来的操作是计算这k个错误的平均值,这将为您提供一个值-验证集错误。

如果您有n组超参数,则只需重复该过程n次,这将给您n个验证集错误。然后选择该集合,可以使验证错误最小。

最后,通常将计算测试集错误,以查看模型在未见数据上的性能,这将模拟将模型投入生产并查看测试集错误和验证集错误之间是否存在差异。如果存在显着差异,则表示过拟合。

只需在交叉验证本身上添加一些内容,这就是我们使用k-CV或LOOCV的原因 这是一个很好的测试集误差估计,这意味着当我使用超参数进行操作并且验证集误差的值下降时,我知道我确实改进了模型,而不是幸运的,只是简单地将模型拟合为训练集。 / p>