R C5.0设置了偏斜数据的度量标准(F1测量可能?)

时间:2016-01-15 12:24:12

标签: r r-caret

我有非二进制(三类)目标变量的高度偏斜数据。我想使用R包C5.0和可选caret来训练C5.0决策树分类。如何设置适用于此类数据的指标。我想过用F1。我为caret + rpart构建了自定义函数,但我不知道如何为C5.0做到这一点。也许这甚至不是必要的,因为C5.0可能已经能够处理偏斜的数据(老实说,我并不完全确定实现是如何工作的。)

此处我的代码为caret rpart

harmonicF1 <- function(data, lev, model) {
  #treats the vectors like classes
  #data$obs and data$pred must be whole numbers
  scores <- vector(mode = "numeric", length = length(lev))
  names(scores) <- lev
  for(i in lev){
    tp=nrow(data[data$pred==i & data$obs==i,]);        
    fp=nrow(data[data$pred==i & data$obs!=i,]);
    fn=nrow(data[data$pred!=i & data$obs==i,]);
    f1=(2*tp)/(2*tp+fp+fn)
    scores[i]=f1;
  }
  harmonicF1 = 1/mean(1/scores)
  names(harmonicF1) <- "harmonicF1"
  return(harmonicF1);
}
fitControl <- trainControl(summaryFunction = harmonicF1)
fitModel_rpart <- train(cut ~ ., diamonds, method = "rpart", trControl = fitControl, metric = "harmonicF1", maximize=TRUE)

0 个答案:

没有答案