在特征工程和选择:预测模型的实用方法库恩和约翰逊提到(第 7 章)中,随机森林可用于检测变量之间的交互,例如 x1*x2。
我的问题是。可以使用随机森林来检测平方项 x1^2。如果是这样,你会怎么做?
在特征工程和选择:预测模型的实用方法库恩和约翰逊提到(第 7 章)中,随机森林可用于检测变量之间的交互,例如 x1*x2。
我的问题是。可以使用随机森林来检测平方项 x1^2。如果是这样,你会怎么做?
确实可以。以下是一些在预测变量和响应之间具有平方关系的模拟数据,以及来自随机森林的拟合:
代码:
nn <- 1e4
set.seed(1)
xx <- runif(nn)
yy <- xx^2+rnorm(nn,0,0.1)
plot(xx,yy,pch=19,cex=0.6,col="lightgray")
library(randomForest)
model <- randomForest(yy~xx)
xx_pred <- seq(0,1,by=.01)
lines(xx_pred,predict(model,newdata=data.frame(xx=xx_pred)),col="red",lwd=2)
至于 RF 是如何做到的:记住它只是分类和回归树的集合。每个单独的树(基于数据的引导样本和预测变量的子集)将使用不同的预测变量截止值,并为低和高预测变量值的响应输出不同的值。平均而言,高预测值的拟合响应将比低预测值更偏离平均值,从而对非线性关系进行建模。
还有一些 RF 实现可以在叶子中的预测器上拟合线性模型。当然,这些也可以通过为预测变量的不同值拟合不同的斜率来模拟非线性。