zoukankan      html  css  js  c++  java
  • 机器学习笔记:训练集、验证集和测试集区别

    一、介绍

    训练集、验证集和测试集在机器学习领域及其常见,后两者容易混用。

    在有监督(supervise)的机器学习中,数据集常被切分为2-3部分,即:

    • 训练集(train set
    • 验证集(validation set
    • 测试集(test set

    一个形象的比喻:

    训练集:学生的课本,学生根据课本中的内容来掌握知识;

    验证集:作业,通过作业可以知道学生的学习情况、进步快慢;

    测试集:考试,考题都是平时没见过的,考察学生举一反三的能力。

    二、训练集

    学习样本数据集,通过匹配一些参数来建立一个分类器。

    建立一种分类的方式,主要是用来训练模型的。

    作用:估计模型。

    三、验证集

    对学习出来的模型,调整分类器的参数,如在神经网络中选择隐藏单元数。

    验证集还用来确定网络结构或者控制模型复杂程度的参数。

    作用:确定网络结构或者控制模型复杂程度的参数。

    在普通的机器学习中常用的交叉验证(Cross validation )就是把训练数据集本身再细分为不同的验证数据集去训练模型。

    四、测试集

    测试训练好的模型分辨能力。

    该数据集与训练集、验证集完全分离,不参与模型训练。

    作用:检验最终选择最优的模型性能。

    五、为什么需要划分数据集?

    简而言之,为了防止过度拟合

    如果我们把所有数据都用来训练模型的话,建立的模型自然是最契合这些数据的,测试表现也好。

    但换了其它数据集测试这个模型效果可能就没那么好。

    总而言之,训练集和测试集相同的话,模型评估结果肯定比实际要好,但是模型的泛化性能较差。

    六、总结

    • train set -- 训练模型、确定模型参数
    • validation set -- 模型选择、参数优化
    • test set -- 测试模型泛化性能

    典型的交叉验证,划分比例为 7:2:1,三部分从样本中随机抽取。

    针对样本交叉的情况,数据集中每一个样本都是极其珍贵的,不宜如此划分。

    可采用K折交叉验证、留一法(LOO)等进行模型优化评估。

    七、实操

    from sklearn.model_selection import train_test_split
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=1)
    

    参考链接:训练集、验证集和测试集这三个名词的区别

    参考链接:训练集、验证集、测试集以及交验验证的理解

  • 相关阅读:
    寒号鸟不是鸟,爸爸你会吃。
    思杨的课外班的思考
    一年级第二学期
    City
    SON
    python(16)——生成器
    python(15)——迭代和迭代器
    python(14)——python中的数学模块
    python(13)——lambda表达式
    Python(12)——变量作用域及闭包操作
  • 原文地址:https://www.cnblogs.com/hider/p/15781829.html
Copyright © 2011-2022 走看看