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


R yardstick mn_log_loss 多项数据的平均对数损失


计算分类模型的对数损失。

用法

mn_log_loss(data, ...)

# S3 method for data.frame
mn_log_loss(
  data,
  truth,
  ...,
  na_rm = TRUE,
  sum = FALSE,
  event_level = yardstick_event_level(),
  case_weights = NULL
)

mn_log_loss_vec(
  truth,
  estimate,
  na_rm = TRUE,
  sum = FALSE,
  event_level = yardstick_event_level(),
  case_weights = NULL,
  ...
)

参数

data

包含 truth... 指定的列的 data.frame

...

一组不带引号的列名称或一个或多个 dplyr 选择器函数,用于选择哪些变量包含类概率。如果 truth 是二进制,则仅应选择 1 列,并且它应对应于 event_level 的值。否则,列的数量应与 truth 的因子级别一样多,并且列的顺序应与 truth 的因子级别相同。

truth

真实类结果的列标识符(即 factor )。这应该是一个不带引号的列名,尽管此参数是通过表达式传递的并且支持quasiquotation(您可以不带引号的列名)。对于 _vec() 函数,一个 factor 向量。

na_rm

logical 值,指示在计算继续之前是否应剥离 NA 值。

sum

一个logical。是否应该返回似然贡献的总和(而不是平均值)?

event_level

单个字符串。 "first""second" 指定将truth 的哪个级别视为"event"。此参数仅适用于 estimator = "binary" 。默认使用内部帮助程序,通常默认为 "first" ,但是,如果设置了已弃用的全局选项 yardstick.event_first ,则将使用该帮助程序并发出警告。

case_weights

案例权重的可选列标识符。这应该是一个不带引号的列名称,其计算结果为 data 中的数字列。对于 _vec() 函数,一个数值向量。

estimate

如果truth是二进制的,对应于 "relevant" 类的类概率的数值向量。否则,矩阵的列数与因子级别一样多truth.假设它们的顺序与 truth 的级别相同。

tibble 包含列 .metric.estimator.estimate 以及 1 行值。

对于分组 DataFrame ,返回的行数将与组数相同。

对于 mn_log_loss_vec() ,单个 numeric 值(或 NA )。

细节

对数损失是分类模型性能的衡量标准。完美模型的对数损失为 0

accuracy() 相比,对数损失考虑了预测的不确定性,并更详细地了解实际性能。例如,给定 .6.9 两个输入概率,其中两者都被分类为预测正值,例如 "Yes" ,准确度度量会将它们解释为具有相同的值。如果真实输出是 "Yes" ,则对数损失会惩罚 .6 ,因为与 .9 的概率相比,它的结果是 "less sure" 。

多级

对数损失具有已知的多类扩展,并且只是每个类预测的对数损失值的总和。因此,不支持任何平均类型。

也可以看看

其他类概率指标:average_precision() , brier_class() , classification_cost() , gain_capture() , pr_auc() , roc_auc() , roc_aunp() , roc_aunu()

作者

马克斯·库恩

例子

# Two class
data("two_class_example")
mn_log_loss(two_class_example, truth, Class1)
#> # A tibble: 1 × 3
#>   .metric     .estimator .estimate
#>   <chr>       <chr>          <dbl>
#> 1 mn_log_loss binary         0.328

# Multiclass
library(dplyr)
data(hpc_cv)

# You can use the col1:colN tidyselect syntax
hpc_cv %>%
  filter(Resample == "Fold01") %>%
  mn_log_loss(obs, VF:L)
#> # A tibble: 1 × 3
#>   .metric     .estimator .estimate
#>   <chr>       <chr>          <dbl>
#> 1 mn_log_loss multiclass     0.734

# Groups are respected
hpc_cv %>%
  group_by(Resample) %>%
  mn_log_loss(obs, VF:L)
#> # A tibble: 10 × 4
#>    Resample .metric     .estimator .estimate
#>    <chr>    <chr>       <chr>          <dbl>
#>  1 Fold01   mn_log_loss multiclass     0.734
#>  2 Fold02   mn_log_loss multiclass     0.808
#>  3 Fold03   mn_log_loss multiclass     0.705
#>  4 Fold04   mn_log_loss multiclass     0.747
#>  5 Fold05   mn_log_loss multiclass     0.799
#>  6 Fold06   mn_log_loss multiclass     0.766
#>  7 Fold07   mn_log_loss multiclass     0.927
#>  8 Fold08   mn_log_loss multiclass     0.855
#>  9 Fold09   mn_log_loss multiclass     0.861
#> 10 Fold10   mn_log_loss multiclass     0.821


# Vector version
# Supply a matrix of class probabilities
fold1 <- hpc_cv %>%
  filter(Resample == "Fold01")

mn_log_loss_vec(
  truth = fold1$obs,
  matrix(
    c(fold1$VF, fold1$F, fold1$M, fold1$L),
    ncol = 4
  )
)
#> [1] 0.7338423

# Supply `...` with quasiquotation
prob_cols <- levels(two_class_example$truth)
mn_log_loss(two_class_example, truth, Class1)
#> # A tibble: 1 × 3
#>   .metric     .estimator .estimate
#>   <chr>       <chr>          <dbl>
#> 1 mn_log_loss binary         0.328
mn_log_loss(two_class_example, truth, !!prob_cols[1])
#> # A tibble: 1 × 3
#>   .metric     .estimator .estimate
#>   <chr>       <chr>          <dbl>
#> 1 mn_log_loss binary         0.328

相关用法


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