2013-05-20 22 views
1

我有svmlight的輸出,其中x =預測(0.1,-0.6,1.2,-0.7 ...),y =實際的類{+ 1,-1}。我想爲10個特定的不同閾值創建ROC曲線(讓t爲包含10個不同閾值的矢量)。我檢查了ROCR軟件包,但我沒有看到提供閾值向量的任何選項。我需要爲每個閾值和繪圖計算TPR和FPR。有沒有其他方法可以做到這一點?我是R編程新手。從10個不同的閾值創建ROC

+0

我也對如何在pred中設置閾值感到茫然。我嘗試了一種天真的方法,這並不奇怪,沒有工作:pred <-prediction(x,y,alpha.values = c(0.0,0.05,0.1,0.15,0.2,0.25,0.3))我有兩個預測系統,但其中一個會產生一致的不同數字,所以我需要強制ROCR將相同的閾值應用於兩個預測系統。有沒有人做過這個? –

回答

2

ROCR通過​​將TPR和FPR繪製成許多不同的閾值來創建ROC曲線。這可以通過一組預測和標籤來完成,因爲如果觀察被分類爲對於一個閾值爲正,則它也將在較低閾值處被分類爲正。我發現this paper有助於更詳細地解釋ROC曲線。

在ROCR以下,其中x是預測的矢量,y是類標籤的載體可以創建情節:

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的作者。