2013-05-20 2 views
1

У меня есть выход из svmlight, который имеет x = прогнозы (0,1, -0,6,1,2, -0,7 ...), y = фактический класс {+ 1, -1}. Я хочу создать кривую ROC для 10 различных разных пороговых значений (пусть t - вектор, содержащий 10 различных пороговых значений). Я проверил пакет ROCR, но я не видел никакой опции для подачи порогового вектора. Мне нужно рассчитать TPR и FPR для каждого порогового значения и графика. Есть ли другой способ сделать это? Я новичок в программировании R.создать ROC из 10 различных пороговых значений

+0

Я также затрудняюсь для того, как установить пороги в пред. Я попробовал наивный подход, который, что неудивительно, не сработал: pred <-prediction (x, y, alpha.values ​​= c (0,0,0.05,0.1,0.15,0.2,0.25,0.3)) У меня есть две системы прогнозирования , но каждый из них производит неизменно разные числа, поэтому мне нужно заставить ROCR применять одни и те же пороговые значения для обеих систем прогнозирования. Кто-нибудь сделал это? –

ответ

2

ROCR создает кривую ROC путем построения TPR и FPR для множества разных пороговых значений. Это можно сделать только с помощью одного набора прогнозов и меток, потому что, если наблюдение классифицируется как положительное для одного порога, оно также будет классифицироваться как положительное при более низком пороге. Я нашел this paper, чтобы более подробно объяснить кривые ROC.

Вы можете создать сюжет следующим образом в ROCR где х есть вектор предсказаний, и у есть вектор класса меток:

pred <- prediction(x,y) 
perf <- performance(pred,"tpr","fpr") 
plot(perf) 

Если вы хотите получить доступ к TPR и FPR, связанный со всеми пороги, вы можете проверить производительность объекта «Perf»:

str(perf) 

следующий ответ показывает, как получить пороговые значения более подробно:

https://stackoverflow.com/a/16347508/786220

1

Вы можете сделать это с помощью пакета pROC. Сначала создайте кривую ROC (для всех порогов):

myROC <- roc(y, x) # with the x and y you defined in your question 

И тогда вы запрашиваете это кривой для 10 (или любого количества) пороговых значения, которые Вы сохранили в t:

coords(myROC, x = t, input="threshold", ret = c("threshold", "se", "sp")) 

Чувствительность является вашим TPR, а специфика - ваш FPR.


Отказ от ответственности: Я являюсь автором pROC.

Смежные вопросы