学习者基准比较的结果取决于重采样的实例化。我该如何解释呢?
The results of a benchmark comparison for learners depends on the instantiation of the resampling. How can I account for this?
我运行下面的代码。如果我停用实例化(如图所示),我的基准比较结果对于三个基准实验将不同,并且学习者表现更好的结论可能不同。
我该如何解决这个问题?一种方法可能是对大量重采样进行平均。我可以为此编写代码,但也许这在调用“基准”时已经是一个选项?
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("repeated_cv", folds = 20, repeats = 100)
代替 resampling = rsmp("cv", folds = 20)
并创建 100 个不同的重采样场景,并在这些场景中对所有学习者进行基准测试。
这是 ML 中减少单个分区影响的常用方法。
如果你想找出哪个学习者表现更好,仅仅比较聚合的性能指标是不够的。基准测试的统计测试和绘图在 mlr3benchmark 包中实现。
我运行下面的代码。如果我停用实例化(如图所示),我的基准比较结果对于三个基准实验将不同,并且学习者表现更好的结论可能不同。
我该如何解决这个问题?一种方法可能是对大量重采样进行平均。我可以为此编写代码,但也许这在调用“基准”时已经是一个选项?
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("repeated_cv", folds = 20, repeats = 100)
代替 resampling = rsmp("cv", folds = 20)
并创建 100 个不同的重采样场景,并在这些场景中对所有学习者进行基准测试。
这是 ML 中减少单个分区影响的常用方法。
如果你想找出哪个学习者表现更好,仅仅比较聚合的性能指标是不够的。基准测试的统计测试和绘图在 mlr3benchmark 包中实现。