我有兩個嚴重不平衡的數據集,標記爲正面和負面,我能夠產生一個混淆矩陣,產生〜95%的真陽性率(並繼承5%的假陰性率) 99.5%的真實陰性率(假陽性率爲0.5%)。ROC圖構造
我試圖建立一個ROC圖的問題是,x軸的範圍不是從0到1,間隔爲0.1。相反,它的範圍從0到0.04之類,因爲我的假陽性率非常低。
任何有關爲什麼發生這種情況的見解?
由於
我有兩個嚴重不平衡的數據集,標記爲正面和負面,我能夠產生一個混淆矩陣,產生〜95%的真陽性率(並繼承5%的假陰性率) 99.5%的真實陰性率(假陽性率爲0.5%)。ROC圖構造
我試圖建立一個ROC圖的問題是,x軸的範圍不是從0到1,間隔爲0.1。相反,它的範圍從0到0.04之類,因爲我的假陽性率非常低。
任何有關爲什麼發生這種情況的見解?
由於
我已經想通了。我使用普拉特算法來提取積極分類的概率並對數據集進行排序,最高概率在第一位。我遍歷數據集,任何正例(實際正數,未分類爲正數)遞增正確計數,而任何負數示例(實際負數,未分類爲負數)遞增錯誤正數。
把它想象成SVM上的支持向量,它將兩個類(+ ve和-ve)從svm的一邊逐漸移動到另一邊。在這裏,我想象的是2d飛機上的點。隨着支持向量的移動,它揭示了一些例子。任何標記爲陽性的例子都是假的,任何陰性都是假陽性。
希望這會有所幫助。由於缺乏網絡信息(或者僅僅是我缺乏對SVM的理解),花了我幾天的時間才弄清楚一些如此微不足道的東西。這特別針對那些在OpenCV包中使用CvSVM的人。如您所知,CvSVM不會返回概率值。相反,它會根據距離函數返回一個值。您不需要使用Platt算法來基於概率提取ROC曲線,相反,您可以使用距離值本身。比如說,你從10開始,然後慢慢減少,直到你覆蓋了所有的數據集。我發現使用概率可以更好地形象化,所以每個人都有自己的想法。
請介意我的英語不是我的第一語言
在ROC曲線圖中,兩個軸是假陽性(F)和真陽性(T)的速率的速率。 T是給定正數據項的概率,你的算法將其歸類爲正數。 F是給定負數據項的概率,您的算法錯誤地將其歸類爲正數。座標軸總是從0到1,如果你的算法不是參數化的,你最終應該在ROC圖上取一個點(或兩個數據集),而不是曲線。如果您的算法是參數化的,那麼您會得到一條曲線,然後曲線由參數的不同值引發。
我的問題是,我使用的是SVM,這是不是一個概率模型。它只是分類正面和負面的價值觀,這就是爲什麼我只能得到一分。而且,OpenCV中的SVM不返回分類的概率,只返回距離函數值。我正在嘗試使用這個值來確定一個概率,到目前爲止沒有運氣。 –