微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在插入符号的traincontrol中使用上采样时样本大小不会改变,而应该在内部或外部进行上采样

如何解决为什么在插入符号的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 举报,一经查实,本站将立刻删除。