很清楚 Hand 和 Till 方法在多变量情况下是如何工作的(根据类概率),我已经对照我编写的一些代码检查了这一点。即我使用了一个 3 类问题,我得到了与 pROC 相同的结果。当我将 3 类问题转换为 2 类问题(通过合并 2 个类)时,我得到与 pROC 相同的结果(仍然使用 multiclass.roc)。但是,当我通过 multiclass.roc 响应具有 3 个类、3 个级别但只有一个类概率向量时,我得到了另一个结果。
我知道这是不同的处理方式;https://rdrr.io/cran/pROC/man/multiclass.html说“multiclass.roc 函数可以处理两种类型的数据集:单变量和多变量。在单变量的情况下,传递单个预测向量并评估所有响应组合。”。但是,我无法找到关于这里发生的事情的解释。显然,这与响应中的类数量有关(因为这是唯一的其他数据),但我很想知道在这种情况下 pROC 正在做什么。
这是我的结果(我写了 AUC_mc):
pROC:3 类单变量:0.8494,3 类与其他类(2 类):0.9118
AUC_mc:3 类与其他类(2 类):0.9118
pROC:1 类单变量:0.9721,1 类与其余(2 类):
0.9693 AUC_mc:1 类与其余(2 类):0.9692823
#
# Here the probabilities for only 1 class are passed to pROC.
# When there are 2 classes in the domain that's fine
# When there are 3 classes in the domain then I get a different result
#
roc = multiclass.roc(test.df$response, probabilities[,n], levels=levels(test.df$response))
pROC:3 级:0.9568
AUC_mc:3 级:0.9567698
roc = multiclass.roc(test.df$response, probabilities[,], levels=levels(test.df$response))
非常感谢