如何解决为什么在插入符号的traincontrol中使用上采样时样本大小不会改变,而应该在内部或外部进行上采样
嗨,这可能是一个愚蠢的问题...但是我尝试用Google搜索,却没有找到答案。
我想使用R包插入符号随机森林来训练模型。
在这种情况下,我的样本是不平衡数据。
Group1 14;第2组49
我想解决不平衡的问题,因此决定进行上采样(最简单的方法)。 查看插入符号的教程后,有两种方法可以执行此操作。 一种是在外面做,一种是在里面做。
章11.1 11.2 https://topepo.github.io/caret/subsampling-for-class-imbalances.html
我的问题1是:如果我是在trainControl函数中执行的,则样本量没有增加。
下面是我的代码
ctrl <- trainControl(method="cv",number = 5,summaryFunction=twoClassSummary,sampling = "up",classprobs=T,savePredictions = T,returnResamp = "all")
set.seed(1234)
model <- train(Bgroup ~ .,data=input_data,method="rf",preProc=c("center","scale","nzv"),trControl=ctrl,tuneLength = 10,metric = "ROC"
)
但是,当我研究该模型的细节
> model
Random Forest
63 samples
20 predictors
2 classes: 'Group1','Group2'
Pre-processing: centered (20),scaled (20)
resampling: Cross-Validated (5 fold)
Summary of sample sizes: 51,50,51,50
Addtional sampling using up-sampling prior to pre-processing
resampling results across tuning parameters:
mtry ROC Sens Spec
2 0.9366667 0.7000000 0.9600000
样本数量仍然
样本量摘要:51、50、50、51、50 在预处理之前使用上采样进行附加采样
这是否对我来说不起作用?感觉真的很困惑
我的问题2:我也可以在训练程序之外进行升采样。但是我不确定哪个(内部还是外部)更好?
如果我使用上采样,性能会被高估吗?因为那样的话,性能将会得到极大的改善。
下面的示例代码
set.seed(9560)
up_train <- upSample(x = imbal_train[,-ncol(imbal_train)],y = imbal_train$Class)
然后使用此up_train作为训练部分的输入。
感谢您的每条评论!非常感谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。