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

如何用tidymodels结合交叉验证比较不同特征的线性回归模型?

用tidymodels交叉验证比较不同特征的线性回归模型

核心思路

同类型模型(均为线性回归)但特征不同的比较,核心是给每个特征组合定义独立的建模工作流,然后在完全相同的交叉验证折上分别拟合评估,最后基于交叉验证的RMSE结果做公平对比。


具体步骤与代码示例

1. 加载依赖包

library(tidymodels)
library(tidyverse)

2. 生成交叉验证折

先基于你的数据集创建交叉验证划分,确保三个模型共用同一套样本拆分,消除样本差异对结果的影响:

# 假设你的数据集名为df,包含目标变量y、自变量a和b
cv_folds <- vfold_cv(df, v = 10, repeats = 3) # 10折交叉验证重复3次,可按需调整

3. 定义各模型的工作流

每个特征组合对应一个独立工作流,绑定线性回归模型和对应公式:

# 模型A:仅用特征a
wf_a <- workflow() %>%
  add_model(linear_reg() %>% set_engine("lm")) %>%
  add_formula(y ~ a)

# 模型B:仅用特征b
wf_b <- workflow() %>%
  add_model(linear_reg() %>% set_engine("lm")) %>%
  add_formula(y ~ b)

# 模型AB:同时用a和b
wf_ab <- workflow() %>%
  add_model(linear_reg() %>% set_engine("lm")) %>%
  add_formula(y ~ a + b)

4. 运行交叉验证拟合

用fit_resamples在交叉验证折上拟合每个工作流,指定评估指标为RMSE:

# 指定仅评估RMSE(可按需添加mae等其他指标)
metric_spec <- metric_set(rmse)

# 分别拟合三个模型的交叉验证
results_a <- fit_resamples(wf_a, resamples = cv_folds, metrics = metric_spec)
results_b <- fit_resamples(wf_b, resamples = cv_folds, metrics = metric_spec)
results_ab <- fit_resamples(wf_ab, resamples = cv_folds, metrics = metric_spec)

5. 汇总并对比结果

收集所有模型的交叉验证指标,通过数值或可视化方式比较性能:

# 合并三个模型的结果
all_results <- bind_rows(
  collect_metrics(results_a) %>% mutate(model = "model_A"),
  collect_metrics(results_b) %>% mutate(model = "model_B"),
  collect_metrics(results_ab) %>% mutate(model = "model_AB")
)

# 查看RMSE的均值、标准误等统计量
all_results %>% select(model, .metric, mean, std_err, n)

# 可视化RMSE对比(带95%置信区间)
all_results %>%
  filter(.metric == "rmse") %>%
  ggplot(aes(x = model, y = mean, ymin = mean - 1.96*std_err, ymax = mean + 1.96*std_err)) +
  geom_pointrange(color = "#2E86AB") +
  labs(title = "交叉验证RMSE对比", y = "平均RMSE(95%置信区间)", x = "模型") +
  theme_minimal()

补充说明

  • 若需判断模型间性能差异是否显著,可针对各折的RMSE结果做配对t检验,或使用tidyposterior包做贝叶斯后验对比。
  • 若数据集存在类别变量或需要标准化,可在工作流中添加预处理步骤(如add_recipe),确保三个模型的预处理逻辑一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:05:36