用于特征选择、不平衡数据集的随机森林交叉验证

机器算法验证 r 交叉验证 特征选择
2022-04-08 18:43:39

我有一个 5297X26 的不平衡数据集,class1 有 588 个样本,class2 有 4709 个样本。我使用以下代码来执行随机森林:

rfp<-randomForest(label~.,data=data,importance=TRUE,proximity=TRUE,replace=TRUE,sampsize=c(588,588))    

因此,我可以通过在每次迭代中从每个类中选择 588 个样本来解决不平衡问题。但我也想对特征选择进行交叉验证。我打算使用的函数是 rfcv 。我尝试将 sampsize=c(588,588) 添加到函数中,但没有成功。如何在此函数中执行采样?

2个回答

您的 class1 和 class2 总和为 588 和 4709 加起来不是 5267 而是 5297。但是假设您有一组 5297x26 的回归量,我可以通过您发布的电话估算随机福雷斯特

data <- data.frame(matrix(rnorm(5297*26), ncol=26), 
                   label=c(rep('class1', 588), 
                           rep('class2', 4709)))
randomForest(label~., data=data,importance=TRUE, proximity=TRUE, 
             replace=TRUE, sampsize=c(588,588))    

也许你可以使用每个类的恒定分数的分层抽样,所以如果你想要每个类的 2/3,你可以使用sampsize=c(392, 2472)

任何需要您丢弃数据才能使用它的方法都是有缺陷的。您可能很想这样做,因为您打算使用不连续的不正确的准确性评分规则,例如“正确”“分类”的比例。这个特定的准确度分数是由阳性病例的流行率任意操纵的,与一致性概率不同(c-指数; ROC 区域)和其他预测歧视的措施。