You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用全数据集调优学习器?mlr3如何结合特征选择与模型调优

关于mlr3使用的两个问题解答

问题1:全量数据调优的合理性判断

  • 首先明确mlr3gallery的案例多为教程演示属性,为了降低理解门槛、聚焦调优操作本身,普遍省略了嵌套交叉验证的外层评估流程,不能直接等同于生产落地的标准流程。
  • 全量数据调优是否合理完全取决于你的使用目标:
    • 如果你的最终目标是训练可直接上线部署的模型,不需要再对这套建模流程的泛化性能做无偏估计,用全量数据调优是完全合理的:调优得到最优超参数后,再用全量数据+最优参数训练最终模型即可。
    • 如果你需要先验证整套建模+调优流程的泛化能力,必须使用嵌套交叉验证:外层交叉验证负责输出无偏的性能估计,调优操作完全放在外层每个训练折的内部执行,绝对不能让外层测试集的信息泄露到调优环节,否则得到的性能估计会存在乐观偏差。

问题2:特征选择与模型调优结合的实现方案

mlr3生态下完全可以通过mlr3pipelines管道工具实现该需求,常用两种实现路径:

  1. 过滤式特征选择+超参数联合调优
    将特征选择节点和学习器节点串联为图学习器,同时对特征选择的阈值/保留数量、学习器超参数做联合调优,示例逻辑如下:
# 加载依赖包
library(mlr3)
library(mlr3pipelines)
library(mlr3tuning)
library(mlr3filters)

# 构造管道:先做F检验特征过滤,再接SVM学习器
graph = po("filter", filter = flt("f_test"), filter.nfeat = to_tune(5, 20)) %>>%
  po("learner", lrn("classif.svm", 
    cost = to_tune(1e-2, 1e2),
    kernel = to_tune(c("linear", "rbf"))
  ))

# 转为图学习器
graph_learner = as_learner(graph)

# 后续可直接对graph_learner执行常规调优流程,特征数和SVM参数会同时优化
  1. 包裹式/嵌入式特征选择+超参数联合调优
    如果需要用递归特征消除、序列选择这类wrapper式特征选择,可以结合mlr3fselect包实现:将特征选择实例与调优实例同时嵌套进交叉验证的内层,或直接用AutoFSelector包裹带调参空间的学习器,对AutoFSelector整体执行调优即可。
    注意:如果需要得到无偏的泛化性能估计,整套特征选择+调优的流程必须全部放在嵌套交叉验证的内层执行,不可引入外层测试集的信息。

内容的提问来源于stack exchange,提问作者LengJH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:42:03