Правильный способ использовать R надежность графика
Для задач классификации я использовал сбалансированную точность, чувствительность и специфичность для оценки моделей. Недавно я увидел, что калибровка может захватывать те, которые не могут быть получены с помощью точности и AUC. Итак, я хочу попробовать, и График надежности - это визуальная калибровка.
Я использую пакет R Verification, reliability.plot()
функция. Однако результат выглядит так странно:
Может быть, это потому, что переменная, которую я вставил в функцию, неверна, но я не уверен, как ее изменить. Вот мой код:
Тренируй модель и получай предсказанные шансы
library(verification)
library(mlr)
svm_learner <- makeLearner("classif.ksvm", predict.type = "prob")
svm_param <- makeParamSet(
makeDiscreteParam("C", values = 2^c(-8,-4,-2,0)), #cost parameters
makeDiscreteParam("sigma", values = 2^c(-8,-4,0,4)) #RBF Kernel Parameter
)
ctrl <- makeTuneControlRandom()
cv_svm <- makeResampleDesc("CV",iters = 5L)
svm_tune <- tuneParams(svm_learner, task = train_task, resampling = cv_svm, par.set = svm_param, control = ctrl,measures = acc)
svm_tune$x
svm_tune$y
t.svm <- setHyperPars(svm_learner, par.vals = svm_tune$x)
svm_model <- mlr::train(svm_learner, train_task)
svmpredict <- predict(svm_model, test_task)
svmpredict
Я пытаюсь вычислить наблюдаемую частоту и прогнозируемую частоту и поместить их в функцию
xy <- data.table(Truth=svmpredict$data$truth, Response=svmpredict$data$response)
summary(xy$Truth)
summary(xy$Response)
xy[, ObservedFreq := ifelse(Truth==0, 1806/(1806+48), 48/(1806+48))]
xy[, ForecastedFreq := ifelse(Truth==0, 1807/(1807+47), 47/(1807+47))]
reliability.plot(svmpredict$data$prob.1, xy$ObservedFreq, xy$ForecastedFreq, positive="1")
Я предполагаю, что проблема может быть вызвана переменными, которые я вставил в функцию, но что еще можно наблюдать и прогнозировать частоту? Знаете ли вы, как построить правильный график надежности?