首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Caret训练与confusionMatrix函数

Caret训练与confusionMatrix函数
EN

Stack Overflow用户
提问于 2014-04-09 16:22:03
回答 1查看 3.4K关注 0票数 2

我试图通过遵循Max的“应用预测建模”来了解插入符号是如何工作的,但是无法理解插入符号的confusionMatrix函数是如何工作的。

我使用glmnet训练了包含8190行和1073列的培训数据集(培训,fullSet),如下所示:

代码语言:javascript
复制
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打印出了混淆矩阵:

代码语言:javascript
复制
glmnetCM <- confusionMatrix(glmnFit, norm = "none")

当我查看混淆矩阵时,我得到了以下结果:

代码语言:javascript
复制
               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是如何工作的。有人能解释一下我误解了什么吗?

非常感谢你的帮助。

李荣进

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-11 18:45:16

问题在控制参数中。您使用的是method = "cv"number = 10,但也指定了用于拟合模型(通过index参数)的精确重分配。我假设这是来自这本书的授权数据。在第12章中,我们描述了数据分割方案,其中pre2008向量表明,在8,190个样本中,有6,633个将用于训练。这使得在模型调优过程中忽略了1,557个:

代码语言:javascript
复制
> dim(training)
[1] 8190 1785
> length(pre2008)
[1] 6633
> 8190-6633
[1] 1557

对非pre2008样本的预测是你在表格中看到的。如果您试图复制我们所拥有的内容,那么第312页的语法是正确的:

代码语言:javascript
复制
ctrl <- trainControl(method = "LGOCV",
                     summaryFunction = twoClassSummary,
                     classProbs = TRUE,
                     index = list(TrainSet = pre2008))

如果你只想做10倍的简历,就别再提index的论点了。

控制功能tl;博士说CV是10倍,但是index的论点说,应该使用1,557个样本中的一个。

最大值

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22968436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档