梯度提升决策树是一种机器学习模型,因其兼具高精度与高效率,常被用于大规模在线搜索应用中。然而,维持这种效率意味着需要限制梯度提升树在决策时考虑的数据特征数量。如果决策树模型的训练数据有大量潜在特征(例如数千个),而模型最终只会使用其中一小部分(例如一两百个),那么训练过程可能会变得低效,因为模型评估的大多数特征最终将被证明是无关的。
在一篇被国际人工智能与统计会议接受的论文中(原定于上周举行,现已推迟至九月),我们提出了一种训练梯度提升树的新方法。在特征总数大于必要特征集的情况下,该方法比最高效的前代方法要高效得多。
在测试中,我们使用了三个流行的基准数据集,将我们的方法与梯度提升决策树的另外三种实现进行了比较。相对于其最高效的前代方法(一种称为梯度提升特征选择的技术),我们的方法在保持结果模型精度的同时,将训练时间减少了50%至99%。
我们还发现,我们的方法特别适合多任务训练,即机器学习模型被训练以同时执行多项任务(例如,识别狗、猫和马的图像,而不仅仅是其中一种)。
在实验中,当我们的系统同时接受三项任务训练时,它在每项任务上的表现均优于单任务训练。我们还将其与使用梯度提升树进行多任务训练的标准方法进行了比较,发现它在所有三项任务上都提升了性能。
决策树是一种二叉树(类似于流程图),呈现了一系列二元决策。每一个决策都会让树分支出两条路径。最终,树上的每条路径都会到达一个称为叶节点的终点。每个叶节点都有一个关联的数字,代表其对某项分类任务的“投票”:是,我认为这是一只狗;否,我认为这首歌与查询不匹配。
使用梯度提升决策树的模型由多棵树(可能数百棵)组成。在训练期间,模型按顺序构建这些树。每一棵新树的设计目标都是最小化其之前所有树的残差:这就是梯度提升。模型整体的输出是所有树的聚合输出。
在每棵树的每个新决策点,模型必须选择一个决策标准,以最小化模型整体的错误率。这意味着需要评估训练数据的每一个可能特征(以音乐曲目为例,包括艺术家、标题、流派、发行日期、比特率、曲目编号等)。对于每个特征,模型必须找到最佳分割点,即决定路径是向左还是向右分支的阈值。如果数据有1000个特征,但最终只有100个能作为有用的决策标准,那么大部分工作都是徒劳的。
集体行动
我们通过改进常见的二分搜索算法来解决这个问题。在训练之前,我们对每个特征的值进行归一化,使它们都落在0到1的范围内。然后,我们随机将特征分成两组,创建两个伪特征,其值简单地是各个特征归一化值的总和。我们多次重复这个过程,生成几对伪特征,这些伪特征均匀地划分了特征集。
在训练期间,在每个决策点,我们使用一对伪特征来评估树,以常规方式为每个伪特征选择一个分割点。然后,我们选取能带来更好预测效果的伪特征,将其随机分割成两个新的伪特征,并再次测试分割点。
我们重复这个过程,直到收敛于一个单一特征作为该决策点的标准。我们不是评估每个特征,而是评估数量等于特征数量对数值的伪特征。
这种方法只是一种近似,但在论文中,我们提出了理论分析表明,只要有足够的训练数据,该近似方法仍应收敛于一组最优的决策树。
我们也通过实验测试了我们的方法,使用了三个机器学习研究的标准基准。一个是手写数字数据集,目标是识别数字;另一个是航班信息数据集,目标是预测延误;第三个是图像识别任务。我们将我们系统的性能与其他三种梯度提升树的标准实现进行了比较。
在所有情况下,我们系统的性能与表现最佳的基线相比(无论是领先还是落后)都在几分之一个百分点以内,但其训练时间要短得多。训练时间的差异取决于系统的目标准确率,但对于航班数据集,训练时间加速始终在2倍左右;对于手写数字识别任务,始终在10倍左右;对于图像识别任务,始终在100倍左右。