机器学习中训练数据集,交叉验证数据集,测试数据集的作用

#1. 简介
在Andrew Ng的机器学习教程里,会将给定的数据集分为三部分:训练数据集(training set)、交叉验证数据集(cross validation set)、测试数据集(test set)。三者分别占总数据集的60%、20%、20%。
那么这些数据集分别是什么作用呢?

#2. 三种数据集的作用
假设我们训练一个数据集,有下面10中模型可以选择:
这里写图片描述
(图片来自Coursera Machine Learning Andrew Ng 第6周:Model Selection and Train/Validation/Test Sets)

我们想知道两件事:

  • 1)这10中模型中哪种最好(决定多项式的阶数d);
  • 2)最好的模型的 θ \theta θ参数是什么。
    为此,我们需要,
  1. 使用训练数据集分别训练这10个模型;
  2. 用训练好的这10个模型,分别处理交叉验证数据集,统计它们的误差,取误差最小的模型为最终模型(这步就叫做Model Selection)。
  3. 用测试数据集测试其准确性。

这里有个问题要回答:为什么不直接使用测试数据集(Test Set)来执行上面的第2.步?
答:如果数据集只分成训练数据集(Training Set)和测试数据集(Test Set),且训练数据集用于训练 θ \theta θ,测试数据集用于选择模型,那么就缺少能够“公平”评判最终模型优劣的数据集,因为最终的模型就是根据训练数据集和测试数据集训练得到的,肯定在这两个数据集上表现良好,但不一定在其他数据上也如此。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
交叉验证(Cross-Validation)是一种评估机器学习模型性能的常用技术,尤其是在没有明确测试集的情况下。对于鸢尾花数据集(Iris dataset),它是一个经典的多类分类问题,通常用于初学者入门机器学习。下面是使用交叉验证设计思路的基本步骤: 1. 数据加载:首先,从sklearn库导入iris数据集,它包含了150个样本,每个样本有4个特征(花瓣长度、花瓣宽度、萼片长度和萼片宽度)和一个类别标签。 2. 数据划分:通常将数据分为训练集和测试集,比如80%的数据用于训练,20%用于测试。然而,为了更准确地评估模型,我们会用到k折交叉验证,将数据划分为k个大小相等的子集。 3. k折分割:将数据分成k个子集,每次选取其一个子集作为验证集,其余k-1个子集作为训练集。这样就会有k个不同的模型,每个模型都在一次训练验证后得到一个性能指标。 4. 模型训练验证:对每个训练集,训练一个模型,并用相应的验证集进行性能评估(如准确率、精确率、召回率等)。这样能得到k个模型在不同数据上的性能。 5. 性能指标汇总:取k次验证结果的平均值,作为模型在当前参数下的最终性能估计。这有助于减少由于数据划分偶然性带来的偏差。 6. 参数调优:根据交叉验证的结果,调整模型的超参数,以提高整体性能。这个过程可能需要多次迭代。 7. 最终评估:在完成所有参数调整后,再用独立的测试集对最终模型进行一次评估,确保其泛化能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值