《应用预测建模》Applied Predictive Modeling (2013) by Max Kuhn and Kjell Johnson,林荟等译
第四章 过度拟合与模型调优
4. I .考虑1.1 中描述过的音乐流派数据。在这个例子里,建模的目的是用预测变量将音乐样本划分到相应的音乐流派中,
( a )你打算用什么方法分割数据?解释其原因。
( b )用本章介绍的工具,给出能实现该方法的程序代码。
网站: 音乐流派数据集
( a )你打算用什么方法分割数据?解释其原因。
本数据集有12495个样本,数量较大。
在划分训练集和测试集时,使用分层随机抽样,因为响应变量分布不平衡。
如果运用的模型需要确定最优参数,或者需要在不同模型之间进行比较,可以使用十折交叉验证。因为对于大样本,不同重抽样方法之间的区别变得不那么明显,而计算量将变成一个重要因素。这种情况下10 折交叉验证的方差适中,偏差较小,而且计算速度相对较快。
( b )用本章介绍的工具,给出能实现该方法的程序代码。
#分层随机抽样
library(caret)
set.seed(100)
trainingRows<-createDataPartition(Musci$class,p=.8,list=FALSE) #返回索引矩阵
traindata<-Musci[trainingRows,]
testdata<-Musci[-trainingRows,]
实现十折交叉验证,可以使用caret包中的train函数,在设定trControl参数时,设定
trControl = trainControl(method = "cv", number = 10)
4.2 考虑1. 4 节中描述过的渗透性数据。在这个例子里目的是用预测变量对化合物的渗透性进行建模。
( a)你打算用什么方法分割数据?解释原因。
( b )用本章介绍的工具,给出能实现该方法的程序代码。
(a)你打算用什么方法分割数据?解释原因。
当样本量不大时,就应避免划分测试集,因为:
- 模型拟合需要利用任何一个可能的样本点。
- 测试集的样本量或许不足以提供一个合理论断所需要的信息量和精度,测试集带有的不确定性不能忽视,选取的不同测试集给出的结果可能大相径庭。
鉴于渗透率模型样本量只有165个,因此应避免划分单一测试集,而是使用交叉验证一类的重抽样方法。
在该小样本量下,建议使用重复10 折交叉验证,原因如下:得到的偏差和方差都适中,而且在给定样本量的情况下计算量也并不大。
( b )用本章介绍的工具,给出能实现该方法的程序代码。
可以使用caret包中的train函数,在设定trControl参数时,设定
rControl=trainControl(method="repeatedcv",repeats=5
#模型评估表现默认使用自助法bootstrap,trainControl函数用来实现重复十折交叉验证(重复次数为5次)
书中相关内容: