Scikit-Learn
Precision-Recall 曲線下的面積(PR 曲線的 AUC)和平均精度(AP)
平均精度 (AP) 是精度召回曲線下的面積(PR 曲線的 AUC)嗎?
編輯:
這是關於 PR AUC 和 AP 差異的一些評論。
AUC 是通過精度的梯形插值獲得的。另一種通常幾乎等效的指標是平均精度 (AP),以 info.ap 形式返回。這是每次召回新的正樣本時獲得的精度的平均值。如果精度由常數段插值,則它與 AUC 相同,並且是 TREC 最常使用的定義。
http://www.vlfeat.org/overview/plots-rank.html
而且,scikit-learn 中的auc和average_precision_score結果也不一樣。這很奇怪,因為在文檔中我們有:
從預測分數計算平均精度 (AP) 此分數對應於精度召回曲線下的區域。
這是代碼:
# Compute Precision-Recall and plot curve precision, recall, thresholds = precision_recall_curve(y_test, clf.predict_proba(X_test)[:,1]) area = auc(recall, precision) print "Area Under PR Curve(AP): %0.2f" % area #should be same as AP? print 'AP', average_precision_score(y_test, y_pred, average='weighted') print 'AP', average_precision_score(y_test, y_pred, average='macro') print 'AP', average_precision_score(y_test, y_pred, average='micro') print 'AP', average_precision_score(y_test, y_pred, average='samples')
對於我的分類器,我有類似的東西:
Area Under PR Curve(AP): 0.65 AP 0.676101781304 AP 0.676101781304 AP 0.676101781304 AP 0.676101781304
簡短的回答是:是的。平均精度是用於總結 Precision-Recall 曲線的單個數字:
您可以使用以下方法近似積分(曲線下的面積):
請查看此鏈接以獲得很好的解釋。