将降采样后的预测概率转换为分类中的实际概率(使用mlr)

tov*_*ver 5 r classification predict mlr

如果在发生不平衡二进制目标变量的情况下使用欠采样来训练模型,则预测方法会在假设平衡数据集的情况下计算概率。对于不平衡的数据,如何将这些概率转换为实际概率?转换参数/函数是在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)
Run Code Online (Sandbox Code Playgroud)

Pop*_*Pop 7

[Dal Pozzolo等人,2015]提出了一种非常简单但功能强大的方法。

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

您只需要使用以下公式来校正预测概率p_s:

   p = beta * p_s / ((beta-1) * p_s + 1)
Run Code Online (Sandbox Code Playgroud)

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

其他方法 已经提出了其他不专门针对下采样偏差的方法。其中最受欢迎的是以下几种:

它们都在R中实现