【发布时间】:2019-01-12 05:52:00
【问题描述】:
刚刚切换到mlr 用于我的机器学习工作流程。我想知道是否可以使用单独的验证集来调整超参数。根据我的最低理解,makeResampleDesc 和 makeResampleInstance 只接受从训练数据中重新采样。
我的目标是使用验证集调整参数并使用测试集测试最终模型。这是为了防止过拟合和知识泄露。
这是我在代码方面所做的:
## Create training, validation and test tasks
train_task <- makeClassifTask(data = train_data, target = "y", positive = 1)
validation_task <- makeClassifTask(data = validation_data, target = "y")
test_task <- makeClassifTask(data = test_data, target = "y")
## Attempt to tune parameters with separate validation data
tuned_params <- tuneParams(
task = train_task,
resampling = makeResampleInstance("Holdout", task = validation_task),
...
)
从错误消息来看,评估似乎仍在尝试从训练集中重新采样:
00001:resample.fun 中的错误(learner2,task,resampling,measures = 措施,:数据集的大小:19454 和重采样实例: 1666333 不同!
有人知道我应该怎么做吗?我是否以正确的方式设置了所有内容?
【问题讨论】:
-
您不需要将数据拆分为单独的任务,您可以只使用一个和nested resampling。特别是,您将对外部进行坚持重采样,并对内部进行任何您想要的其他操作。
标签: r hyperparameters mlr