當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。