R或matlab中精确召回曲线下的面积

Posted

技术标签:

【中文标题】R或matlab中精确召回曲线下的面积【英文标题】:area under precision-recall curve in R or matlab 【发布时间】:2012-09-03 22:16:33 【问题描述】:

我有一个二元目标列表的预测分数。使用 R 或 matlab 计算精确召回曲线下面积的最佳方法是什么?

我对此进行了一些搜索,但没有找到任何相关函数/库来完成此任务。这似乎很奇怪,因为这应该是人们做的相当普遍的事情。不知道我是否错过了什么。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

下面是matlab实现

function auc = scoreAUC(category,posterior)
% auc = scoreAUC(category,posterior)
%
% Calculates the area under the ROC for a given set
% of posterior predictions and labels. Currently limited to two classes.
%
% posterior: n1 matrix of posterior probabilities for class 1
% category: n1 matrix of categories 0,1
% auc: Area under the curve
%
% Author: Benjamin Hamner
% Date Modified: October 14, 2010
%
% Algorithm found in
% A Simple Generalisation of the Area Under the ROC
% Curve for Multiple Class Classification Problems
% David Hand and Robert Till
% http://www.springerlink.com/content/nn141j42838n7u21/fulltext.pdf

r = tiedrank(posterior);
auc = (sum(r(category==1)) - sum(category==1) * (sum(category==1)+1)/2) / ...
( sum(category<1) * sum(category==1));

【讨论】:

以上是关于R或matlab中精确召回曲线下的面积的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的精确召回和 ROC 曲线不平滑?

如何在python中使用插值绘制精确召回曲线?

从精确召回曲线计算真阳性的数量

Recall值与Precision-Recall曲线的关系

有关平均精度AP 和精确度-召回率曲线PR AUC的疑惑

sklearn如何在精确召回曲线中选择阈值步骤?