『評価指標入門』をRで書く:多クラス分類の評価指標

『評価指標入門』をRで書く

この記事はR言語 Advent Calendar 2023 シリーズ2の16日目の記事です。

qiita.com

多クラス分類の評価指標

パッケージの呼び出し。

library(tidyverse)
library(palmerpenguins)
library(rsample)
library(yardstick)
library(ranger)

ペンギンの種類を判別するランダムフォレストのモデル。

pen_split <- penguins |>
  mutate(year = as.factor(year)) |>
  drop_na() |>
  initial_split(prop = 0.2, strata = species)

pen_train <- pen_split |>
  training()

pen_test <- pen_split |>
  testing()

fit_m_class <- pen_train |>
  ranger(species ~ ., data = _)

pred_test <- pen_test |>
  predict(fit_m_class, data = _)

以下の評価指標を算出

  • 正解率(Accuracy)
  • 適合率(Precision ; 精度)[macro, micro, weighted]
  • 再現率(Recall, True Positive Rate ; TPR ; 感度)[macro, micro, weighted]
  • F1-score[macro, micro, weighted]
# 正解率(Accuracy)
accuracy_vec(pen_test$species, pred_test$predictions)

# 適合率(Precision ; 精度)
precision_vec(pen_test$species, pred_test$predictions, estimator = "macro")
precision_vec(pen_test$species, pred_test$predictions, estimator = "micro")
precision_vec(pen_test$species, pred_test$predictions, estimator = "macro_weighted")

# 再現率(Recall, True Positive Rate ; TPR ; 感度)
recall_vec(pen_test$species, pred_test$predictions, estimator = "macro")
recall_vec(pen_test$species, pred_test$predictions, estimator = "micro")
recall_vec(pen_test$species, pred_test$predictions, estimator = "macro_weighted")

# F1-score
f_meas_vec(pen_test$species, pred_test$predictions, estimator = "macro")
f_meas_vec(pen_test$species, pred_test$predictions, estimator = "micro")
f_meas_vec(pen_test$species, pred_test$predictions, estimator = "macro_weighted")

ペンギンの種類の確率を推定するランダムフォレストのモデル。

fit_m_class_p <- pen_train |>
  ranger(species ~ ., data = _, probability = TRUE)

pred_test <- pen_test |>
  predict(fit_m_class_p, data = _)

ROC-AUCの算出

roc_auc_vec(pen_test$species, pred_test$predictions)

以上です。