AUC計算方法總結

2021-06-14 13:52:51 字數 1482 閱讀 4331

auc(area under the curve)

是一種用來度量分類模型好壞的乙個標準,這裡不詳細敘述auc的定義及意義,詳見wiki。

演算法1:如下圖是乙個分類器的結果,計算點形成的折線的面積就是auc的值

**如下:

public

double aucalg1()

if(scores[1].contains(all.getquick(i)))

tp++;

if(scores[0].contains(all.getquick(i)))

fp++;

}area += trapezoidarea(1.0d, fp_pre,1.0d, tp_pre);

area /= n0 * n1;

returnarea;

偽**:

演算法2:乙個關於auc的很有趣的性質是,它和wilcoxon-mann-witneytest是等價的。而wilcoxon-mann-witney test就是測試任意給乙個正類樣本和乙個負類樣本,正類樣本的score有多大的概率大於負類樣本的score。我們就得到了另外一中計算auc的辦法:得到這個概率。具體來說就是統計一下所有的 m×n(m為正類樣本的數目,n為負類樣本的數目)個正負樣本對中,有多少個組中的正樣本的score大於負樣本的score。當二元組中正負樣本的 score相等的時候,按照0.5計算。然後除以mn。實現這個方法的複雜度為o(n^2)。n為樣本數(即n=m+n)

演算法3:方法實際上和上述第二種方法是一樣的,但是複雜度減小了。它也是首先對score從大到小排序,然後令最大score對應的sample 的rank為n,第二大score對應sample的rank為n-1,以此類推。然後把所有的正類樣本的rank相加,再減去正類樣本的score為最小的那m個值的情況。得到的就是所有的樣本中有多少對正類樣本的score大於負類樣本的score。然後再除以m×n。即

auc=((

所有的正例位置相加)-m*(m+1))/(m*n)

**如下(mahout版實現):

public

doubleaucalg2()

else

if(v1 < v0)

else

}if((double)i1 < n1)

return(ranksum / n1 - (n1 + 1.0d) / 2d) /n0;

AUC計算方法總結

一 roc曲線 1 roc曲線 接收者操作特徵 receiveroperating characteristic roc曲線上每個點反映著對同一訊號刺激的感受性。橫軸 負正類率 false postive rate fpr 特異度,劃分例項中所有負例佔所有負例的比例 1 specificity 縱軸...

AUC計算方法總結

一 roc曲線 1 roc曲線 接收者操作特徵 receiveroperating characteristic roc曲線上每個點反映著對同一訊號刺激的感受性。橫軸 負正類率 false postive rate fpr 特異度,劃分例項中所有負例佔所有負例的比例 1 specificity 縱軸...

AUC計算方法總結

一 roc曲線 1 roc曲線 接收者操作特徵 receiveroperating characteristic roc曲線上每個點反映著對同一訊號刺激的感受性。橫軸 負正類率 false postive rate fpr 特異度,劃分例項中所有負例佔所有負例的比例 1 specificity 縱軸...