我知道weka中的AUC / ROC区域(http://weka.wikispaces.com/Area+under+the+curve)是基于e Mann Whitney统计信息(http://en.wikipedia.org/wiki/Mann-Whitney_U)

但是我的疑问是,如果我有10个带标签的实例(Y或N,二进制目标属性),通过对数据集应用算法(即J48),那么在这10个实例上有10个预测标签。那么,究竟应该使用什么来计算AUC_Y,AUC_N和AUC_Avg?使用预测的排名标签Y和N还是实际标签(Y'和N')?还是我需要计算TP率和FP率?

谁能给我一个小例子,并指出基于曼恩·惠特尼(Mann Whitney)统计方法应使用哪些数据来计算AUC?提前致谢。

样本数据:

inst#    actual predicted  error   PrY     PrN
1        1:y        1:y          *0.973   0.027
2        1:y        1:y          *0.999   0.001
3        2:n        1:y      +   *0.568   0.432
4        2:n        2:n           0.382  *0.618
5        1:y        2:n      +    0.421  *0.579
6        2:n        2:n           0.146  *0.854
7        1:y        1:y          *1       0
8        1:y        1:y          *0.999   0.001
9        2:n        2:n           0.11   *0.89
10       1:y        2:n      +    0.377  *0.623

最佳答案

计算AUC基于对结果进行排名。我刚刚阅读了Mann-Whitney-U统计信息,我认为这基本上就是我一直在代码中执行此操作的方式。

首先,您需要一些东西来对您的结果进行排名。通常,这是分类器的决策值(例如distance to the hyperplane for SVMs),但WEKA大多使用分类概率。在您的示例中,PrY和PrN的总和为1,这很好,因此您可以选择任意一个,例如PrY。

然后,您通过PrN对实例进行排名:

inst#    actual predicted  error   PrY     PrN
7        1:y        1:y          *1       0
8        1:y        1:y          *0.999   0.001
2        1:y        1:y          *0.999   0.001
1        1:y        1:y          *0.973   0.027
3        2:n        1:y      +   *0.568   0.432
5        1:y        2:n      +    0.421  *0.579
4        2:n        2:n           0.382  *0.618
10       1:y        2:n      +    0.377  *0.623
6        2:n        2:n           0.146  *0.854
9        2:n        2:n           0.11   *0.89

根据Wikipedia关于Mann-Whitney-U统计信息的说法,您现在需要针对每个实际类进行总结,以了解另一类受到“殴打”的频率。对于正实例(y),这将是
0, 0, 0, 0, 1, 2 => Sum: 3

对于否定情况(n)
4, 5, 6, 6 => Sum: 21

因此,U_y = 3且U_n = 21,对其进行检查:
U_y + U_n = 24 = 6 * 4 = #y * #n

那么AUC_y将是(wikipedia之后)
AUC_y = U_y / (#y * #n) = 3 / 24 = 0.125
AUC_n = U_n / (#y * #n) = 21 / 24 = 0.875

现在,在这种情况下,我坚信AUC_n是您想要的AUC。我们按升序对PrN进行了排序,因此AUC_n是我们想要的。

我们所做的工作更加直观,图形化地描述如下:

我们根据实例的决策值/类别概率对它们进行排序。如果我们按PrN升序排列,则正面应该优先。 (如果按PrY升序排序,则负数应首先出现。)现在我们绘制一个从坐标(0,0)开始的图。每当我们遇到一个实际的积极实例时,我们就画一个单位。每次遇到否定实例时,我们都会向右划一个单位。这行代码现在按区域分开,在ASCII艺术中看起来像这样(我将尽快用一个体面的图像替换它):
|..##|
|.###|
|####|
|####|
|####|
|####|

分隔线是ROC及其下方的区域(因此称为AUC)。这里的AUC是21个单位,我们需要通过将其除以24的总面积进行归一化,得出21/24 = 0.875

您还可以进行已经标准化的整个计算,这等效于将其绘制为FPR与TPR。

08-25 05:39