作者:Ankit Chaoudhary
翻译:笪洁琼
校对:梁傅淇
本文共3515字,建议阅读7分钟。
通过本文与大家讨论一个被称为正则化的贪心森林算法。
引言
作为一名参与多个机器学习竞赛数据科学家,我总是在寻找“尚未流行”的算法。我是这样定义这些算法的:它们本身最终不会成为竞赛里的赢家,但是它们会给的预测带来不同。
为什么我对这些算法感兴趣?
关键在于“它们本身”。这些算法能够用在集成模型之中,来获取超过大多数流行的梯度提升算法(XGBoost,LightGBM等等)的额外优势。
这篇文章讨论的是一种被称为正则化的贪心森林(RGF)的算法。它在大量的数据集里的表现都和Boosting算法相当(如果没有优于它们的话)。它们产生更少的预测,并且在与其他树提升模型集成时表现更好。
目录
1. 正则化贪心森林算法vs. 梯度提升
权重优化
树的大小
模型大小
2. 使用Python实现正则化贪心算法
正则化贪心森林算法(RGF) vs. 梯度提升
在Boosting算法之中,每个分类器/回归因子都使用数据进行训练,同时也会将之前分类器和回归因子的成功经验纳入考量。每一次训练之后,都会重新分配权重。被错误分类的数据所占的权重将会上升,用以突出最困难的案例。这样,后续的学习器将会专注于这些数据。
但是,Boosting方法只是把决策树基学习器视为一个黑盒子,并没有利用树结构本身。从某种意义上说,在每次迭代中,Boosting都会对模型进行部分纠正。
相比之下,正则化贪心森林算法(RGF)执行两个步骤:
找出对目前的森林可进行的结构上的一步改造,以使得新森林损失(例如,最小二乘或对数损失)最小化。
调整整个森林的叶子重量,使损失函数最小化。
寻找最优结构变化:
1.为了计算效率,在搜索新的森林时只执行两种操作 :
要分割一个现有的叶节点,
开始生长新树(即:在森林里增加上一个新的树桩)。
2.通过不断地评估所有可能的结构变化下最大的损失减少量