R快速AUC函数用于非二进制因变量

时间:2012-05-23 18:01:09

标签: r roc

我正在尝试计算大型数据集的AUC,并且无法找到一个既处理不仅仅是0或1的值又能合理快速工作的数据集。

到目前为止,我已经尝试了ROCR包,但它只处理0和1,而pROC包将给我一个答案,但可能需要5-10分钟来计算100万行。

注意,我的所有值都在0 - 1之间,但不一定是1或0.

编辑:答案和预测均介于0 - 1之间。

有什么建议吗?

EDIT2:

ROCR可以处理这样的情况:

Ex.1
actual   prediction
  1         0
  1         1
  0         1
  0         1 
  1         0

或者像这样:

Ex.2
actual   prediction
  1         .25
  1         .1
  0         .9
  0         .01
  1         .88

但不是这样的情况:

Ex.3
actual   prediction
  .2         .25
  .6         .1
  .98        .9
  .05        .01
  .72        .88

pROC可以处理Ex.3,但计算需要很长时间。我希望对Ex.3这样的情况有更快的实施。

2 个答案:

答案 0 :(得分:1)

  

到目前为止,我已经尝试过ROCR包,但它只处理0和1的

您是在谈论参考类会员资格还是预测的班级会员资格? 后者在ROCR中可以介于0和1之间,查看其示例数据集ROCR.simple

如果您的参考文献在[0,1]中,您可以查看(免责声明:我的)软件包softclassval。但是,您必须从灵敏度和特异性计算中构建ROC / AUC。因此,除非您考虑优化算法(如ROCR开发人员所做的那样),否则它可能需要很长时间。在这种情况下,您还必须考虑灵敏度和特异性应该是什么意思,因为这与(0,1)中的参考成员资格不明确。

澄清问题后更新

您需要注意,将引用或实际分组在一起会丢失信息。例如,如果你有实际= 0.5和预测= 0.8,这意味着什么?假设这些值确实是实际= 5/10且预测= 5/10。 通过将10个测试总结为两个数字,您将丢失信息,无论10个中的相同 5是否有意义。没有这个,实际= 5/10和预测= 8/10与正确识别的30%和70%之间的任何内容一致!

以下是讨论灵敏度的说明(即正确识别,例如点击):

soft and

您可以在softclassval.r-forge.r-project.org,“关于softclassval”部分找到整个海报和两个讨论此类问题的演示文稿。

继续这些想法,也可以使用平均绝对值,均方值,均方根等误差的加权版本。

然而,表达模型相同性能特征的所有不同方式(例如灵敏度=实际点击事件的正确识别百分比)确实具有不同的含义,并且它们与明确的参考中的通常计算一致和预测情况,他们将对模糊参考/部分参考类成员资格做出不同反应。

另请注意,当您在[0,1]中使用连续值进行参考/实际和预测时,整个测试将在ROC或特异性敏感性图中浓缩为一个点(不是一行!)。 / p>

底线:数据分组会让您遇到麻烦。因此,如果你能以某种方式获得有关单击的信息,那么就去获取它!

答案 1 :(得分:1)

您可以使用其他错误措施来评估方法效果吗? (例如平均绝对误差,均方根误差)?

这篇文章也可能对你有所帮助,但如果观察值和预测值有不同的类数,那么你可能会遇到一些问题。

https://stat.ethz.ch/pipermail/r-help/2008-September/172537.html