zoukankan      html  css  js  c++  java
  • 交叉验证思想

    交叉验证

    写一个函数,实现交叉验证功能,不能用sklearn库。

    交叉验证(Cross-Validation): 有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法。于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证。 一开始的子集被称为训练集。而其它的子集则被称为验证集或测试集。常见交叉验证方法如下:

    Holdout Method(保留)

    • 方法:将原始数据随机分为两组,一组做为训练集,一组做为验证集,利用训练集训练分类器,然后利用验证集验证模型,记录最后的分类准确率为此Hold-OutMethod下分类器的性能指标.。Holdout Method相对于K-fold Cross Validation 又称Double cross-validation ,或相对K-CV称 2-fold cross-validation(2-CV)
    • 优点:好处的处理简单,只需随机把原始数据分为两组即可
    • 缺点:严格意义来说Holdout Method并不能算是CV,因为这种方法没有达到交叉的思想,由于是随机的将原始数据分组,所以最后验证集分类准确率的高低与原始数据的分组有很大的关系,所以这种方法得到的结果其实并不具有说服性.(主要原因是 训练集样本数太少,通常不足以代表母体样本的分布,导致 test 阶段辨识率容易出现明显落差。此外,2-CV 中一分为二的分子集方法的变异度大,往往无法达到「实验过程必须可以被复制」的要求。)

    K-fold Cross Validation(k折叠)

    • 方法:作为Holdout Methon的演进,将原始数据分成K组(一般是均分),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标.K一般大于等于2,实际操作时一般从3开始取,只有在原始数据集合数据量小的时候才会尝试取2. 而K-CV 的实验共需要建立 k 个models,并计算 k 次 test sets 的平均辨识率。在实作上,k 要够大才能使各回合中的 训练样本数够多,一般而言 k=10 (作为一个经验参数)算是相当足够了。
    • 优点:K-CV可以有效的避免过学习以及欠学习状态的发生,最后得到的结果也比较具有说服性.
    • 缺点:K值选取上

    Leave-One-Out Cross Validation(留一)

    • 方法:如果设原始数据有N个样本,那么留一就是N-CV,即每个样本单独作为验证集,其余的N-1个样本作为训练集,所以留一会得到N个模型,用这N个模型最终的验证集的分类准确率的平均数作为此下LOO-CV分类器的性能指标.
    • 优点:相比于前面的K-CV,留一有两个明显的优点:
      • a.每一回合中几乎所有的样本皆用于训练模型,因此最接近原始样本的分布,这样评估所得的结果比较可靠。
      • b. 实验过程中没有随机因素会影响实验数据,确保实验过程是可以被复制的.
    • 缺点:计算成本高,因为需要建立的模型数量与原始数据样本数量相同,当原始数据样本数量相当多时,LOO-CV在实作上便有困难几乎就是不显示,除非每次训练分类器得到模型的速度很快,或是可以用并行化计算减少计算所需的时间。



    http://www.jianshu.com/p/48d391dab189

  • 相关阅读:
    dispatchTouchEvent
    Android中的dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()
    PHP在线提交留言直接发到邮箱
    php表单提交并发送邮件给某个邮箱(示例源码)
    使用 video.js 开发 HTML5 视频页面
    php匹配图片、视频文件、音乐文件的正则表达式
    HTML5的Video标签的属性,方法和事件汇总
    HTML5 Audio/Video 标签,属性,方法,事件汇总 (转)
    URL重写
    求助,后台跳转至前台,如何实现,谢谢
  • 原文地址:https://www.cnblogs.com/xiaoma0529/p/7272967.html
Copyright © 2011-2022 走看看