我有一个包含 1000 棵树的随机森林回归模型,有 16 个参数(使用 python scikit-learn)。估计器可以预测目标值,交叉验证的 r2 得分为 0.87 +/- 0.03。我想找到随机森林的全局(或至少接近全局)最大值,以便确定产生此最优值的 16 个参数的最佳值。达到随机森林估计最大值的最佳算法是什么?这个算法有python实现吗?
找到随机森林估计器的全局最小值
机器算法验证
优化
Python
随机森林
极值
2022-03-18 20:57:16
1个回答
使用scipy.optimize.fmin可以轻松地在采样点上评估您的模型或滚动您自己的优化程序。这是有多少模型起作用的基础,因此值得详细了解。例如,参见这些讲义。
不过,这可能不是您想要的。这您交叉验证的是输入空间的分布。这随机森林将评估的可能处于低置信度邻域,远离训练数据的支持。
您需要一个生成置信区间的模型。在 Scikit-Learn 中,GaussianProcess 和 GradientBoostingRegressor 都这样做。如果您没有超过一千个训练观察值,高斯过程非常适合这个问题。
如果您在咨询您的模型后可以收集更多数据,那么您可以在置信上限,将结果添加为新数据点并重复直到没有变化。
这个问题被称为上下文强盗。置信区间的选择取决于探索直到收敛/利用您想要的间歇值。由于您不关心模型在训练时的表现有多差,因此您会选择一个较大的置信上限,以便模型更快地收敛。
有几个相关的工具包可以解决这类问题。留兰香、Hyperopt和教育部。
如果您无法收集更多数据,那么您应该采取模型的置信下限。这会惩罚模型不确定的预测。
其它你可能感兴趣的问题