k折交叉验证优缺点_k折交叉验证(R语言)
“机器学习中需要把数据分为训练集和测试集,因此如何划分训练集和测试集就成为影响模型效果的重要因素。本文介绍一种常用的划分最优训练集和测试集的方法——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语言)相关推荐
- k折交叉验证优缺点_K最近邻(KNN)算法
(一)算法思想 最近邻法 Cover, Hart, 1968年提出,非参数法中最重要的方法之一: 基本思想:分段线性判别的极端情况,计算测试样本与 "代表点",即所有训练样本的距离 ...
- k折交叉验证优缺点_R语言中K邻近算法的初学者指南:从菜鸟到大神(附代码&链接)...
作者:Leihua Ye, UC Santa Barbara 翻译:陈超 校对:冯羽 本文约2300字,建议阅读10分钟 本文介绍了一种针对初学者的K临近算法在R语言中的实现方法. 本文呈现了一种在R ...
- k折交叉验证概述-附R语言实现
因需要拿出部分数据作为测试,故总有部分数据不能用于构建模型,一种更好选择是交叉验证(简称CV).k折交叉验证是交叉验证方法中的一种(是进行模型比较的有效方法),将整体数据集分为k份(每份近似相等),其 ...
- 交叉验证(s折、分层、留一法)
目录 交叉验证原理 交叉验证分类 1.标准交叉验证(s折交叉验证) 代码实现 2.分层交叉验证 代码实现 StratifiedKFold参数 3.留一法交叉验证 代码实现 代码说明 交叉验证原理 交叉 ...
- R语言惩罚逻辑回归、线性判别分析LDA、广义加性模型GAM、多元自适应回归样条MARS、KNN、二次判别分析QDA、决策树、随机森林、支持向量机SVM分类优质劣质葡萄酒十折交叉验证和ROC可视化
最近我们被客户要求撰写关于葡萄酒的研究报告,包括一些图形和统计输出. 介绍 数据包含有关葡萄牙"Vinho Verde"葡萄酒的信息.该数据集有1599个观测值和12个变量,分别是 ...
- R语言使用yardstick包的lift_curve函数评估多分类(Multiclass)模型的性能、并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的提升
R语言使用yardstick包的lift_curve函数评估多分类(Multiclass)模型的性能.并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的提升 ...
- R语言使用yardstick包的roc_curve函数评估多分类(Multiclass)模型、并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的ROC曲线
R语言使用yardstick包的roc_curve函数评估多分类(Multiclass)模型的性能.并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的ROC ...
- R语言使用yardstick包的gain_curve函数评估多分类(Multiclass)模型的性能、并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的增益
R语言使用yardstick包的gain_curve函数评估多分类(Multiclass)模型的性能.并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的增益 ...
- R语言caret包构建xgboost模型实战:特征工程(连续数据离散化、因子化、无用特征删除)、配置模型参数(随机超参数寻优、10折交叉验证)并训练模型
R语言caret包构建xgboost模型实战:特征工程(连续数据离散化.因子化.无用特征删除).配置模型参数(随机超参数寻优.10折交叉验证)并训练模型 目录
最新文章
- Spring基础专题——第三章(反转控制与依赖注入)
- java设计模式之装饰器模式
- python读取文件某一行-python和shell读取文件某一行
- Android中最简单的分享功能
- sklearn模型评选择与评估
- JAVA xml转dom_如何在Java中将String转换为DOMSource?
- maven docker plugin 常见问题解决
- 程序发布出现: 服务器无法处理请求---无法生成临时类(result = 1)。 错误CS2001:未能找到源文件“C:\ Windows \ TEMP \ lph54vwf.0.cs”...
- 关于数据库查询时报“query block has incorrect number of result columns”
- 谷粒商城:04. 逆向工程完善微服务系统
- paip.提升性能---list,arraylist,vector,linkedlist,map的选用..
- 网页内嵌多媒体内容的完美实现
- Docker镜像重命名
- python汉化补丁包怎么安装_如何安装python包
- 流水线作业调度问题-动态规划(运用Johnson算法)
- 【Blender】UV贴图相关学习
- IPv4和IPv6、局域网和广域网、网关、公网IP和私有IP、IP地址、子网掩码、网段、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?
- JavaSE-day01
- Netty面试题和答案
- 没有备份电脑照片怎么恢复?分享3种找回照片方法
热门文章
- 高性能web平台【Lua语言快速入门】
- 使用C#.NET WebBrowser控件导航到不同的网站出现 所请求的资源正在使用中。 (从HRESULT异常:0x800700AA)
- 区块链的奥卡姆剃刀在哪里?(1)
- C++学习笔记5——引用
- 用Java写一个年薪计算器,助你简单完成大量税前税后总薪计算量
- canvas在PC端实现振幅大小可变的动态波浪图
- 利用批处理代码快速恢复桌面图标小箭头,更可能解决win7出现黑色方块问题
- 服务器物理内存利用率,服务器提高物理内存利用率
- jre包括jvm和java核心类库_JDK、JRE、JVM分别是什么及它们之间的有什么关联
- 报错:Expected singleton