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

在mlr3基准测试中拟合含交互项/二次项的线性回归模型

在mlr3基准测试中拟合含交互项/二次项的线性回归模型

要在mlr3的基准测试中实现带交互项或二次项的线性回归,核心是通过mlr3pipelines构建特征转换+模型拟合的管道,再将管道作为learner加入基准测试流程。以下是具体实现:

完整示例代码

library(mlr3verse)
library(mlr3pipelines) # 显式加载管道包

# 1. 定义基础组件
tskScen <- tsk("mtcars")
msrMSE <- msr("regr.rmse")
rsgScen <- rsmp("cv", folds = 4)

# 2. 构建带特征转换的线性回归管道
# 生成二次项+两两交互项(保留原变量),再拟合线性回归
lm_poly_interact <- po("polynomial", degree = 2, include_intercept = FALSE) %>>% 
  po("regr.lm")
lm_poly_interact$id <- "regr.lm_poly_interact" # 给管道命名,方便结果识别

# 3. 定义所有参与基准测试的learner
learners <- list(
  lrns("regr.lm"),
  lrns("regr.ranger"),
  lm_poly_interact # 加入自定义管道learner
)

# 4. 运行基准测试并评估
benchdesign <- benchmark_grid(tskScen, learners, rsgScen)
bmr <- benchmark(benchdesign, store_models = TRUE)
bmr$aggregate(msrMSE)

关键细节说明

  • 特征转换算子:
    • po("polynomial", degree = 2):默认会生成原变量 + 所有变量的二次项 + 所有两两变量的交互项。
    • 若仅需交互项:设置interaction_only = TRUE,即po("polynomial", degree = 2, interaction_only = TRUE, include_intercept = FALSE)。
    • 若仅需二次项:可通过po("mutate")手动生成单个变量的二次项,或结合过滤算子剔除交互项特征。
  • 管道拼接:用%>>%将特征转换算子与回归模型算子拼接,形成完整的学习管道,管道可直接作为learner参与基准测试。
  • 结果识别:给管道设置id后,在聚合结果中能清晰区分普通线性回归和带特征转换的线性回归。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:05:21