如何在Torch/Lua中计算曲线下面积(AUC)?

我是 Torch 的新手,现在我在研究如何绘制受试者工作特征曲线(ROC)和曲线下面积(AUC)。

我有两个数组:y轴上的 TPrate 和 x轴上的 FPrate,它们都有大小为 n 的长度。

我该如何使用 Torch7 或 Lua 计算该函数的曲线下面积?

我也找到了 JayClascoe.com 的这段代码,但我不知道该如何使用其中的函数。

点赞
用户1442917
用户1442917

你无法使用JayClascoe的代码,因为它适用于函数,而你的是一组点。假设FPrate的x值按照x坐标排序,对应的值为TPrate,你可以使用Trapezoidal rule。类似这样的代码可能有效:

local area = 0
for i = 2, n do
  area = area + (FPrate[i] - FPrate[i-1]) * (TPrate[i-1] + TPrate[i])/2
end
2014-02-19 16:54:02
用户276811
用户276811

一段时间以前,我写了一个小的 Torch 包,能够计算 ROC 点和曲线下面积。我的代码在 Github 上,所以您可以看一下并试一试:

https://github.com/hpenedones/metrics

如果它能很好地为您工作或者您发现任何问题,请让我知道。这里有一个如何使用它的例子:

require 'torch'
metrics = require 'metrics'
gfx = require 'gfx.js'

resp = torch.DoubleTensor { -0.9, -0.8, -0.8, -0.5, -0.1, 0.0, 0.2, 0.2, 0.51, 0.74, 0.89}
labels = torch.IntTensor  { -1, -1 , 1, -1, -1, 1, 1, -1, -1, 1, 1 }

roc_points, thresholds = metrics.roc.points(resp, labels)
area = metrics.roc.area(roc_points)

print(area)

gfx.chart(roc_points)
2014-12-09 12:05:00