R中随机森林中的二元分类或未知类
Posted
技术标签:
【中文标题】R中随机森林中的二元分类或未知类【英文标题】:Binary classification or unknown class in random forest in R 【发布时间】:2015-12-03 02:29:55 【问题描述】:有没有办法在随机森林中引入“未知”类别或进行二元分类?
我想将数据输入一个随机森林,如果投票百分比超过 70%,我只想对其进行分类。我总共有 6 个类别,所以我最初做的是创建一个随机森林,并且截止值自动默认为 c(16.6, 16.6, 16.6, 16.6, 16.6, 16.6)
。这是相当低的,所以相反,我想:
第二种方法目前存在问题,因为截止值需要总和为 1,第一种建议是一个问题,因为我似乎无法弄清楚如何在 R 中进行二进制分类。
无论如何,是否可以克服其中任何一个,并引入“未知”类别?谢谢
【问题讨论】:
【参考方案1】:我建议您保持简单,不要创建多个相互关联的二进制射频模型。您可以采用“多数票”以外的其他聚合规则。您可以从每个预测样本中提取投票分布,并从这里实现例如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中随机森林中的二元分类或未知类的主要内容,如果未能解决你的问题,请参考以下文章