精确召回曲线中的“基线”是什么


15

我试图了解精度召回曲线,了解什么是精度和召回率,但我不了解的是“基准”值。我正在阅读此链接 https://classeval.wordpress.com/introduction/introduction-to-the-precision-recall-plot/

并且我不理解“完美分类器的精确召回曲线”中显示的基线部分,它有什么作用?以及如何计算呢?我们选择的仅仅是基线吗?例如,我有具有诸如retweet,status_countetc之类的属性的twitter数据,Favorited如果被收藏,我的班级标签为1,如果未被收藏,我的班级标签为0,我在其上应用了朴素贝叶斯,现在我想绘制精确调用曲线,在这种情况下应如何设置基线?

Answers:


13

PR曲线图中的“基线曲线”是一条水平线,其高度等于训练数据总数上阳性样本的数量。正样本在我们数据()中的比例。ñ PPNPN

好,为什么会这样呢?假设我们有一个“垃圾分类器”。将第个样本实例的随机概率返回到类。为了方便起见,请说。这种随机类别分配的直接含义是(预期)精度等于我们数据中正例的比例。这是自然的;我们数据的任何完全随机子样本将具有正确分类的示例。对于任何概率阈值都是如此Ç Ĵ p ÿ p ü [ 0 1 ] Ç Ĵ ë { PCJCJpiiyiApiU[0,1]CJqÇĴq[01]qÇĴqpü[01]q1001-q1001-qXÿPE{PN}q我们可以将返回的类成员资格的概率用作决策边界。(表示中的值,其中大于或等于概率值归为类。)另一方面,如果,则的召回性能(预期)等于。在任何给定的阈值我们将选择(大约)的总数据,随后将包含(大约)的实例总数CJq[0,1]qACJqpiU[0,1]q(100(1q))%(100(1q))%A在样本中。因此,我们一开始就提到了水平线!对于每个召回值(PR图中的值),相应的精度值(PR图中的值)等于。xyPN

简要说明一下:阈值通常等于1减去预期召回率。在上述情况下,仅由于结果的随机均匀分布,发生这种情况。对于不同的分布(例如),和召回之间的这种近似身份关系不成立;是因为它最容易理解和直观显示。对于不同的随机分布,的PR轮廓不会改变。对于给定的值,仅PR值的位置将发生变化。Ç Ĵ Ç Ĵ p 2 5 q ü [ 0 1 ] [ 0 1 ] Ç Ĵ qqCJCJpiB(2,5)qU[0,1][0,1]CJq

现在关于一个完美的分类器,这将意味着一个分类器,如果确实在类中则将概率返回到样本实例属于类,另外,如果不是类的成员,则返回概率。这意味着对于任何阈值我们将具有精度(即,在图项中,我们得到一条以精度开头的线)。我们没有获得精度的唯一一点是。对于 1 y i A y i A C P 0 y i A q 100 100 100 q = 0 q = 0 PCP1yiAyiACP0yiAq100%100%100%q=0q=0,精度下降到正例在我们的数据的比例(),为(疯狂?),我们用分类甚至点的是类的概率作为类是。的PR图的只有两个可能的值:和。 0AACP1PPN0AACP1PN

单击确定,然后用一些R代码首先看到一个示例,其中正值对应于我们样本的。请注意,从与每个点关联的概率值量化到我们确信该点属于类的意义上来说,我们对类类别进行了“软分配” 。A40%A

  rm(list= ls())
  library(PRROC)
  N = 40000
  set.seed(444)
  propOfPos = 0.40
  trueLabels = rbinom(N,1,propOfPos)
  randomProbsB = rbeta(n = N, 2, 5) 
  randomProbsU = runif(n = N)  

  # Junk classifier with beta distribution random results
  pr1B <- pr.curve(scores.class0 = randomProbsB[trueLabels == 1], 
                   scores.class1 = randomProbsB[trueLabels == 0], curve = TRUE) 
  # Junk classifier with uniformly distribution random results
  pr1U <- pr.curve(scores.class0 = randomProbsU[trueLabels == 1], 
                   scores.class1 = randomProbsU[trueLabels == 0], curve = TRUE) 
  # Perfect classifier with prob. 1 for positives and prob. 0 for negatives.
  pr2 <- pr.curve(scores.class0 = rep(1, times= N*propOfPos), 
                  scores.class1 = rep(0, times = N*(1-propOfPos)), curve = TRUE)

  par(mfrow=c(1,3))
  plot(pr1U, main ='"Junk" classifier (Unif(0,1))', auc.main= FALSE, 
       legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);
  pcord = pr1U$curve[ which.min( abs(pr1U$curve[,3]- 0.50)),c(1,2)];
  points( pcord[1], pcord[2], col='black', cex= 2, pch = 1)
  pcord = pr1U$curve[ which.min( abs(pr1U$curve[,3]- 0.20)),c(1,2)]; 
  points( pcord[1], pcord[2], col='black', cex= 2, pch = 17)
  plot(pr1B, main ='"Junk" classifier (Beta(2,5))', auc.main= FALSE,
       legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);
  pcord = pr1B$curve[ which.min( abs(pr1B$curve[,3]- 0.50)),c(1,2)]; 
  points( pcord[1], pcord[2], col='black', cex= 2, pch = 1)
  pcord = pr1B$curve[ which.min( abs(pr1B$curve[,3]- 0.20)),c(1,2)]; 
  points( pcord[1], pcord[2], col='black', cex= 2, pch = 17)
  plot(pr2, main = '"Perfect" classifier', auc.main= FALSE, 
       legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);  

在此处输入图片说明

在前两个图中,黑色圆圈和三角形分别表示和。我们立即看到“垃圾”分类器迅速达到等于精度;同样,完美分类器在所有召回变量中的精度为。毫不奇怪,“垃圾”分类器的AUCPR等于样本中正例的比例(),“完美分类器”的AUCPR大约等于。q = 0.20 Pq=0.50q=0.20 10.401PN10.401

实际上,完美分类器的PR图有点用处,因为永远不会有召回(我们永远不会预测否定类)。按照惯例,我们只是从左上角开始绘制线条。严格来说,它应该只显示两个点,但这会造成可怕的曲线。:D0

根据记录,关于PR曲线的效用,CV中已经有一些很好的答案:hereherehere。只需仔细阅读它们,就可以对PR曲线有一个很好的总体了解。


1
加入这个社区只是为了我可以对此表示赞同。这是精确召回曲线中基线概念的很好解释。作为生物信息学家,我发现它非常有用。
jimh '18

1
@jimh:谢谢,听到这个消息真是太好了。我很高兴这个帖子很有帮助。
usεr11852

我知道这不是带来有用信息的评论,但我要非常感谢您的详尽和大开眼界的解释。
Ric S

0

上面的好答案。这是我直觉的思考方式。假设您有一堆球,红色=正,黄色=负,然后将它们随机扔进一个桶中=正分数。然后,如果您拥有相同数量的红色和黄色球,则从存储桶中计算PREC = tp / tp + fp = 100/100 + 100时,红色(正)=黄色(负),因此PREC = 0.5。但是,如果我有1000个红球和100个黄球,那么在存储桶中,我会随机期望PREC = tp / tp + fp = 1000/1000 + 100 = 0.91,因为这是正分数的机会基准,也是RP / RP + RN,其中RP =真实正数,RN =真实负数。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.