Caret包中的数据分区和过拟合

Data Partition in Caret Package and Over-fitting

我正在阅读 caret 包,我看到了那个代码;

createDataPartition(y, times = 1, p = 0.5, list = TRUE, groups = min(5,
length(y)))

我想知道 "times" 表达式。所以,如果我使用这段代码,

inTrain2 <- createDataPartition(y = MyData$Class ,times=3, p = .70,list = FALSE)

training2 <- MyData[ inTrain2,]    # ≈ %67 (train)
testing2<- MydData[-inTrain2[2],]  # ≈ %33 (test)

会不会是过拟合的问题?还是用于某种重采样方法(无偏)?

非常感谢。

编辑:

我想提一下,如果我使用此代码;

 inTrain2 <- createDataPartition(y = MyData$Class ,times=1, p = .70,list = FALSE) 
 training2<- MyData[ inTrain2,] #142 samples # ≈ %67 (train) 
  testing2<- MydData[-inTrain2,] #69 samples # ≈ %33 (test)

我将得到 211 个样本并且 ≈ %52 准确率,另一方面,如果我使用此代码;

  inTrain2 <- createDataPartition(y = MyData$Class ,times=3,p =.70,list = FALSE) 
   training2<- MyData[ inTrain2,]     # ≈ %67 (train) # 426 samples 
    testing2<- MydData[-inTrain2[2],] # ≈ %33 (test)  # 210 samples

我将得到 536 个样本和 ≈ %98 准确率。

谢谢。

不清楚你为什么在这个问题中混合过拟合; times 只是指您想要多少个不同的分区 (docs)。让我们看一个带有 iris 数据的例子:

library(caret)
data(iris)

ind1 <- createDataPartition(iris$Species, times=1, list=FALSE)
ind2 <- createDataPartition(iris$Species, times=2, list=FALSE)

nrow(ind1)
# 75
nrow(ind2)
# 75

head(ind1)
     Resample1
[1,]         1
[2,]         5
[3,]         7
[4,]        11
[5,]        12
[6,]        18

head(ind2)
     Resample1 Resample2
[1,]         2         1
[2,]         3         4
[3,]         6         6
[4,]         7         9
[5,]         8        10
[6,]        11        11

两个索引的长度都是 75(因为我们使用了默认参数 p=0.5,即初始数据集行的一半)。 ind2的列(不同样本)之间是独立的,不同iris$Species的类比保留,例如:

length(which(iris$Species[ind2[,1]]=='setosa'))
# 25
length(which(iris$Species[ind2[,2]]=='setosa'))
# 25