【问题标题】:Selecting a metric in training models using caret package in R使用 R 中的插入符号包在训练模型中选择指标
【发布时间】:2015-11-14 17:53:59
【问题描述】:

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

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

【问题讨论】:

    标签: r machine-learning prediction r-caret


    【解决方案1】:

    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 讨论不平衡分类问题。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2019-10-01
        • 2015-12-30
        • 2018-05-28
        • 2018-08-30
        • 2018-06-24
        • 1970-01-01
        • 2019-08-30
        • 2020-09-10
        • 2018-07-09
        相关资源
        最近更新 更多