caret包在机器学习会经常用到,它可以进行:数据预处理,特征选择,建模与参数优化,模型预测与检验。关于caret包在这些方面的应用可以参看文章:
R语言之-caret包应用
R语言caret包的学习(四)–建立模型及验证
R中模型性能的提升

本次介绍的是caret包在模型与参数优化上面的应用,主要函数为train函数
caret包中提供了很多种工具进行自动调整参数,train()函数作为接口,可以选择评估方法和度量性指标,自动寻找最优的参数。
主要考虑的问题:
(1)训练哪种模型法,(2)模型中哪些参数可以调整,可以调整的空间多大,(3)选择评价的标准

总结:train函数可以建立很多种模型,而且对于模型还可以根据不同的评价标准自动调整参数来找出最优的结果。所以train可以选择何种模型,选择调整哪些参数,调整参数的范围,和选择判断模型优劣的评判方式

train函数介绍

train(x, y, method = "rf", preProcess = NULL, ...,weights = NULL, metric = ifelse(is.factor(y), "Accuracy",  "RMSE"),maximize = ifelse(metric %in% c("RMSE", "logLoss", "MAE"), FALSE, TRUE),trControl = trainControl(), tuneGrid = NULL,tuneLength = ifelse(trControl$method == "none", 1, 3))

参数介绍:
x 行为样本,列为特征的矩阵或数据框。列必须有名字
y 每个样本的结果,数值或因子型
method 指定具体的模型形式,支持大量训练模型
preProcess 代表自变量预处理方法的字符向量。默认为空,可以是 “BoxCox”, “YeoJohnson”, “expoTrans”, “center”, “scale”, “range”, “knnImpute”, “bagImpute”, “medianImpute”, “pca”, “ica” and “spatialSign”.
weights 加权的数值向量。仅作用于允许加权的模型
metric 指定将使用什么汇总度量来选择最优模型。默认情况下,“RMSE” and “Rsquared” for regression and “Accuracy” and “Kappa” for classification
maximize 逻辑值,metric是否最大化
trControl 定义函数运行参数的列表。具体见下
tuneGrid 可能的调整值的数据框,列名与调整参数一致
tuneLength 调整参数网格中的粒度数量,默认时每个调整参数的level的数量

#例子

> #自动参数调整
> #使用caret包进行自动参数调整
> #举例
> #使用决策树模型对iris数据进行建模,
> #使用caret包中的train函数进行建模并进行自动参数调整
>
> library(caret)
> set.seed(1234)
> m_C50 <- train(Species~., data=iris,method='C5.0')
There were 40 warnings (use warnings() to see them)
> m_C50
C5.0 150 samples4 predictor3 classes: 'setosa', 'versicolor', 'virginica' No pre-processing
Resampling: Bootstrapped (25 reps)
Summary of sample sizes: 150, 150, 150, 150, 150, 150, ...
Resampling results across tuning parameters:model  winnow  trials  Accuracy   Kappa    rules  FALSE    1      0.9353579  0.9019696rules  FALSE   10      0.9370844  0.9045424rules  FALSE   20      0.9325835  0.8976068rules   TRUE    1      0.9382311  0.9062975rules   TRUE   10      0.9407392  0.9099910rules   TRUE   20      0.9385430  0.9066136tree   FALSE    1      0.9347127  0.9009924tree   FALSE   10      0.9369888  0.9044013tree   FALSE   20      0.9332286  0.8985820tree    TRUE    1      0.9375860  0.9053246tree    TRUE   10      0.9399845  0.9088007tree    TRUE   20      0.9392443  0.9076915Accuracy was used to select the optimal model using thelargest value.
The final values used for the model were trials = 10, model =rules and winnow = TRUE.

结果中包含候选模型的评估列表,可以发现共建立并测试了12个模型,基于3个C5.0调整参数的组合:model, trials和winnow。每个候选模型都给出了模型精度和Kappa统计量,最下方还展示了最佳后选模型所对应的参数值。
Kappa用来统计衡量模型的稳定性
很差的一致性: <0.2
尚可的一致性: 0.2~0.4
中等的一致性: 0.4~0.6
不错的一致性: 0.6~0.8
很好的饿一致性:0.8~1

本例子我们选择的模型为C5.0,但是我们对调节哪些参数和选择的标准都没有进行设置,下面我们来看一下如何定制的调整参数。

下面介绍一下trainControl函数
trainControl()函数用来创建一系列的配置选项,这些选项考虑到了诸如重抽样策略以及用于选择最佳模型的度量这些模型评价标准的管理。以上我们专注于两个主要参数:method和selectionFunction.
以上我们使用的是五折交叉验证的重抽样方法;
selectionFuncton参数可以设定一函数用来在各个候选者中选择特定的模型,共三个函数:
best函数简单地选择具有最好的某特定度量值的候选者,默认选项
oneSE函数选择最好性能标准差之内的最简单的候选者
Tolerance选择某个用户指定比例之内的最简单的候选者

trainControl(method = "boot", number = ifelse(grepl("cv", method), 10, 25),repeats = ifelse(grepl("[d_]cv$", method), 1, NA), p = 0.75,search = "grid", initialWindow = NULL, horizon = 1,fixedWindow = TRUE, skip = 0, verboseIter = FALSE, returnData = TRUE,returnResamp = "final",.....)

参数介绍:
method 重抽样方法:“boot”, “boot632”, “optimism_boot”, “boot_all”, “cv”, “repeatedcv”, “LOOCV”, “LGOCV” (for repeated training/test splits), “none” (only fits one model to the entire training set), “oob” (only for random forest, bagged trees, bagged earth, bagged flexible discriminant analysis, or conditional tree forest models), timeslice, “adaptive_cv”, “adaptive_boot” or “adaptive_LGOCV”
number folds的数量或重抽样的迭代次数
repeats 仅作用于k折交叉验证:代表要计算的完整折叠集的数量
p 仅作用于分组交叉验证:代表训练集的百分比
search Either “grid” or “random”,表示如何确定调整参数网格

总结:在train函数中定制调整参数的参数是trControl ,trGrid两个参数,一个参数可以设置重抽样的方法,一个参数用来设置需要调整哪些参数及调整的范围。使用trControl参数可以通过trainControl函数进行设置trControl参数,使用trGrid参数可以使用expand.grid函数进行设置trGrid参数

例子

#定制调整参数
> #trainControl这个函数是为了设置train函数重采样的方式,例如这里就是使用五折交叉验证的方法
> trControl <- trainControl(method = 'cv',number = 5,selectionFunction = 'oneSE')
> #expand.grid是用来设置需要调整的参数及调整的范围,结果用在train函数中
> grid <- expand.grid(.model='tree',
+                     .trials = c(1,3,5),
+                     .winnow='FALSE')
> set.seed(1234)
>
> m_C502 <- train(Species~., data=iris, method="C5.0",
+                 trControl=trControl,
+                 tuneGrid=grid)
Warning message:
In Ops.factor(x$winnow) : ‘!’ not meaningful for factors
> m_C502
C5.0 150 samples4 predictor3 classes: 'setosa', 'versicolor', 'virginica' No pre-processing
Resampling: Cross-Validated (5 fold)
Summary of sample sizes: 120, 120, 120, 120, 120
Resampling results across tuning parameters:trials  Accuracy   Kappa1       0.9266667  0.89 3       0.9333333  0.90 5       0.9333333  0.90 Tuning parameter 'model' was held constant at a value of tree
Tuning parameter 'winnow' was held constant at a value of FALSE
Accuracy was used to select the optimal model using  the one SE rule.
The final values used for the model were trials = 1, model = tree and winnow = FALSE.
>

caret包介绍学习之train函数介绍相关推荐

  1. linux 抓包生成文件,Linux下使用libpcap进行网络抓包并保存到文件(函数介绍)

    libpcap是一个抓取网络数据报文的C语言函数库,使用这个库可以非常方便的抓取网络上的报文,方便我们分析经过我们设备上的各种报文: 使用libcap库编译时都要在后面加上-lpcap选项 使用pca ...

  2. C++文件操作API函数介绍

    转自 http://www.studentblog.net/m/tonycat/archives/2006/26364.html 文件的基本概念 所谓"文件"是指一组相关数据的有序 ...

  3. Query框架学习第九天:jQuery工具函数介绍与使用

    j jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用j ...

  4. jQuery框架学习第九天:jQuery工具函数介绍与使用

    jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQu ...

  5. R语言使用psych包进行主成分分析PCA和探索性因子分析EFA的常用函数介绍:principal、fa、fa.parallel、factor.plot、fa.diagram、scree

    R语言使用psych包进行主成分分析PCA和探索性因子分析EFA的常用函数介绍:principal.fa.fa.parallel.factor.plot.fa.diagram.scree 目录

  6. R语言使用caret包的train函数构建adaboost模型、模型调优、自定义设置trainControl函数和tuneLength参数

    R语言使用caret包的train函数构建adaboost模型.模型调优.自定义设置trainControl函数和tuneLength参数 目录

  7. R----stringr包介绍学习

    1. stringr介绍 stringr包被定义为一致的.简单易用的字符串工具集.所有的函数和参数定义都具有一致性,比如,用相同的方法进行NA处理和0长度的向量处理. 字符串处理虽然不是R语言中最主要 ...

  8. R_stringr包介绍学习

    原文链接: http://www.cnblogs.com/nxld/p/6062950.html 1. stringr介绍 stringr包被定义为一致的.简单易用的字符串工具集.所有的函数和参数定义 ...

  9. R语言使用caret包的train函数构建xgboost模型(基于linear算法)模型构建分类模型、trainControl函数设置交叉验证参数、自定义调优评估指标

    R语言使用caret包的train函数构建xgboost模型(基于linear算法)模型构建分类模型.trainControl函数设置交叉验证参数.自定义调优评估指标.tuneLength参数和tun ...

最新文章

  1. Linq之Expression高级篇(常用表达式类型)
  2. 音视频技术开发周刊 | 162
  3. Java 7 Swing:创建半透明和成形的Windows
  4. java httpclient 关闭_【Java系列007】HttpClient调用:你考虑过关闭连接、并发了吗?...
  5. jquery ui autocomplete输入中文不自动完成的问题
  6. 初创公司5大Java服务困局,阿里工程师如何打破?
  7. cassss服务未启动_Mysql无法启动情况下,如何恢复数据呢?
  8. C#中的深度学习:预处理硬币检测数据集
  9. python机器学习案例系列教程——聚类算法总结
  10. 批量 // 注释替换为 /*的注释
  11. snmpwalk工具使用
  12. hbase的协处理器
  13. 【深度学习Deep Learning系列】word2vec和doc2vec
  14. html5中国产业联盟,中软国际联合发起HTML5+联盟为产业生态服务
  15. 音标、音节、音素、音符
  16. ROS修改小乌龟程序背景颜色
  17. http状态码有哪些 ,表示了什么
  18. 《设计模式解析》读书笔记
  19. javascript中的esm,import, export
  20. 客户端(浏览器)缓存

热门文章

  1. python填补缺失值数据驱动代码_python填补缺失值数据驱动代码_python数据预处理之缺失值的各种填补方式...
  2. Python爬虫项目整理
  3. JS中Object的方法汇总,包括assign、create、prototype等等
  4. 常用js的数组方法和对象方法
  5. 【Go-Lua】Golang嵌入Lua代码——gopher-lua
  6. 照片相框软件有什么?照片相框怎么加技巧分享
  7. 太阳能路灯网站SEO执行方案
  8. 使用php读取文件中的内容,以表格的形式进行输出。
  9. ibatis 使用入门
  10. Apache构建虚拟主机