繁体   English   中英

在 R 中将条件变量添加到随机森林 model

[英]Add conditioning variables to a random forest model in R

我想训练一个随机森林来进行分类预测。 如果我想在预测 model 中包含一组固定的自变量(例如Y~.+x1+x2+x3 ),但将它们排除在自变量集中(由 . 在例如)可用于在森林中对数据进行分区/创建分支/树,是否有一种简单的方法可以使用caretgrf或 R 中的另一个 package 来执行此操作?

这是一个例子:如果我想预测鸢尾花数据集中哪些花的萼片宽度超过 3.2,但我想在决定是否创建新分支时以花种为条件,同时排除花种作为可能的分裂变量。 想象一下,我知道花种可以很好地预测萼片宽度,但我想知道还有哪些其他因素可以预测萼片宽度,这取决于物种:

data(iris)
d <- iris

d$sepal_width_over3point2<-as.factor(d$Sepal.Width>3.2)
d$Type1<-as.numeric(d$Species=='versicolor')
d$Type2<-as.numeric(d$Species=='virginica')
d$Type3<-as.numeric(d$Species=='setosa')

d<-subset(d,select=-c(Species,Sepal.Width))


## Set parameters to train models
# Run algorithms using 10-fold cross validation
control <- trainControl(method="cv", number=10)
metric <- "Accuracy"

# Random Forest
set.seed(11)
rf <- train(sepal_width_over3point2~.+Type1+Type2+Type3, data=d, method="rf", metric=metric, trControl=control)
print(rf)

example_varImp_rf<-varImp(rf)

当我查看 model 中的变量重要性时,我想知道其他参数(Sepal.length、Petal.length 和 Petal.width)的估计值取决于花 Type1、Type2 和 Type3,但是排除这些变量作为分支的可能变量。 有没有办法告诉随机森林忽略这三个变量作为可能的分裂?

这将要求您的节点拆分为每种花卉种类设置一个阈值,这将比大多数树学习器的计算成本更高。 我不知道有任何实现此功能的 package。

一种可能的解决方法是进行一些特征工程。 在这种情况下,如果您的条件是一个较小的分类,您可以相对于它们的花种对每个特征进行标准化,以便分裂类似于“萼片长度至少比物种平均值高 20%”或“萼片长度是至少一个(物种)标准偏差高于物种平均值。”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM