我试图通过遵循Max Khun的应用预测建模书来了解插入符号的工作原理,但是无法理解插入符号的混淆矩阵功能是如何工作的。
我训练了训练数据集(training [,fullSet]),它有8190行和1073列,使用glmnet如下:
glmnGrid <- expand.grid(alpha = c(0, .1, .2, .4, .6, .8, 1),
lambda = seq(.01, .2, length = 40))
ctrl <- trainControl(method = "cv",
number = 10,
summaryFunction = twoClassSummary,
classProbs = TRUE,
index = list(TrainSet = pre2008),
savePredictions = TRUE)
glmnFit <- train(x = training[,fullSet],
y = training$Class,
method = "glmnet",
tuneGrid = glmnGrid,
preProc = c("center", "scale"),
metric = "ROC",
trControl = ctrl)
然后,我从契合中打印出混淆矩阵:
glmnetCM <- confusionMatrix(glmnFit, norm = "none")
当我查看混淆矩阵时,我得到了以下结果:
Reference
Prediction successful unsuccessful
successful 507 208
unsuccessful 63 779
但是,我不明白为什么混淆表只有1757个观察值(1757 = 507 + 208 + 63 + 779),因为插入符号的混乱矩阵。文档说&#34;当火车是用于调整模型,它跟踪保留样本的混淆矩阵单元条目。&#34;由于训练数据集有8190行,而我使用了10倍的CV,我认为混淆矩阵应该基于819个数据点(819 = 8190/10),但实际情况并非如此。
显然,我并不完全了解插入符号的火车控制或火车是如何工作的。有人可以解释我误解的内容吗?
非常感谢你的帮助。
答案 0 :(得分:1)
问题出在控制参数中。您使用的是method = "cv"
和number = 10
,但您还指定了用于拟合模型的精确重新采样(通过index
参数)。我假设这是来自the book的授权数据。在第12章中,我们描述了数据分裂方案,其中pre2008
向量表明8,190个样本中的6,633个将用于训练。在模型调整过程中遗漏了1,557:
> dim(training)
[1] 8190 1785
> length(pre2008)
[1] 6633
> 8190-6633
[1] 1557
非pre2008
样本的预测就是您在表格中看到的内容。如果您尝试重现我们所拥有的内容,则第312页具有正确的语法:
ctrl <- trainControl(method = "LGOCV",
summaryFunction = twoClassSummary,
classProbs = TRUE,
index = list(TrainSet = pre2008))
如果您只想做10倍的简历,请删除index
参数。
tl; dr 控制功能表示10倍CV,但index
参数表示应该使用1,557个样本。
最高