我试图通过遵循Max的“应用预测建模”来了解插入符号是如何工作的,但是无法理解插入符号的confusionMatrix函数是如何工作的。
我使用glmnet训练了包含8190行和1073列的培训数据集(培训,fullSet),如下所示:
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)然后,我从fit打印出了混淆矩阵:
glmnetCM <- confusionMatrix(glmnFit, norm = "none")当我查看混淆矩阵时,我得到了以下结果:
Reference
Prediction successful unsuccessful
successful 507 208
unsuccessful 63 779但是,我不明白为什么混淆表只有1757个观测值(1757 = 507 + 208 + 63 + 779),因为插入符号的confusionMatrix.train文档说:“当train用于调优模型时,它会跟踪延迟样本的混淆矩阵单元格条目。”由于训练数据集有8190行,我使用了10倍的CV,所以我认为混淆矩阵应该基于819个数据点(819 = 8190 / 10),事实并非如此。
显然,我不完全明白插入器的trainControl或train是如何工作的。有人能解释一下我误解了什么吗?
非常感谢你的帮助。
李荣进
发布于 2014-04-11 18:45:16
问题在控制参数中。您使用的是method = "cv"和number = 10,但也指定了用于拟合模型(通过index参数)的精确重分配。我假设这是来自这本书的授权数据。在第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;博士说CV是10倍,但是index的论点说,应该使用1,557个样本中的一个。
最大值
https://stackoverflow.com/questions/22968436
复制相似问题