当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R probably threshold_perf 生成跨概率阈值的性能指标


threshold_perf() 可以采用一组类别概率预测,并确定不同概率阈值和任何现有组的性能特征。

用法

threshold_perf(.data, ...)

# S3 method for data.frame
threshold_perf(
  .data,
  truth,
  estimate,
  thresholds = NULL,
  metrics = NULL,
  na_rm = TRUE,
  event_level = "first",
  ...
)

参数

.data

一个小标题,可能已分组。

...

目前未使用。

truth

真实 two-class 结果的列标识符(即一个因子)。这应该是一个不带引号的列名。

estimate

预测类概率的列标识符(数字)。这应该是一个不带引号的列名。

thresholds

概率阈值的数值向量。如果未指定,则使用 0.5 到 1.0 之间的一系列值。注意:如果使用此参数,则必须命名它。

metrics

NULLyardstick::metric_set() 以及要计算的性能指标列表。这些指标都应该面向硬类预测(例如 yardstick::sensitivity()yardstick::accuracy()yardstick::recall() 等),而不是类概率。 NULL 时使用一组默认指标(请参阅下面的详细信息)。

na_rm

单一逻辑:是否应该删除丢失的数据?

event_level

单个字符串。 "first""second" 指定将truth 的哪个级别视为"event"。

包含列的小标题: .threshold.estimator.metric.estimate 以及任何现有组。

细节

请注意,全局选项yardstick.event_first将用于确定哪个级别是感兴趣的事件。有关更多详细信息,请参阅 yardstick::sens() 的相关级别部分。

默认计算指标为:

如果传递的自定义指标不计算敏感性和特异性,则不会计算距离指标。

例子

library(dplyr)
data("segment_logistic")

# Set the threshold to 0.6
# > 0.6 = good
# < 0.6 = poor
threshold_perf(segment_logistic, Class, .pred_good, thresholds = 0.6)
#> # A tibble: 3 × 4
#>   .threshold .metric     .estimator .estimate
#>        <dbl> <chr>       <chr>          <dbl>
#> 1        0.6 sensitivity binary         0.639
#> 2        0.6 specificity binary         0.869
#> 3        0.6 j_index     binary         0.508

# Set the threshold to multiple values
thresholds <- seq(0.5, 0.9, by = 0.1)

segment_logistic %>%
  threshold_perf(Class, .pred_good, thresholds)
#> # A tibble: 15 × 4
#>    .threshold .metric     .estimator .estimate
#>         <dbl> <chr>       <chr>          <dbl>
#>  1        0.5 sensitivity binary         0.714
#>  2        0.6 sensitivity binary         0.639
#>  3        0.7 sensitivity binary         0.561
#>  4        0.8 sensitivity binary         0.451
#>  5        0.9 sensitivity binary         0.249
#>  6        0.5 specificity binary         0.825
#>  7        0.6 specificity binary         0.869
#>  8        0.7 specificity binary         0.911
#>  9        0.8 specificity binary         0.937
#> 10        0.9 specificity binary         0.977
#> 11        0.5 j_index     binary         0.539
#> 12        0.6 j_index     binary         0.508
#> 13        0.7 j_index     binary         0.472
#> 14        0.8 j_index     binary         0.388
#> 15        0.9 j_index     binary         0.226

# ---------------------------------------------------------------------------

# It works with grouped data frames as well
# Let's mock some resampled data
resamples <- 5

mock_resamples <- resamples %>%
  replicate(
    expr = sample_n(segment_logistic, 100, replace = TRUE),
    simplify = FALSE
  ) %>%
  bind_rows(.id = "resample")

resampled_threshold_perf <- mock_resamples %>%
  group_by(resample) %>%
  threshold_perf(Class, .pred_good, thresholds)

resampled_threshold_perf
#> # A tibble: 75 × 5
#>    resample .threshold .metric     .estimator .estimate
#>    <chr>         <dbl> <chr>       <chr>          <dbl>
#>  1 1               0.5 sensitivity binary         0.676
#>  2 1               0.6 sensitivity binary         0.595
#>  3 1               0.7 sensitivity binary         0.568
#>  4 1               0.8 sensitivity binary         0.405
#>  5 1               0.9 sensitivity binary         0.297
#>  6 2               0.5 sensitivity binary         0.794
#>  7 2               0.6 sensitivity binary         0.676
#>  8 2               0.7 sensitivity binary         0.618
#>  9 2               0.8 sensitivity binary         0.5  
#> 10 2               0.9 sensitivity binary         0.235
#> # ℹ 65 more rows

# Average over the resamples
resampled_threshold_perf %>%
  group_by(.metric, .threshold) %>%
  summarise(.estimate = mean(.estimate))
#> `summarise()` has grouped output by '.metric'. You can override using the
#> `.groups` argument.
#> # A tibble: 15 × 3
#> # Groups:   .metric [3]
#>    .metric     .threshold .estimate
#>    <chr>            <dbl>     <dbl>
#>  1 j_index            0.5     0.500
#>  2 j_index            0.6     0.480
#>  3 j_index            0.7     0.475
#>  4 j_index            0.8     0.377
#>  5 j_index            0.9     0.218
#>  6 sensitivity        0.5     0.697
#>  7 sensitivity        0.6     0.620
#>  8 sensitivity        0.7     0.555
#>  9 sensitivity        0.8     0.427
#> 10 sensitivity        0.9     0.240
#> 11 specificity        0.5     0.803
#> 12 specificity        0.6     0.860
#> 13 specificity        0.7     0.920
#> 14 specificity        0.8     0.950
#> 15 specificity        0.9     0.978

源代码:R/threshold_perf.R

相关用法


注:本文由纯净天空筛选整理自Max Kuhn等大神的英文原创作品 Generate performance metrics across probability thresholds。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。