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

如何修改mlr3的默认公式并在任务创建时自定义建模公式?

mlr3 自定义公式构建模型的规范实现方案

mlr3 的任务(Task)层默认不处理公式逻辑,特征构造的规则统一在流水线或者学习器层面实现,以下两种方案都比手动调用model.matrix生成特征再新建任务的方式更规范,不需要额外维护多份任务对象:

  • 方案1:通过mlr3pipelines的PipeOpFormula通用实现
    该方案适配所有学习器,不需要修改学习器参数,直接在流水线层面完成特征构造:
    1. 先构建原始任务(统一使用默认Y ~ .的全特征逻辑即可)
      library(mlr3)
      library(mlr3pipelines)
      # 替换为你自己的数据集和目标列Y
      task = as_task_regr(your_data, target = "Y")
      
    2. 构造带二阶交互项的特征处理节点
      po_interaction = po("formula", formula = Y ~ .^2)
      
    3. 对比时直接构建两条训练流水线即可:
      • 基线模型(Y ~ .):直接用原始任务训练学习器,不需要加特征处理节点
      • 交互项模型(Y ~ .^2):用po_interaction %>>% 学习器的流水线训练
        该方案可以直接接入mlr3的基准测试(benchmark)框架,批量对比两类模型的效果。
  • 方案2:通过学习器的formula参数实现(无需额外依赖包)
    如果你使用的学习器本身支持formula参数(比如regr.lm、classif.rpart等原生基于公式接口的学习器),可以直接在定义学习器时传入自定义公式:
    # 二阶交互项模型的学习器定义
    lrn_interaction = lrn("regr.lm", formula = Y ~ .^2)
    
    直接用原始任务训练该学习器即可,学习器会自动按照指定公式构造特征。

手动调用model.matrix生成特征的方案需要额外处理类别变量编码、特征命名、缺失值对齐等问题,且无法复用mlr3原生的特征元数据管理逻辑,仅适合临时验证场景使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:21:02