R
当通过 2 个不同的包计算时,我发现使用我正在处理的数据集计算精确召回曲线下面积 (PRAUC) 的不同数值:yardstick
和caret
.
恐怕我无法用合成数据重现这种不匹配,但只能用我的数据集(这也很奇怪)
为了让这个可重现,我分享了我的模型的预测输出,你可以在这里下载https://drive.google.com/open?id=1LuCcEw-RNRcdz6cg0X5bIEblatxH4Rdz(别担心,这是一个小 csv) .
csv 包含一个具有 4 列的数据框:
yes
在类中的概率估计yes
no
= 1 -yes
obs
实际类标签
pred
预测类标签(阈值为 0.5)
下面是生成 PRAUC 的 2 个值的代码
require(data.table)
require(yardstick)
require(caret)
pr <- fread('pred_sample.csv')
# transform to factors
# put the positive class in the first level
pr[, obs := factor(obs, levels = c('yes', 'no'))]
pr[, pred := factor(pred, levels = c('yes', 'no'))] # this is actually not needed
# compute yardstick PRAUC
pr_auc(pr, obs, yes) # 0.315
# compute caret PRAUC
prSummary(pr, lev = c('yes', 'no')) # 0.2373
由于计算面积(插值曲线)时的近似值,我可以理解一些差异,但这似乎太高了。
我什至尝试了第三个包,PRROC
结果仍然不同,即 0.26 左右。