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

tidymodels的yardstick是否适合评估RO、AUC、RMSE等指标?是否值得尝试?

关于tidymodels与yardstick的指标评估问题解答

1. yardstick是否是评估ROC AUC、RMSE等指标的优质工具?

绝对是。yardstick是tidymodels生态中专门负责模型评估的核心包,原生支持你提到的ROC AUC、RMSE、MAE、F1分数等几乎所有常用分类/回归评估指标。它完全贴合tidyverse风格,输出结果为整洁的数据框,方便后续可视化、汇总或进一步分析,且计算逻辑严谨,完全符合统计领域的标准定义。

2. 用tidymodels做指标评估是否值得?

非常值得,结合你的使用背景(用过caret、mlr3),tidymodels有几个显著优势:

  • 模块化设计:不像caret是大而全的单包,tidymodels将建模流程拆分为多个专注子包(rsample负责交叉验证抽样、parsnip统一模型接口、yardstick计算指标、tune做超参数调优),逻辑更清晰,扩展更灵活。
  • 统一的tidy风格:如果你熟悉dplyr、ggplot2等tidyverse工具,学习成本极低,所有操作语法逻辑一致,无需在不同模型包的语法间切换。
  • 支持常用模型:parsnip包提供统一接口,可直接调用XGBoost、randomForest、Keras等模型,体验和caret类似但更灵活。
  • 对比mlr3:mlr3功能虽强,但tidymodels更贴合tidyverse生态,若你日常主要用tidyverse做数据处理,二者衔接会更顺畅。

3. 如何实现交叉验证、模型对比与指标计算?

以下是覆盖你需求的实操示例:

分类任务(ROC AUC、F1分数)

# 加载必要包
library(tidymodels)
library(randomForest)
library(xgboost)

# 准备示例数据(将mtcars的am转为分类变量)
mtcars$am <- factor(mtcars$am, levels = c(0,1), labels = c("auto", "manual"))

# 创建10折分层交叉验证集
set.seed(123)
cv_folds <- vfold_cv(mtcars, v = 10, strata = am)

# 定义随机森林模型
rf_spec <- rand_forest(trees = 100) %>%
  set_mode("classification") %>%
  set_engine("randomForest")

# 定义XGBoost模型
xgb_spec <- boost_tree(trees = 100, tree_depth = 3) %>%
  set_mode("classification") %>%
  set_engine("xgboost")

# 创建工作流(绑定公式与模型)
rf_wf <- workflow() %>%
  add_formula(am ~ .) %>%
  add_model(rf_spec)

xgb_wf <- workflow() %>%
  add_formula(am ~ .) %>%
  add_model(xgb_spec)

# 执行交叉验证并指定要计算的指标
rf_res <- fit_resamples(
  rf_wf,
  resamples = cv_folds,
  metrics = metric_set(roc_auc, f1)
)

xgb_res <- fit_resamples(
  xgb_wf,
  resamples = cv_folds,
  metrics = metric_set(roc_auc, f1)
)

# 查看模型的交叉验证指标结果
collect_metrics(rf_res)
collect_metrics(xgb_res)

回归任务(RMSE、MAE)

# 定义线性回归模型
lm_spec <- linear_reg() %>%
  set_mode("regression") %>%
  set_engine("lm")

# 创建回归任务工作流(预测mpg)
lm_wf <- workflow() %>%
  add_formula(mpg ~ .) %>%
  add_model(lm_spec)

# 执行交叉验证并计算回归指标
lm_res <- fit_resamples(
  lm_wf,
  resamples = vfold_cv(mtcars, v = 10),
  metrics = metric_set(rmse, mae)
)

# 查看回归指标结果
collect_metrics(lm_res)

关键说明

  • metric_set()可自由组合所需指标,分类和回归指标均可按需指定;
  • fit_resamples()自动完成交叉验证的拟合与指标计算,无需手动循环处理每个折;
  • collect_metrics()返回的整洁数据框可直接用于对比不同模型性能,比如用dplyr筛选或ggplot2可视化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:25:39