MLR,与示例相关的错误分类成本,MakeCostSenseWeightedPairsWrapper

MLR,与示例相关的错误分类成本,MakeCostSenseWeightedPairsWrapper,r,wrapper,mlr,R,Wrapper,Mlr,这个问题已经被看了74遍,只收到一个回复(截至8月14日周三中午(PDT)) 我已经重写了这个问题,使它尽可能清楚,我将感谢任何帮助 作为总结,我需要一个小型但完整的示例关于具有二进制响应的数据集如何使用MLR的MakeCostSenseWeightedPairsWrapper在测试集上获得预测概率 在MLR教程中关于成本敏感分类的部分 有一段关于“依赖于示例的错误分类成本”,并给出了一个基于iris数据集的示例 在下面的代码片段中,我修改了iris数据集,以便只包含两个类,因为我只对二进制分类

这个问题已经被看了74遍,只收到一个回复(截至8月14日周三中午(PDT))

我已经重写了这个问题,使它尽可能清楚,我将感谢任何帮助

作为总结,我需要一个小型但完整的示例关于具有二进制响应的数据集如何使用MLR的MakeCostSenseWeightedPairsWrapper在测试集上获得预测概率

在MLR教程中关于成本敏感分类的部分 有一段关于“依赖于示例的错误分类成本”,并给出了一个基于iris数据集的示例

在下面的代码片段中,我修改了iris数据集,以便只包含两个类,因为我只对二进制分类感兴趣

library( mlr )
set.seed( 12347 )
n1 = 100; ntrain = 70
df = iris[ 1:n1, ]  # 100 points in df so as to have two classes only (setosa and versicolor)
df$Species = factor( df$Species )  # refactor the response

# partition df into a training set (70 points) and test set (30 points)
# 
ix = sample( 1:n1, ntrain, replace=FALSE )
xtest = df[ setdiff( 1:n1, ix ), ]  ## test set
ntest = nrow( xtest )
xtrain = df[ ix, ]   # this is the training set

# create cost matrix, same as in the MLR example
#
cost = matrix(runif(ntrain * 2, 0, 2000), ntrain) * (1 - diag(2))[xtrain$Species,] + runif(ntrain, 0, 10)
colnames(cost) = levels(xtrain$Species)
rownames(cost) = rownames(xtrain)

xtrain$Species = NULL   # this is done according to the MLR example

# cost-sensitive task
#
costsens.task = makeCostSensTask(id = "xtrain", data = xtrain, cost = cost )
costsens.task

##lrn = makeLearner("classif.multinom", trace = FALSE, predict.type="prob" )
lrn = makeLearner( "classif.gbm", predict.type="prob" )
lrn = makeCostSensWeightedPairsWrapper( lrn ); lrn

mod = train(lrn, costsens.task ); mod

pred = predict( mod, newdata = xtest, pred.type="prob" );

perf = performance( pred, measures = list(auc), task = costsens.task)

# I get the following error:
#   Error in FUN(X[[i]], ...) : 
#   You need to have a 'truth' column in your pred object for measure auc!
我最初的项目是做一个二元分类,其中包含了依赖于示例的错误分类成本

目标是对测试数据集进行预测,获得概率并显示性能(使用ROCR,其中有MLR映射函数)

注意:我尝试过的学习者是'classif.multinom'和(我猜)'classif.gbm'这两个可能与加权对包装器兼容

我的问题是:

Q1:代码片段中的什么地方以及如何指定希望概率作为成本敏感分类器的输出

问题2:哪个学习者可以用来产生分类概率

问题3:如何避免上述错误并获得类概率


再一次,我非常感谢任何人的帮助,如果有人能及时回答,我会更加感激。

好的,经过几天的时间,我对这个问题有了近百种看法(大约20种是我的:),只有一条评论,没有答案

根据我对一些可用MLR文档的了解,基于示例的成本敏感方法(makeCostSensWeightedPairsWrapper)的输出似乎只是标签,没有预测概率

换句话说,对成本敏感的任务没有可用的概率,只给出了新的标签,然后根据基本分类器的概率计算新标签

所以,这是我会接受的答案


至于MLR错误,至少在这种情况下,获得一条明确的错误消息而不是虚假的错误消息会很有帮助,或者只是在文档中注意到这一点。

我不太了解cost sens应用程序以及为什么要从任务中删除目标列(这会导致错误)。我在内部转发了您的问题。非常感谢您的回复!请使用当前的代码段。