【问题标题】:Convert predicted probabilities after downsampling to actual probabilities in classification (using mlr)将下采样后的预测概率转换为分类中的实际概率(使用 mlr)
【发布时间】:2017-12-23 04:31:41
【问题描述】:

如果我在不平衡二元目标变量的情况下使用欠采样来训练模型,则预测方法会在平衡数据集的假设下计算概率。如何将这些概率转换为不平衡数据的实际概率?转换参数/函数是在 mlr 包还是其他包中实现的?例如:

a <- data.frame(y=factor(sample(0:1, prob = c(0.1,0.9), replace=T, size=100)))
a$x <- as.numeric(a$y)+rnorm(n=100, sd=1)
task <- makeClassifTask(data=a, target="y", positive="0")
learner <- makeLearner("classif.binomial", predict.type="prob")
learner <- makeUndersampleWrapper(learner, usw.rate = 0.1, usw.cl = "1")
model <- train(learner, task, subset = 1:50)
pred <- predict(model, task, subset = 51:100)
head(pred$data)

【问题讨论】:

    标签: r classification predict mlr


    【解决方案1】:

    [Dal Pozzolo et al., 2015] 提出了一个非常简单但功能强大的方法。

    论文标题:“使用欠采样校准概率 不平衡分类” Andrea Dal Pozzolo , 奥利维尔·卡伦† , 里德·A·约翰逊 , 詹卢卡·邦坦皮

    它专门用于解决下采样情况下的校准问题(即将分类器的预测概率转换为不平衡情况下的实际概率)。

    您只需使用以下公式修正您的预测概率 p_s:

       p = beta * p_s / ((beta-1) * p_s + 1)
    

    其中 beta 是欠采样后多数类实例的数量与原始训练集中多数类实例的数量之比。

    其他方法 已经提出了其他没有特别关注下采样偏差的方法。其中最受欢迎的有以下几种:

    它们都在R中实现

    【讨论】:

    • 我还发现了一个不同的公式:1/(1+(1/original fraction-1)/(1/oversampled fraction-1)*(1/scoring result-1));它在这里描述:data-mining-blog.com/tips-and-tutorials/… 并且还使用“过采样”分数。这两个公式给出的结果有些不同。有谁知道哪个更好/何时使用哪个?
    • 我没有仔细阅读您的文章,但它是关于 过采样 少数类,而 Dal Pozzolo 的公式是当您对多数类进行 欠采样班级。所以它们不适用于相同的情况
    • 在本文中,当他们说“过采样”时,他们的意思是欠采样。
    • 我必须纠正自己:两个公式的结果几乎完全相同(至少在我使用的示例中)。但是,我仍然很好奇使用 data-mining.blog 中更复杂的公式有什么意义,或者其他情况是否可能存在更大的差异。
    • 很难说,因为在这个博客中没有这个公式的推导也没有解释......这可能值得在 stats.stackexchange 中提问
    猜你喜欢
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 2018-10-12
    • 2016-05-23
    • 1970-01-01
    • 2017-06-12
    • 2016-01-05
    相关资源
    最近更新 更多