随机森林可以检测平方项吗?

机器算法验证 机器学习 随机森林 相互作用
2022-04-02 15:33:05

特征工程和选择:预测模型的实用方法库恩和约翰逊提到(第 7 章)中,随机森林可用于检测变量之间的交互,例如 x1*x2。

我的问题是。可以使用随机森林来检测平方项 x1^2。如果是这样,你会怎么做?

1个回答

确实可以。以下是一些在预测变量和响应之间具有平方关系的模拟数据,以及来自随机森林的拟合:

射频拟合

代码:

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 实现可以在叶子中的预测器上拟合线性模型。当然,这些也可以通过为预测变量的不同值拟合不同的斜率来模拟非线性。