Функция прогнозирования 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, а затем при необходимости меняют пороговое значение, часто в случае несбалансированного набора данных.