使用R中的插入符号包在训练模型中选择度量

时间:2015-08-20 22:10:22

标签: r machine-learning prediction r-caret

据我所知,插入符号具有准确度和kappa作为我们可以选择的指标。我们如何使用F-1 Score训练模型?我们假设我们正在培训CART模型。任何一个例子将不胜感激

我也有不平衡的数据(二进制类,其中一个类在数据中为10%)。我试图在精确度和召回之间取得平衡,因为模型倾向于预测另一类。我应该考虑F-1得分还是Kappa或ROC?我认为F-1得分可能是更好的选择...

2 个答案:

答案 0 :(得分:2)

Caret允许您实施自己的绩效指标,因此您可以这样做。另一种方法是使用mlr包,它实现F1(和many more measures)。例如,要通过F1得分找到minsplitminbucket的最佳值,您可以执行以下操作。

library(mlr)

ps = makeParamSet(
  makeDiscreteParam("minsplit", values = 1:20),
  makeDiscreteParam("minbucket", values = 1:10)
)
ctrl = makeTuneControlRandom(maxit = 10)
rdesc = makeResampleDesc("CV", iters = 10)
res = tuneParams("classif.rpart", measures = f1, task = sonar.task,
                 resampling = rdesc, par.set = ps, control = ctrl)
print(res$x)
print(res$y)

对于不平衡的分类问题,mlr教程有a whole section

答案 1 :(得分:0)

您最好使用ROC曲线,这样您就不必担心事件阈值。对于不平衡数据,许多使用默认50%截止值的指标会导致人为偏差的结果。在caret中,您可以使用twoClassSummary功能