问题描述
全部
我们有一个不平衡数据集,其中25%是响应者,总样本量为n = 552。 我们训练了模型(RF,GLMNET,XGBTREE),最大ROC约为0.570(即使使用默认值,UP,DOWN,SMOTE和ROSE采样)。并不是我们想要的。 我们决定通过使用引导方法增加样本大小来进行一些过采样。我将UpSampling函数修改为(仅添加了多达2000条记录的采样,保留了响应者的原始分布):
Remove-Migration
Add-Migration Initial
输出为:
bootIncrease<-list(name = "bootInc",func = function (x,y)
{
if (!is.data.frame(x)) {
x <- as.data.frame(x,stringsAsFactors = TRUE)
}
props<-round(table(y)*(2000/(table(y)["Y"]+table(y)["N"])))
x$.outcome <- y
x <- ddply(x,.(y),function(x,top=props) {
if (nrow(x) < top[parent.frame()$i[]]) {
ind <- sample(1:nrow(x),size = top[parent.frame()$i[]] - nrow(x),replace = TRUE)
ind <- c(1:nrow(x),ind)
x <- x[ind,drop = FALSE]
}
x
})
y <- x$.outcome
x <- x[,!(colnames(x) %in% c("y",".outcome")),drop = FALSE]
if (inherits(x,"matrix")) {
x <- as.matrix(x)
}
list(x = x,y = y)
},first = TRUE )
我的问题:
-
我期望ROC会更高。我使用增强数据(即n = 2000)进行了一些测试,并将其作为训练数据集输入,它给我的不仅仅是 ROC = 0.57-它大约让我ROC = 0.90
-
在哪里可以找到在TRAIN函数中输入重复CV作为训练的代码?我要确保为每个重复的cv循环输入新的引导数据
train_controlB <- trainControl(method="repeatedcv",number=3,repeats=2,savePredictions="all",returnResamp="all",classprobs=TRUE,summaryFunction=allSummary,sampling=bootIncrease) boot.rf<- train(vardep~.,data = training,method ='rf',metric='ROC',trControl =train_controlB)
作为训练数据集?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)