R C5.0设置倾斜数据的度量(可能是F1度量?)
我有一个非二进制(三类)目标变量的高度倾斜数据。我想用R包R C5.0设置倾斜数据的度量(可能是F1度量?),r,r-caret,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
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)
harmonicF1