“机器学习中需要把数据分为训练集和测试集,因此如何划分训练集和测试集就成为影响模型效果的重要因素。本文介绍一种常用的划分最优训练集和测试集的方法——k折交叉验证。”

k折交叉验证

K折交叉验证(k-fold

cross-validation)首先将所有数据分割成K个子样本,不重复的选取其中一个子样本作为测试集,其他K-1个样本用来训练。共重复K次,平均K次的结果或者使用其它指标,最终得到一个单一估测。

这个方法的优势在于,保证每个子样本都参与训练且都被测试,降低泛化误差。其中,10折交叉验证是最常用的。

实例代码

在线性分类器与性能评价(R语言)中,我们将数据集随机抽取70%作为训练集,剩下30%作为测试集,通过线性回归的方法进行预测,通过ROC和AUC评价模型效果。现在,我们使用k折交叉验证的方法,选取最优的训练集和测试集,建立线性分类器并评价模型效果。

1、数据导入并分组。导入数据,并使用caret包中的createFolds()函数,根据标签列将数据分成10份 。

target.url

'https://archive.ics.uci.edu/ml/machine-learning-databases/undocumented/connectionist-bench/sonar/sonar.all-data'

data

set.seed(17)

require(caret)

folds

2、选取最优训练集与测试集。构建for循环,得到十次交叉验证预测的AUC值。并纪录取值最大的一组,作为最优的训练集与测试集划分。

library(pROC)

max=0

num=0

auc_value

for(i in 1:10){

fold_test

fold_train

fold_pre

fold_predict

predict(fold_pre,type='response',newdata=fold_test)

auc_value

append(auc_value,as.numeric(auc(as.numeric(fold_test[,61]),fold_predict)))

}

num

print(auc_value)

10次auc取值结果如下:

[1] 0.7636364 0.7474747 0.8484848 0.9363636 0.7272727 0.8454545

0.9181818 0.7454545 0.7979798

[10] 0.7916667

3、构建分类器并判断模型效果。根据前一步的结果,使用最优划分构建线性分类器并预测。绘制出测试集的ROC曲线。

fold_test

fold_train

fold_pre

fold_predict

predict(fold_pre,type='response',newdata=fold_test)

roc_curve

plot(roc_curve, print.auc=TRUE, auc.polygon=TRUE, grid=c(0.1,

0.2),

grid.col=c("green", "red"), max.auc.polygon=TRUE,

auc.polygon.col="skyblue", print.thres=TRUE,main="ROC curve for the

set with the largest AUC value")

线性分类器与性能评价(R语言)中随机选取训练集和测试集,最终测试集的AUC值仅为0.755,而本次我们通过k折交叉验证选取训练集和测试集,测试集AUC值达到0.936,可以看出模型效果提升显著。

大数据部落——中国专业的第三方数据服务提供商,提供定制化的一站式数据挖掘和统计分析咨询服务

统计分析和数据挖掘咨询服务

:y0.cn/teradat(咨询服务请联系官网客服)

QQ:3025393450

【服务场景】 科研项目;

公司项目外包 ;线上线下一对一培训

;数据采集;学术研究;报告撰写;市场调查。

【大数据部落】提供定制化的一站式数据挖掘和统计分析咨询服务

分享最新的大数据资讯,每天学习一点数据分析,让我们一起做有态度的数据人

微信客服号:lico_9e

QQ交流群:186388004 

欢迎关注微信公众号,了解更多数据干货资讯!

k折交叉验证优缺点_k折交叉验证(R语言)相关推荐

  1. k折交叉验证优缺点_K最近邻(KNN)算法

    (一)算法思想 最近邻法 Cover, Hart, 1968年提出,非参数法中最重要的方法之一: 基本思想:分段线性判别的极端情况,计算测试样本与 "代表点",即所有训练样本的距离 ...

  2. k折交叉验证优缺点_R语言中K邻近算法的初学者指南:从菜鸟到大神(附代码&链接)...

    作者:Leihua Ye, UC Santa Barbara 翻译:陈超 校对:冯羽 本文约2300字,建议阅读10分钟 本文介绍了一种针对初学者的K临近算法在R语言中的实现方法. 本文呈现了一种在R ...

  3. k折交叉验证概述-附R语言实现

    因需要拿出部分数据作为测试,故总有部分数据不能用于构建模型,一种更好选择是交叉验证(简称CV).k折交叉验证是交叉验证方法中的一种(是进行模型比较的有效方法),将整体数据集分为k份(每份近似相等),其 ...

  4. 交叉验证(s折、分层、留一法)

    目录 交叉验证原理 交叉验证分类 1.标准交叉验证(s折交叉验证) 代码实现 2.分层交叉验证 代码实现 StratifiedKFold参数 3.留一法交叉验证 代码实现 代码说明 交叉验证原理 交叉 ...

  5. R语言惩罚逻辑回归、线性判别分析LDA、广义加性模型GAM、多元自适应回归样条MARS、KNN、二次判别分析QDA、决策树、随机森林、支持向量机SVM分类优质劣质葡萄酒十折交叉验证和ROC可视化

    最近我们被客户要求撰写关于葡萄酒的研究报告,包括一些图形和统计输出. 介绍 数据包含有关葡萄牙"Vinho Verde"葡萄酒的信息.该数据集有1599个观测值和12个变量,分别是 ...

  6. R语言使用yardstick包的lift_curve函数评估多分类(Multiclass)模型的性能、并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的提升

    R语言使用yardstick包的lift_curve函数评估多分类(Multiclass)模型的性能.并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的提升 ...

  7. R语言使用yardstick包的roc_curve函数评估多分类(Multiclass)模型、并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的ROC曲线

    R语言使用yardstick包的roc_curve函数评估多分类(Multiclass)模型的性能.并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的ROC ...

  8. R语言使用yardstick包的gain_curve函数评估多分类(Multiclass)模型的性能、并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的增益

    R语言使用yardstick包的gain_curve函数评估多分类(Multiclass)模型的性能.并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的增益 ...

  9. R语言caret包构建xgboost模型实战:特征工程(连续数据离散化、因子化、无用特征删除)、配置模型参数(随机超参数寻优、10折交叉验证)并训练模型

    R语言caret包构建xgboost模型实战:特征工程(连续数据离散化.因子化.无用特征删除).配置模型参数(随机超参数寻优.10折交叉验证)并训练模型 目录

最新文章

  1. Spring基础专题——第三章(反转控制与依赖注入)
  2. java设计模式之装饰器模式
  3. python读取文件某一行-python和shell读取文件某一行
  4. Android中最简单的分享功能
  5. sklearn模型评选择与评估
  6. JAVA xml转dom_如何在Java中将String转换为DOMSource?
  7. maven docker plugin 常见问题解决
  8. 程序发布出现: 服务器无法处理请求---无法生成临时类(result = 1)。 错误CS2001:未能找到源文件“C:\ Windows \ TEMP \ lph54vwf.0.cs”...
  9. 关于数据库查询时报“query block has incorrect number of result columns”
  10. 谷粒商城:04. 逆向工程完善微服务系统
  11. paip.提升性能---list,arraylist,vector,linkedlist,map的选用..
  12. 网页内嵌多媒体内容的完美实现
  13. Docker镜像重命名
  14. python汉化补丁包怎么安装_如何安装python包
  15. 流水线作业调度问题-动态规划(运用Johnson算法)
  16. 【Blender】UV贴图相关学习
  17. IPv4和IPv6、局域网和广域网、网关、公网IP和私有IP、IP地址、子网掩码、网段、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?
  18. JavaSE-day01
  19. Netty面试题和答案
  20. 没有备份电脑照片怎么恢复?分享3种找回照片方法

热门文章

  1. 高性能web平台【Lua语言快速入门】
  2. 使用C#.NET WebBrowser控件导航到不同的网站出现 所请求的资源正在使用中。 (从HRESULT异常:0x800700AA)
  3. 区块链的奥卡姆剃刀在哪里?(1)
  4. C++学习笔记5——引用
  5. 用Java写一个年薪计算器,助你简单完成大量税前税后总薪计算量
  6. canvas在PC端实现振幅大小可变的动态波浪图
  7. 利用批处理代码快速恢复桌面图标小箭头,更可能解决win7出现黑色方块问题
  8. 服务器物理内存利用率,服务器提高物理内存利用率
  9. jre包括jvm和java核心类库_JDK、JRE、JVM分别是什么及它们之间的有什么关联
  10. 报错:Expected singleton