精度-リコール曲線下面積(PR曲線のAUC)および平均精度(AP)


27

平均精度(AP)は、精度-リコール曲線(PR曲線のAUC)の下の面積ですか?

編集:

PR AUCとAPの違いに関するコメントを次に示します。

AUCは、精度の台形補間によって取得されます。代替の通常ほぼ同等のメトリックは、info.apとして返されるAverage Precision(AP)です。これは、新しい陽性サンプルが呼び出されるたびに取得される精度の平均です。精度が定数セグメントによって補間される場合、AUCと同じであり、TRECが最も頻繁に使用する定義です。

http://www.vlfeat.org/overview/plots-rank.html

また、AUC及びaverage_precision_score結果は、学習scikitに同じではありません。これは奇妙なことです。なぜなら、ドキュメントには次のようなものがあるからです。

予測スコアから平均精度(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

回答:


15

簡単な答えはYESです。Average Precisionは、Precision-Recall曲線を要約するために使用される単一の数値です。

ここに画像の説明を入力してください

積分(曲線下の面積)は次のように近似できます。

ここに画像の説明を入力してください

良い説明については、このリンクをご覧ください。


このコメントはどうですか?「AUCは精度の台形補間によって取得されます。代替の通常ほぼ同等のメトリックは、info.apとして返されるAverage Precision(AP)です。これは、新しい陽性サンプルが呼び出されるたびに取得される精度の平均です。精度が定数セグメントによって補間される場合、AUCと同じであり、TRECが最も頻繁に使用する定義です。」vlfeat.org/overview/plots-rank.html
mrgloom

1
私が与えたリンクで説明されthe average of the precision obtained every time a new positive sample is recalledている補間された平均精度を指していると思います。一部の著者は、補間平均精度と呼ばれる代替近似を選択します。紛らわしいことに、彼らはまだそれを平均精度と呼んでいます。
ジュバル

簡単な質問:1)なぜ座標(recall = 0、precision = 1)ですか?私にはまったく意味がありません。2)ご覧のとおり、分類子のしきい値を下げると、より多くの結果が返される可能性があり、その結果、リコールは増加しない可能性がありますが、たとえば合計で2つの正のアイテムがある場合、精度は変わる可能性があります= [False、True、False、False、True]、したがってprのペア= [(p = 0、r = 0)、(1/2、1/2)、(1/3、1/2)、(1 / 4、1/2)、(2/5、2/2)]、ご覧のとおり、r = 1/2の場合、3 p(すなわち、1 / 2、1 / 3、1 / 4)です。 、r = 0.8のグラフのように、同じx軸にプロットするだけでいいのですか?
アボカド

2

average_precision_score 関数は、2番目のパラメーターとして信頼度または確率を期待します。

以下のように使用する必要があります。

average_precision_score(y_test, clf.predict_proba(X_test)[:,1])

そして、それはauc機能の同じ結果です。


WEKAソフトウェアとscikit-learnの異なる例は、CLFスコアを提供しますが、AUCは提供しません。このCLFスコアが実際に何らかの形でAUCに関連しているのか、それともAUCであるのでしょうか?
hhh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.