我刚开始学习使用H2O AutoML,并且正在尝试一个二分类模型。
我想了解为什么每次运行时模型的排名都会发生变化。
前5名的模型始终保持在前5名,但模型的排名会略有上升或下降。
例如,DRF曾经排名第二,而另一次排名第三。
我可以推测有几个原因导致这种变化。
- 每次算法的种子都会改变
- 没有指定排行榜框架
- 随机森林作为过程的一部分涉及随机抽样,导致每次构建的树不同
- 排行榜不会改变,数据/代码的其他变化导致了排名的变化。
您能帮助我更好地理解这一点吗?
回答:
听起来您没有设置种子,所以您应该从这里开始。对于那些具有内在随机性的算法(例如XGBoost、GBM、随机森林),每次都产生相同的结果,必须至少设置一个随机种子。在H2O AutoML中,有一个单一的seed
参数(它会传递给所有单独的算法),如果您每次都将其设置为相同的值,大多数模型在重复运行时将会相同。默认情况下,AutoML还会使用随机折叠进行交叉验证,因此这也保证每次使用相同的折叠。
有一些例外情况——即使您设置了种子,H2O深度学习(默认情况下)也是不可复现的,因此这些模型总是会发生变化。由于“所有模型”堆叠集成使用了深度学习模型以及许多其他模型,最终的集成也将是不可复现的。
最后,您应该使用max_models
而不是max_runtime_secs
来控制AutoML的运行时间——否则在后续运行中,您可能会在排行榜上(以及在“所有模型”堆叠集成中)得到不同数量的模型。