有没有办法在随机森林中引入“未知”类别或进行二进制分类?
我想将数据提供给随机森林,仅在投票百分比超过70%时才能对其进行分类。我总共有6个类别,所以我最初要做的是创建一个随机森林,并且截止值自动默认为c(16.6, 16.6, 16.6, 16.6, 16.6, 16.6)
。这是相当低的,因此,我想选择以下任一方法:
为每个使用二进制分类的类别(总共6个)创建一个随机森林(它属于该类别,或者不属于该类别,因此它是未知的),然后将未知数据馈入下一棵树,依此类推。
或者,我希望能够坚持使用一个随机森林,但是要引入新的截止值,这使我可以指定“获胜”类的得票比例必须大于70%,而任何数据不能t被标记为“未知”。
第二种方法当前存在问题,因为截止值需要加到1,第一种建议是一个问题,因为我似乎无法弄清楚如何在R中进行二进制分类。
无论如何,这两种方法都可以克服,并引入“未知”类别吗?谢谢
最佳答案
我建议您保持简单,不要创建多个相互关联的二进制RF模型。您可以采用“多数投票”以外的其他汇总规则。您可以从每个预测的样本中提取投票分布,并在此处实施例如70%的多数统治
@“第二种方法当前会带来问题,因为截止值需要加到1”-技术上,截止值不需要加到1。在randomForest中,类别预测除以各自的类别临界值,最大的数字是多数获胜者。
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)
关于r - R中随机森林中的二元分类或未知类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32440272/