找到随机森林估计器的全局最小值

机器算法验证 优化 Python 随机森林 极值
2022-03-18 20:57:16

我有一个包含 1000 棵树的随机森林回归模型,有 16 个参数(使用 python scikit-learn)。估计器可以预测目标值,交叉验证的 r2 得分为 0.87 +/- 0.03。我想找到随机森林的全局(或至少接近全局)最大值,以便确定产生此最优值的 16 个参数的最佳值。达到随机森林估计最大值的最佳算法是什么?这个算法有python实现吗?

1个回答

使用scipy.optimize.fmin可以轻松地在采样点上评估您的模型或滚动您自己的优化程序。这是有多少模型起作用的基础,因此值得详细了解。例如,参见这些讲义

不过,这可能不是您想要的。r2您交叉验证的是输入空间的分布。argmaxxf(x)随机森林将评估的可能处于低置信度邻域,远离训练数据的支持。

您需要一个生成置信区间的模型。在 Scikit-Learn 中,GaussianProcess 和 GradientBoostingRegressor 都这样做。如果您没有超过一千个训练观察值,高斯过程非常适合这个问题。

如果您在咨询您的模型后可以收集更多数据,那么您可以在argmax置信上限,将结果添加为新数据点并重复直到没有变化。

这个问题被称为上下文强盗置信区间的选择取决于探索直到收敛/利用您想要的间歇值。由于您不关心模型在训练时的表现有多差,因此您会选择一个较大的置信上限,以便模型更快地收敛。

有几个相关的工具包可以解决这类问题。留兰香Hyperopt教育部

如果您无法收集更多数据,那么您应该采取argmax模型的置信下限。这会惩罚模型不确定的预测。