【发布时间】:2023-01-07 00:21:25
【问题描述】:
使用 iris 数据集,使用迭代搜索和 roc_auc 调整 knn 分类器作为多重分类的指标。
每个潜在模型的一个 AUC 结果按预期计算,但是,该值不稳定,但受以下因素影响:
-
levels ("setosa", "virginica", "versicolor")在初始数据集的物种列中的顺序 -
roc_auc(truth = Species, .pred_setosa, .pred_virginica,.pred_versicolor)中列的顺序
-
这是否表明 AUC 的计算方法类似于将 Species 列的第一级设置为正事件(这在二元分类中是预期的,而在多重分类中,单个 AUC 基于例如一个对所有比较会合适吗)?
-
如果是这样,有没有办法根据例如“one vs all comparisons”产生的所有AUC值的平均AUC值?
-
是否也可以在迭代搜索时在
metric_set中实现?预先感谢您对我们的支持!
library(tidyverse) library(tidymodels) tidymodels_prefer() df <- iris %>% mutate(Species = factor(Species,levels = c("virginica", "versicolor", "setosa"))) splits <- initial_split(df, strata = Species, prop = 4/5) df_train <- training(splits) df_test <- testing(splits) df_rec <- recipe(Species ~ ., data = df_train) knn_model <- nearest_neighbor(neighbors = tune()) %>% set_engine("kknn") %>% set_mode("classification") df_wflow <- workflow() %>% add_model(knn_model) %>% add_recipe(df_rec) set.seed(2023) knn_cv <- df_wflow %>% tune_bayes( metrics = metric_set(roc_auc), resamples = vfold_cv(df_train, strata = "Species", v = 2), control = control_bayes(verbose = TRUE, save_pred = TRUE) ) cv_train_metrics <- knn_cv %>% collect_predictions() %>% group_by(.config, id) %>% roc_auc(truth = Species, .pred_setosa, .pred_virginica,.pred_versicolor)
【问题讨论】:
标签: r machine-learning tidymodels