R 调谐器阈值如何调整预测阈值?

R 调谐器阈值如何调整预测阈值?,r,mlr,R,Mlr,这是一个交叉柱。我没有运气在那里发布与mlr包相关的问题,所以我想我会在这里试试 我想使用tuneThreshold和学习者参数来调整以下分类任务的阈值 在调整学习者时,我首先尝试通过设置makeTuneControlRandom(…,tune.threshold=TRUE)来调整阈值: 这里的最佳阈值为0.51 然后,我尝试直接在预测对象上使用tuneThreshold来调整阈值: tuneThreshold(r$pred) $th [1] 0.5650756 $perf mmc

这是一个交叉柱。我没有运气在那里发布与
mlr
包相关的问题,所以我想我会在这里试试

我想使用
tuneThreshold
和学习者参数来调整以下分类任务的阈值

在调整学习者时,我首先尝试通过设置
makeTuneControlRandom(…,tune.threshold=TRUE)
来调整阈值:

这里的最佳阈值为0.51

然后,我尝试直接在预测对象上使用
tuneThreshold
来调整阈值:

tuneThreshold(r$pred)
$th
[1] 0.5650756

$perf
      mmce 
0.05303195 
这里的最佳阈值为0.565。我不明白为什么这里的最佳阈值与上面的不同,为什么它没有返回与上面找到的相同的阈值,即0.51?这似乎增加了另一层随机性,但我不知道在哪里或如何添加,因为当我再次调用
tuneThreshold(r$pred)
时,阈值和性能分数不会改变。
tuneThreshold
究竟是如何工作的?它与预测对象
r$pred
有什么关系?

  • 你指向CrossValidated的链接已失效

  • 始终对随机过程使用
    set.seed()
    ,以使其可重复

  • 加载所有()的
    功能是什么

关于你的问题:

为什么你会认为他们是一样的?您正在做两件完全不同的事情:

  • 值1是在CV场景中进行调优时找到的最佳阈值

  • 值2是来自单个预测对象的调用(该对象存储的数据集与CV中的数据集不同)

当我再次调用TunerThreshold(r$pred)时,阈值和 绩效分数不变

此调用中没有采样,因此结果将始终相同。
在CV期间,您有一个非确定性采样,它会在每次运行中更改您的数据集-除非您设置种子。

谢谢@pat-s。我知道值1从何而来,但我对值2特别感到困惑。外部CV产生3个模型,每个模型都有自己的预测和阈值,那么为什么将
tuneThreshold
应用于
resampleprodiction
对象只返回一个阈值
getPredictionProbabilities(r$pred)
同样也返回预测概率的单个向量-这些概率是如何计算的?它只是所有3个CV折叠的预测概率的集合吗?
tuneThreshold(r$pred)
$th
[1] 0.5650756

$perf
      mmce 
0.05303195