学习者是否需要将任务拆分为训练集和测试集,还是他们自己完成

Do learners require the task to be split in to train and test sets, or do they do it themselves

下面的代码是 mlr3cluster Github repo 中的示例。我的问题是学习者是否训练过度,因为任务没有被分成训练集和测试集,或者它是否在内部自行处理?

我猜是这样,但我不确定,我是 R 和 mlr3 的新手,似乎找不到关于这个主题的文档。

library(mlr3)
library(mlr3cluster)

task = mlr_tasks$get("usarrests")
learner = mlr_learners$get("clust.kmeans")
learner$train(task)
preds = learner$predict(task = task)

正如评论中所指出的,学习者不会为自己拆分数据。 resampling part of the mlr3 book 对此有更多详细信息 - 简短版本是 mlr3 提供了许多自动拆分数据的方法,然后您可以使用这些方法以无偏见的方式评估学习者诱导的模型。

综上所述,对于聚类,这并不是以相同的方式真正应用。这是因为聚类是一种无监督方法(即没有我们希望模型学习的地面实况数据)。因此,如果您感兴趣的只是如何将观察结果分配给集群以进行进一步分析,那么您在代码中所做的就很好。

但是,如果您将其视为分类问题(即您希望聚类恢复原始任务中包含的 类),则需要拆分为训练和测试。在那种情况下,我建议使用分类学习器而不是聚类方法。