交叉验证

交叉验证是估计预测误差最简单且广泛使用的方法。
通常情况下,我们的数据量都是不足够多的,如果在本来就不多的数据集中再划分出一部分作为验证集,那可供学习的数据就更少了。为了解决这一问题,K-折交叉验证将数据集分成容量大致相等的K个部分,如下图:

对于第kkk(k=1,2,⋯,Kk=1,2,\cdots,Kk=1,2,⋯,K)部分,我们首先用 其他K-1个部分的数据对学习器进行训练,再预测第kkk部分数据时计算预测误差。依次通过k=1,2,⋯,Kk=1,2,\cdots,Kk=1,2,⋯,K循环此操作,最后合并预测误差的KKK个估计。
具体地,令 κ:{1,⋯,N}↦{1,⋯,K}\kappa:\{1, \cdots, N\} \mapsto\{1, \cdots, K\}κ:{1,⋯,N}↦{1,⋯,K} 是一个指标函数,它指出观测 iii 被 随机指派到其上的划分。用 f^−k(x)\hat{f}^{-k}(x)f^​−k(x) 表示拟合函数,用删除第 kkk 部分后的数据计算。那么,预测误差的交叉验证估计是:
CV(α)=1N∑i=1NL(yi,f^−κ(i)(xi))\mathrm{CV(\alpha)}=\frac{1}{N} \sum_{i=1}^{N} L\left(y_{i}, \hat{f}^{-\kappa(i)}\left(x_{i}\right)\right) CV(α)=N1​i=1∑N​L(yi​,f^​−κ(i)(xi​))
我们可以通过CV(α)CV(\alpha)CV(α)的极小化找到相应的调整参数α^\hat \alphaα^,得到最终的模型f(x,α^)f(x,\hat \alpha)f(x,α^).
对于KKK值的选择,我们首先要知道,当KKK值越大时,真实预测误差的方差会越来越大,当KKK值较小时,又会出现偏倚等问题。我们再来看下图中的学习曲线:
这是一个(1-Err)关于训练集容量N的函数曲线图,当N达到100时分类器的性能已经有较大改观,当达到160时,性能已经与200时的性能相差无几,这样训练集容量为160对应的5折交叉验证将不会有太大的偏倚。
对于平方误差损失下的线性拟合,广义交叉验证( generalized cross-validation)提供了一种对 留一交叉验证方便的还近。和第 7.6 节中定义的一样,线性拟合方法可以写成:
y^=Sy\hat{\mathbf{y}}=\mathbf{S y} y^​=Sy
现在,对许多线代拟合方法,
1N∑i=1N[yi−f^−i(xi)]2=1N∑i=1N[yi−f^(xi)1−Sii]2\frac{1}{N} \sum_{i=1}^{N}\left[y_{i}-\hat{f}^{-i}\left(x_{i}\right)\right]^{2}=\frac{1}{N} \sum_{i=1}^{N}\left[\frac{y_{i}-\hat{f}\left(x_{i}\right)}{1-S_{i i}}\right]^{2} N1​i=1∑N​[yi​−f^​−i(xi​)]2=N1​i=1∑N​[1−Sii​yi​−f^​(xi​)​]2
其中, SiiS_{i i}Sii​ 是 S\mathbf{S}S 的第 iii 个对角元素, GCV 逼近是:
GCV=1N∑i=1N[yi−f^(xi)1−trace⁡(S)/N)]2\mathrm{GCV}=\frac{1}{N} \sum_{i=1}^{N}\left[\frac{y_{i}-\hat{f}\left(x_{i}\right)}{1-\operatorname{trace}(\mathbf{S}) / N)}\right]^{2} GCV=N1​i=1∑N​[1−trace(S)/N)yi​−f^​(xi​)​]2

交叉验证——ESL chapter7.10相关推荐

  1. 【机器学习】交叉验证详细解释+10种常见的验证方法具体代码实现+可视化图

    [机器学习]交叉验证详细解释+10种常见的验证方法具体代码实现+可视化图 一.使用背景 由于在训练集上,通过调整参数设置使估计器的性能达到了最佳状态:但在测试集上可能会出现过拟合的情况. 此时,测试集 ...

  2. 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集

    机器学习 数据挖掘 数据集划分 训练集 验证集 测试集 Q:如何将数据集划分为测试数据集和训练数据集? A:three ways: 1.像sklearn一样,提供一个将数据集切分成训练集和测试集的函数 ...

  3. Python的数据分析中交叉验证

    [小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python的数据分析中 交叉验证 ● 选择题 以下说法错误的是: A ...

  4. 机器学习之选择小样本交叉验证训练模型并使用精确率、召回率、F1分数和AUC值、画出ROC曲线评估

    题目如下 (1)读入aviation数据集,设置MEMBER_NO为索引列:(4分) (2)剔除重复值.缺失值.(4分) (3)随机抽取500样本,切片特征X和标签Y:(4分) 因为调参很慢,所以这里 ...

  5. matlab-K折交叉验证与分层K折交叉验证

    文章目录 K折交叉验证有什么用? 如何实现K折交叉验证? K折交叉验证的要点:(文字版) 如何实现K折交叉验证(图片版) 如何实现K折交叉验证(matlab版) 为啥我们需要分层K折交叉验证? 如何实 ...

  6. 深度学习:交叉验证(Cross Validation)

    首先,交叉验证的目的是为了让被评估的模型达到最优的泛化性能,找到使得模型泛化性能最优的超参值.在全部训练集上重新训练模型,并使用独立测试集对模型性能做出最终评价. 目前在一些论文里倒是没有特别强调这样 ...

  7. 朴素贝叶斯、精确率与召回率、交叉验证

    朴素贝叶斯.精确率与召回率.交叉验证 一.朴素贝叶斯 (1)朴素贝叶斯的原理 (2)朴素贝叶斯公式的使用 二.朴素贝叶斯API (1)朴素贝叶斯案例 (2)朴素贝叶斯总结 三.分类模型的评估 (1)混 ...

  8. 模型效果优化,试一下多种交叉验证的方法(系统实操)

    我们在建模时,经常会遇到这样的情况:模型在训练样本集上拟合成功后的性能评价指标都表现较好,但在测试样本集上的验证效果却表现很差,这种偏差情况出现的原因,往往是模型出现了过拟合问题(如图1所示),直接反 ...

  9. 5折交叉验证_测试集训练集验证

    10折交叉验证(10-fold Cross Validation) 用来测试算法准确性.是常用的测试方法.将数据集分成十分,轮流将其中9份作为训练数据,1份作为测试数据,进行试验.每次试验都会得出相应 ...

最新文章

  1. ubuntu as86
  2. iphone分辨率_iPhone 的屏幕为什么比安卓更丝滑?
  3. for循环中取出最大最小 累加_从零开始学Python - 第006课:循环结构
  4. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波15 - 锐化高通滤波器 -拉普拉斯核(二阶导数)
  5. django后台数据管理admin设置代码
  6. php mssql_init,Php Mssql操作简单封装支持存储过程
  7. 深入理解PHP+Mysql分布式事务与解决方案
  8. 20 万台 QQ 服务器全面上云!
  9. python matplotlib 绘图操作
  10. FFmpeg获取视频正确的宽高比
  11. 微信网页开发(1)--微信网页与普通网页区别
  12. 【JAVA面试题-阿辉】try catch finally , try 里有 return , finally 还执行么?
  13. 你还在找全国省市县大全吗
  14. Linux chmod +755和chmod +777 各是什么意思呢?
  15. 与Google轻轻地擦肩而过
  16. go分布式存储,rs纠删码
  17. [note] 电磁场与微波课组(二) 波动光学(1)
  18. 扩展名是WMF的文件是什么文件?
  19. 1.辐射度学以及四个基本量
  20. web前端CSS之“ calc() 函数”

热门文章

  1. Linux提权枚举工具包0xsp-Mongoose
  2. Android:从简历到offer直通车,跳槽大厂必备宝典,android开发环境搭建
  3. 关于监听切换应用,app从后台返回进入锁屏界面
  4. 第一篇文章~~~~~~~~~~~~~~
  5. 通过Python的pdfplumber库将pdf转为图片
  6. Xcode 编译选项详解
  7. 为什么要学习C语言?
  8. tf.keras.layers.Conv2D
  9. Lambda函数式编程
  10. 汽车雷达 --下载CANoe