machine-learning - 学习者的基准比较结果取决于重采样的实例化。我该如何解释呢?
问题描述
我运行下面的代码。如果我停用实例化(如图所示),我的基准比较结果对于三个基准实验会有所不同,并且哪个学习器表现更好的结论可能会有所不同。
我该如何解决这个问题?一种方法可能是对大量重采样进行平均。我可以为此编写代码,但也许这在调用“基准”时已经是一个选项?
resampling = rsmp("cv", folds=20)
#resampling$instantiate(task) # results below will (and shall) differ, if instantiation is not performed here
design = benchmark_grid(
tasks = task,
learners = list(glrn_knn_pca, glrn_knn_nopca),
resamplings = resampling
)
design2 = benchmark_grid(
tasks = task,
learners = list(glrn_knn_pca, glrn_knn_nopca),
resamplings = resampling
)
design3 = benchmark_grid(
tasks = task,
learners = list(glrn_knn_pca, glrn_knn_nopca),
resamplings = resampling
)
bmr = benchmark(design)
bmr2 = benchmark(design2)
bmr3 = benchmark(design3)
bmr$aggregate(msr("classif.auc"))
bmr2$aggregate(msr("classif.auc"))
bmr3$aggregate(msr("classif.auc"))
解决方案
在我看来,您可能希望使用重复的 CV 来最小化分区引入的可变性。
resampling = rsmp("cv", folds = 20)
您可以使用resampling = rsmp("repeated_cv", folds = 20, repeats = 100)
和创建 100 个不同的重采样场景,并在这些场景中对所有学习者进行基准测试,而不是您。
这是 ML 中减少单个分区影响的常用方法。
推荐阅读
- azure - 为什么“Microsoft.Web/sites”的“FileSystemUsage”指标总是返回零?
- javascript - React Native API 数据获取并保存为全局数据
- java - Kafka连接音频文件
- moodle - 具有固定和预先指定数量的正确和错误答案的问题
- php - Laravel - 从产品表中获取结果,我将结果与属性表匹配
- xamarin - 更新 Nuget 包后缺少 Xamarin 代码
- c# - 程序集 '' 引用程序集 'microsoft.sqlserver.dtsruntimewrap, ',它在当前数据库中不存在
- java - 如何使用流和 lambda 从 int[] 数组中打印和选择数字
- python - 查找文本文件中适合两种格式之一的所有字符串
- powerbi - Power BI如何根据日期切片器和过滤器显示列的最新值?