是否有 tidyverse/tidymodels (或基本 R)方法通过调整特定正百分位数的阈值来计算二元分类指标?
tidymodels 指南建议准备一个预测概率数据框,该数据框会产生正概率 (
.pred_1
),并且还包括实际的类别 Day90
:
> rf_fit %>% predict(test, type="prob") %>% bind_cols(test %>% select(Day90))
# A tibble: 31,586 × 3
.pred_1 .pred_0 Day90
<dbl> <dbl> <fct>
1 0.296 0.704 0
2 0.296 0.704 0
3 0.136 0.864 0
4 0.0690 0.931 0
5 0.0882 0.912 0
6 0.0948 0.905 0
7 0.157 0.843 0
8 0.0572 0.943 0
9 0.108 0.892 0
10 0.0466 0.953 0
# ℹ 31,576 more rows
# ℹ Use `print(n = ...)` to see more rows
type="quantile"
很有希望,但不适用于欧洲防风草的rand_forest()
。
理想情况下,有一个函数采用正百分位(例如 20%),并找到概率阈值
k
,该阈值导致大约 20% 的预测为正。我可以对概率进行排序并对 k
执行线性或二分搜索,但我确信这已经以更稳健的方式实现了。 dplyr::percent_rank()
似乎也很有希望。
这个问题很不清楚,但我猜你的意思是增益曲线:
library(tidymodels)
library(probably)
#>
#> Attaching package: 'probably'
#> The following objects are masked from 'package:base':
#>
#> as.factor, as.ordered
tidymodels_prefer()
options(pillar.advice = FALSE, pillar.min_title_chars = Inf)
head(segment_logistic)
#> # A tibble: 6 × 3
#> .pred_poor .pred_good Class
#> <dbl> <dbl> <fct>
#> 1 0.986 0.0142 poor
#> 2 0.897 0.103 poor
#> 3 0.118 0.882 good
#> 4 0.102 0.898 good
#> 5 0.991 0.00914 poor
#> 6 0.633 0.367 good
segment_logistic %>%
gain_curve(Class, .pred_good) %>%
autoplot()
创建于 2023-12-18,使用 reprex v2.0.2