Функция прогнозирования ROCR в R возвращает сообщение об ошибке

Я смотрю на набор данных с одной непрерывной независимой переменной (Quant) и одной двоичной зависимой переменной (Binary). Я использовал полиномиальную модель, чтобы предсказать двоичное значение из непрерывной независимой переменной. Я надеялся сделать кривую ROC. Это код ниже:

mymodel <- multinom(Quant~., data = dataset)
pred <- predict(mymodel,dataset)
roc_pred <- prediction(pred,dataset$Binary)
roc <- performance(roc_pred,"tpr","fpr")

Прямо сейчас, если я запускаю этот код, я получаю следующее сообщение об ошибке: "Формат прогнозов недействителен". Я не уверен, почему мой объект pred не удовлетворяет требованиям для функции прогнозирования? Единственный способ это сработает, если вместо этого я добавлю следующую строку кода: pred <- predict(mymodel,dataset,type="prob")

Тем не менее, это дает мне некоторые странные значения в матрице пред. Поскольку моя зависимая переменная является двоичной, я ожидаю получить значение 0 или 1 в моей переменной pred (что я и получаю с исходной строкой кода), но когда я добавляю type="prob", это дает мне значение 0,3 для всех наблюдений, где независимая переменная (Quant) равна 0. Что меняет type="prob", и почему я не могу просто использовать исходную строку кода для получения моей кривой ROC? Спасибо.

1 ответ

prob дает вам вероятность. Вам нужно преобразовать вероятность в двоичный результат, используя порог. Это может быть достигнуто путем

pred <- predict(mymodel,dataset,type="prob")

# intialize as zero
pred_binary <-  integer(length(pred))

# if the probability exceed 0.5, treat that as 1
pred_binary[pred > 0.5] <- 1

затем pred_binary ваш желаемый бинарный результат. Здесь порог равен 0,5. Вы можете изменить это в зависимости от вашей ситуации. Большинство людей часто начинают с 0,5, а затем при необходимости меняют пороговое значение, часто в случае несбалансированного набора данных.

Другие вопросы по тегам