首页 » python机器学习 » python机器学习全文在线阅读

《python机器学习》6.2.1 holdout方法

关灯直达底部

holdout交叉验证是评估机器学习模型泛化性能的一个经典且常用的方法。通过holdout方法,我们将最初的数据集划分为训练数据集和测试数据集:前者用于模型的训练,而后者则用于性能的评估。然而,在典型的机器学习应用中,为进一步提高模型在预测未知数据上的性能,我们还要对不同参数设置进行调优和比较。该过程称为模型选择(model selection),指的是针对给定分类问题我们调整参数以寻求最优值(也称为超参,hyperparameter)的过程。

但是,如果我们在模型选择过程中不断重复使用相同的测试数据,它们可看作训练数据的一部分,模型更易于过拟合。尽管存在此问题,许多人仍旧在模型选择过程中使用这些测试数据,这对机器学习来说不是一种好的做法。

使用holdout进行模型选择更好的方法是将数据划分为三个部分:训练数据集、验证数据集和测试数据集。训练数据集用于不同模型的拟合,模型在验证数据集上的性能表现作为模型选择的标准。使用模型训练及模型选择阶段不曾使用的数据作为测试数据集的优势在于:评估模型应用于新数据上能够获得较小偏差。下图介绍了holdout交叉验证的一些概念。交叉验证中,在使用不同参数值对模型进行训练之后,我们使用验证数据集反复进行模型性能的评估。一旦参数优化获得较为满意的结果,我们就可以在测试数据集上对模型的泛化误差进行评估:

holdout方法的一个缺点在于:模型性能的评估对训练数据集划分为训练及验证子集的方法是敏感的;评价的结果会随样本的不同而发生变化。在下一小节中,我们将学习一种鲁棒性更好的性能评价技术:k折交叉验证,我们将在k个训练数据子集上重复holdout方法k次。