下面的示例描述了只有两个特性和两个类的样例数据集(左)。决策树算法从根节点中的所有15个数据点开始。该节点被称为不纯节点,因为它混合了多种异构数据。在每个决策节点上,算法根据减少杂质最多的目标特征对数据集进行分割,最终产生具有同质数据的叶节点/终端节点(右)。有一些常用的测量杂质的指标-基尼系数和熵。虽然不同的决策树实现在使用杂质度量进行计算时可能会有所不同,但一般的概念是相同的,并且在实践中结果很少有实质性的变化。分区过程会继续,直到没有进一步的分离,例如,模型希望达到一个状态,即每个叶节点都尽可能快地变成纯的。在进行预测时,新的数据点遍历决策节点序列,以达到确定的结果。
优势
问题
在最近的一段时间里,为了进一步提高基于树的模型的潜力,对树类的模型进行了重大的改进和验证。下面的流程记录了这个过程:
早期停止(Pre-Pruning)
通过防止模型学习过于具体和过于复杂的模式,有几种方法可以减少过拟合。
因为很难提前知道什么时候停止生长。可能需要一些迭代来调整这些超参数。建议在对树进行训练时可视化,从较低的max_depth开始,然后迭代递增。
修剪(Post-Pruning)
修剪是通过删除不利于模型预测能力的叶节点来实现的。这是简化模型和防止过拟合的另一种方法。实际上,一个完全成熟的决策树可能有太多冗余的分支。修剪通常是通过在模型构建之后,在验证或测试数据集上检查模型的性能来完成的。通过删除对性能产生最小负面影响的节点(称为成本复杂性剪枝),它降低了复杂性,并允许模型更好地泛化。
Bagging (Bootstrap Aggregation 采样聚合)
Bagging是一种集成技术,通过考虑在同一数据集的不同子样本上训练的多个决策树模型的结果,来减少预测的方差。当数据的大小受到限制时,这种方法特别有用。根据问题的不同,所有模型的预测使用平均值、中位数或众数值进行组合。
随机森林
随机森林(Random Forest)是一种集成学习方法,使用不同的特征子集构建多个树模型,无论是否采样(即Bootstrap)。它可以有效地处理具有许多变量的高维数据集,因为只使用其中的一个子集来构建单独的树。限制每个树模型的特征数量的思路是为了消除它们之间的相关性,当决策节点一致使用强预测器时就会发生这种情况。高度相关模型的协作并不能有效地减少结果的差异。随机森林算法的特点是通用性强,训练速度快,准确率高。
值得注意的是,这种方法通常用于理解数据集和确定变量的重要性,因为它与解决问题有关——排除有价值的特征会导致错误的增加。
Boosting
Boosting是另一种集成学习,它结合弱学习者来提高模型性能。弱学习者是预测相对较差的简单模型。提升的概念是按顺序训练模型,每次都试图比之前更好地适应。一种被称为自适应增强(AdaBoost)的方法,根据先前的结果修改数据点的权重。对于后续的每个模型构建实例,正确分类的数据点权重更小,错误分类的数据点权重更高。较高的权值可以引导模型学习这些数据点的细节。最后,所有的模型都有助于做出预测。
梯度提升(和XGBoost)
梯度提升方法随着复杂性的增加而增强。梯度提升不是在每次构建模型时调整权重,而是将后续模型与前一个模型的残差进行匹配。这种方法可以帮助树在性能不好的地方逐渐改进。换句话说,它迭代地提高了单个树的精度,从而提高了模型的整体性能。梯度提升受制于许多必须仔细考虑的参数。当数据集中的关系高度复杂和非线性时,它是有效的。
极端梯度提升(Extreme Gradient boost,简称XGBoost)是对标准梯度增强方法进行了一些添加的实现。首先,它使正则化成为可能,这进一步有助于减少过拟合。开发XGBoost的目的是优化计算性能。由于梯度提升训练的模型是按顺序进行的,因此实现起来会很慢。XGBoost的一些显著特性包括并行化、分布式计算、核外计算和缓存优化。
在本文中,我们回顾了一些用于改进基于树的模型的粗线条术语和技术。基于树的模型很受欢迎,因为它具有直观的特性。理解机制将有助于创建基线模型。也就是说,没有免费的午餐——即使有了这些技术,调整模型以完全优化模型性能仍然是一个迭代过程。
作者:Kevin C Lee
deephub翻译组
本文分享自 DeepHub IMBA 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!