-2

我正在尝试应用增强模型,但我不断收到此错误。任何帮助都将不胜感激。如果您想知道,这是来自 kaggle、UCI 信用卡数据的数据集。

DataSplit <- createDataPartition(UCIdata$default.payment.next.month, 
                                 p=.8,list=FALSE)
boosttrain <- UCIdata[DataSplit, ]
boosttest <- UCIdata[-DataSplit, ]
gmbGrid2 <- expand.grid(maxdepth = seq(1,10,1), iter = 50, nu = seq(0.1, 1, 0.1))
boostingcontrol2 <- trainControl(method = "repeatedcv", 
                                 classProbs = TRUE, 
                                 summaryFunction = twoClassSummary)
gmbFit2 <- train(default.payment.next.month~., data = boosttrain[, 2:25],
                 method = "ada", trControl = boostingcontrol2, 
                 verbose = FALSE, tuneGrid = gmbGrid2)

然后我把这个拿出来。

警告消息:1:在 train.default(x, y, weights = w, ...) 中:指标“准确度”不在结果集中。将改为使用 ROC。2:在 eval(expr,envir,enclos)中:Fold01.Rep1 的预测失败:nu=0.1,maxdepth=1,iter=50 eval(expr,envir,enclos)中的错误:找不到对象'PAY_0.1'

在数据集中没有PAY_0.1, 只有PAY_0, PAY_2, PAY_3,..., PAY_6。哪里PAY_0.1来的?

4

1 回答 1

1

我猜 PAY_0 是您数据集中的二进制/因子变量。PAY_0.1 是通过扩展此变量创建的虚拟变量,即 PAY_0.0 和 PAY_0.1 。PAY_0 的 1 很可能很少,因此 PAY_0.1 的 1 也很少。与 CV (repeatedcv) 一起进行训练时,其中一个折叠可能没有任何 1,因此会出现此错误。或者,当您构建深度为 1 的树时,可能没有基于 PAY_0.1 变量的树损坏。

要纠正问题,请执行以下操作:

  1. 开始你的深度范围有点高。因此,maxdepth=seq(1,10,1)如果您使用,则maxdepth=seq(4,10,1)可能不会遇到此问题。深度 1 树太浅。
  2. 检查 PAY_0 的分布情况。如果 1 太少,那么您可以对 1 进行上采样或对 0 进行下采样。
于 2017-01-20T10:48:56.267 回答