使用 R 中的插入符号包在训练模型中选择指标
Selecting a metric in training models using caret package in R
据我所知,插入符号具有准确性和 kappa 作为我们可以 select 的指标。我们如何使用 F-1 分数训练模型?假设我们正在训练 CART 模型。任何例子将不胜感激
我也有不平衡的数据(二进制 class,其中一个 class 在数据中占 10%)。我试图在精度和召回率之间取得平衡,因为模型倾向于预测另一个 class。我应该考虑 F-1 分数还是 Kappa 或 ROC?我认为 F-1 分数可能是更好的选择...
Caret 允许您实施自己的绩效衡量标准,因此您可以那样做。另一种方法是使用 mlr package, which does implement F1 (and many more measures)。例如,要通过 F1 分数找到 minsplit
和 minbucket
的最佳值,您可以执行以下操作。
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 不平衡分类问题。
您最好使用 ROC 曲线,这样您就不必担心事件阈值。对于不平衡数据,许多使用默认 50% 截止值的指标会导致人为偏斜的结果。在caret
中,可以使用twoClassSummary
函数
据我所知,插入符号具有准确性和 kappa 作为我们可以 select 的指标。我们如何使用 F-1 分数训练模型?假设我们正在训练 CART 模型。任何例子将不胜感激
我也有不平衡的数据(二进制 class,其中一个 class 在数据中占 10%)。我试图在精度和召回率之间取得平衡,因为模型倾向于预测另一个 class。我应该考虑 F-1 分数还是 Kappa 或 ROC?我认为 F-1 分数可能是更好的选择...
Caret 允许您实施自己的绩效衡量标准,因此您可以那样做。另一种方法是使用 mlr package, which does implement F1 (and many more measures)。例如,要通过 F1 分数找到 minsplit
和 minbucket
的最佳值,您可以执行以下操作。
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 不平衡分类问题。
您最好使用 ROC 曲线,这样您就不必担心事件阈值。对于不平衡数据,许多使用默认 50% 截止值的指标会导致人为偏斜的结果。在caret
中,可以使用twoClassSummary
函数