R 中随机森林中的二进制 class 化或未知 class

Binary classification or unknown class in random forest in R

有没有办法在随机森林中引入 'unknown' 类别或进行二进制 class 化?

我想将数据输入到随机森林中,如果选票百分比超过 70%,我只想 class确认。我总共有 6 个类别,所以我最初做的是创建一个随机森林,并且截止值自动默认为 c(16.6, 16.6, 16.6, 16.6, 16.6, 16.6)。这是相当低的,所以我想:

第二种方法目前存在一个问题,因为截止值需要总和为 1,第一个建议是一个问题,因为我似乎无法弄清楚如何在 R 中进行二进制 class化。

有没有办法克服其中任何一个,并引入一个 'unknown' 类别?谢谢

我建议您保持简单,不要创建多个相互关联的二进制 RF 模型。您可以采用 'majority vote' 以外的其他聚合规则。您可以从每个预测样本中提取投票分布,并从此处实施例如70% 多数规则

@"The second way currently poses a problem as the cut off values need to sum to 1" - 从技术上讲,截止值不需要总和为一。在 randomForest 中,class 预测除以各自的 class 截止值,最大的数字是多数赢家。

library(randomForest)
library(plotrix)
set.seed(1234)
data(iris)
#iris is too easy and therefore applying jitter
iris[1:4] = lapply(iris[1:4],jitter,amount=2)
plot(iris,col=iris$Species)
test = sample(150,25) #reserve a test set
rf = randomForest(Species~.,data=iris[-test,])

#predict test, use type=prob to extract vote fractions
preds = predict(rf,iris[test,],type="prob") 

#make 70% rule
class.winner = apply(preds,1,function(aPred) c(which(aPred>=.7),NA)[1]) 

#plot prediction in probability simplex
triax.plot(preds,col.symbols=iris$Species[test],main="col is true class, o is all pred, x is >=70% preds")
triax.points(preds,col.symbols=unlist(class.winner),pch=4)