Площадь под кривой точного восстановления (AUC PR-кривой) и средняя точность (AP)

27

Является ли средняя точность (AP) областью под кривой точного восстановления (AUC PR-кривой)?

РЕДАКТИРОВАТЬ:

Вот некоторые комментарии о разнице в PR AUC и AP.

AUC получается путем трапецеидальной интерполяции точности. Альтернативным и обычно почти эквивалентным показателем является Средняя точность (AP), возвращаемая как info.ap. Это среднее значение точности, получаемой каждый раз, когда вызывается новая положительная выборка. Это то же самое, что и AUC, если точность интерполируется постоянными сегментами, и это определение используется TREC чаще всего.

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

Более того, результаты auc и average_precision_score не одинаковы в scikit-learn. Это странно, потому что в документации мы имеем:

Вычислите среднюю точность (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
mrgloom
источник

Ответы:

15

Краткий ответ: ДА . Средняя точность - это одно число, используемое для суммирования кривой точности-отзыва:

введите описание изображения здесь

Вы можете аппроксимировать интеграл (площадь под кривой) с помощью:

введите описание изображения здесь

Пожалуйста, посмотрите на эту ссылку для хорошего объяснения.

Zhubarb
источник
Как насчет этого комментария? «AUC получается путем трапецеидальной интерполяции точности. Альтернативным и обычно почти эквивалентным показателем является Средняя точность (AP), возвращаемая как info.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) почему координата (вспомним = 0, точность = 1)? не имеет никакого смысла для меня вообще. 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 функция ожидание доверия или вероятности в качестве второго параметра.

поэтому вы должны использовать его, как показано ниже,

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

и тогда это тот же результат aucфункции.

Haesun Park
источник
Различные примеры в программном обеспечении WEKA и scikit-learn дают оценку CLF, но не AUC. Может ли быть так, что этот счет CLF на самом деле как-то связан с AUC или даже быть AUC?
HHH