• 李宏毅机器学习课程笔记-2.4交叉验证


    交叉验证(Cross Validation)

    在机器学习中,通常不能将全部数据用于模型训练,否则将没有数据集可以用来评估模型。

    The Validation Set Approach

    • 定义

      将数据集划分成训练集(Training Set)和测试集(Test Set)两部分。

    • 缺点

      这种方法的缺点是依赖于训练集和测试集的划分方法,并且只用了部分数据进行模型的训练。

    LOOCV(Leave One Out Cross Validation)

    • 定义

      假设数据集中有N个数据,取其中1个数据作为测试集,将剩下的N-1个数据作为训练集,这样重复N次就得到N个模型以及N个误差值,最终使用这N个误差值的平均值评估该模型。

    • 优点

      该方法不受训练集和测试集划分方法的影响,因为每个数据都单独做过测试集;同时该方法用了N-1个数据训练模型,也几乎用到了所有的数据,保证了模型的Bias更小。

    • 缺点

      该方法的缺点是计算量过大,是The Validation Set Approach耗时的N-1倍。

    K折交叉验证(K-fold Cross Validation)

    • 定义

      该方法是LOOCV的折中,即将数据集分成K份。

    • 如何选取K的值

      K的选取是一个Bias和Variance的trade-off。一般选择K=5或10。

      K越大,每次训练时训练集的数据量就越大,则Bias越小;但每次训练时的训练集之间的相关性越大(考虑最极端的情况K=N,也就是LOOCV,每次训练使用的数据几乎是一样的),这种大相关性会导致最终的误差具有更大的Variance。


    Github(github.com):@chouxianyu

    Github Pages(github.io):@臭咸鱼

    知乎(zhihu.com):@臭咸鱼

    博客园(cnblogs.com):@臭咸鱼

    B站(bilibili.com):@绝版臭咸鱼

    微信公众号:@臭咸鱼的快乐生活

    转载请注明出处,欢迎讨论和交流!


  • 相关阅读:
    android webview cookie同步
    session和cookie
    对称加密与非对称加密
    理解java回调机制
    android studio命令
    android studio友盟gradle多渠道打包
    [c++] final override keyword
    [C++] Returning values by reference in C++
    [c++] polymorphism without virtual function
    [C++] NEW Advanced Usage
  • 原文地址:https://www.cnblogs.com/chouxianyu/p/14185953.html
Copyright © 2020-2023  润新知