r - 使用交叉验证时,有没有办法确保每个折叠以某种方式包含至少几个真实类的实例?
问题描述
我正在使用带有插入符号的交叉折叠验证来拟合模型:
library(caret)
## tuning & parameters
set.seed(123)
train_control <- trainControl(
method = "cv",
number = 5,
savePredictions = TRUE,
verboseIter = TRUE,
classProbs = TRUE,
summaryFunction = my_summary
)
linear_model = train(
x = select(training_data, Avg_Load_Time),
y = target,
trControl = train_control,
method = "glm", # logistic regression
family = "binomial",
metric = "ROC"
)
问题是,在大约 5K 行中,我只有大约 120 个真实案例。当通过插入符号“glm.fit:出现数字 0 或 1 的拟合概率”使用 GLM 时,这会引发警告消息。
是否有我可以设置的参数或某种方法来确保每个折叠都有一些真实的情况?
解决方案
当你打乱数据并且每个类都有足够的例子时,它会更容易。
如果您没有足够的示例,您可以使用 SMOTE(Synthetic Minority Oversampling Technique)增加少数类的大小。包smotefamily
在 R 中。
然后您将能够进行 5 或 10 倍的交叉验证而不会引发任何问题。
推荐阅读
- visual-studio-code - 是否可以使用 Puppeteer 自动化 Visual Studio Code,例如 Chrome?
- c# - 脉搏血氧仪服务 (0x1822) 能否显示在“nRF Connect for Mobile”上
- r - R如何在交易数据中合并项目集的类别
- node.js - 更新所有记录的子文档数组中的字段
- r - 如何一次从多个文件夹导入多个 .csv 文件并跳过行?
- javascript - 如何重定向到同一域中的新页面
- list - SharePoint 验证大写字符
- android - Android 9.0 中的 TextToSpeech 有错误或不支持?
- c# - 如何替换 DataGridView 中的整行值?
- javascript - 在Angular中倒退时间的最佳方法是什么