什么是提升法 (Boosting)?
蓝色背景
什么是提升法 (Boosting)?

了解提升算法以及如何提高数据挖掘计划的预测能力。 

提升法是一种集成学习方法,可将一组弱学习器组合成一个强学习器,以最大限度地减少训练误差。 在提升算法中,选择随机数据样本,拟合模型,然后按顺序训练——也就是说,每个模型都试图弥补其前身的弱点。 在每次迭代中,来自每个单独分类器的弱规则被组合成一个强预测规则。 

在继续之前,让我们更广泛地探索集成学习的类别,重点介绍两种最著名的方法:装袋法 (Bagging) 和提升法 (Boosting)。 

集成学习

集成学习为"群体智慧"的观点提供了依据,这表明一个更大的群体的决策通常要优于专家个人的决策。 类似地,集成学习指的是一组(或集成)基础学习器或者模型,他们共同协作以获得更好的最终预测。 单个模型,又称基础或弱学习器,由于高方差或高偏差可能性能不佳。 然而,当弱学习器聚集,可以形成一个强学习器,他们的结合可以减少偏差或降低方差,产生更好的模型性能。 

集成方法经常使用决策树来说明,因为这种算法在没有修剪的情况下容易出现过拟合(高方差和低偏差),而且在非常小的情况下容易出现欠拟合(低方差和高偏差),比如决策树桩,即仅有一层划分的决策树。 请记住,当一个算法在训练数据库中出现过拟合或欠拟合现象时,它不能很好地泛化到新的数据集,所以集成方法被用来抵消这种行为,以便将模型泛化到新的数据集。 虽然决策树会表现出高方差或高偏差,但值得注意的是,它并不是唯一一种利用集成学习来在偏差—方差权衡中找到"最佳点"的建模技术。  

装袋法与提升法

装袋法与提升法是两种主要的集成学习方法。 正如本研究(PDF,248 KB)(此链接在 ibm. com 之外)中强调的,这些学习方法之间的主要区别在于它们的训练方式。  在 bagging 算法中,弱学习器并行训练,但在 boosting 算法中,它们串行训练。 这意味着构建了一系列模型,并且随着每次新模型迭代,前一个模型中误分类数据的权重增加。 这种权重的重新分配有助于算法识别需要关注的参数,以提高其性能。 AdaBoost 是英文"adaptative boosting"(自适应增强)的缩写,因为它是第一个同类算法,所以是最受欢迎的 boosting 算法之一。 其他类型的 boosting 算法包括 XGBoost,GradientBoost 和 BrownBoost。 

bagging 和 boosting 的另一个区别在于它们的使用方式。 例如,bagging 算法通常用于呈现出高方差和低偏差的弱学习器,而 Boosting 算法则用于低方差和高偏差的学习器。 虽然 bagging 可用于避免过度拟合,但 Boosting 方法可能更容易出现这种情况(链接位于 ibm.com 之外),尽管它确实取决于数据集。  但是,参数调优可以帮助避免这个问题。 

因此,Bagging 和 Boosting 也有不同的实际应用。 Bagging 已被用于贷款审批流程和统计基因组学,而 Boosting 已更多地用于图像识别应用和搜索引擎。  

特色产品

SPSS Modeler


提升的类型

提升方法侧重于迭代组合弱学习器以构建可以预测更准确结果的强学习器。 提醒一下,弱学习器对数据的分类略好于随机猜测。  这种方法可以为预测问题提供可靠的结果,对于图像检索( PDF,1.9 MB )(链接指向 ibm.com 外部)之类的任务,甚至可以胜过神经网络和支持向量机。    

提升算法在顺序过程中创建和聚合弱学习器的方式可能有所不同。 三种流行的增强方法包括: 

  • 自适应提升,也称为 AdaBoost:AdaBoost 算法的创建归功于 Yoav Freund 和 Robert Schapire。 这种方法迭代运行,识别错误分类的数据点并调整它们的权重以最大限度降低训练误差。 该模型以顺序方式继续优化,直到产生最强的预测器。  
  • 梯度提升:在 Leo Breiman 的工作基础上,Jerome H. Friedman 开发了梯度提升,工作原理是将预测器按顺序添加到集合中,每个预测器都纠正其前者的错误。   然而,梯度提升训练的是前一个预测器的残差,而不是像 AdaBoost 那样改变数据点的权重。  之所以使用梯度提升这个名称,是因为它结合了梯度下降算法和提升方法。  
  • 极限梯度提升或称为 XGBoost: XGBoost 是梯度提升的一种实现,专为计算速度和规模而设计。 XGBoost 利用 CPU 的多个内核,能够在训练期间并行进行学习。   

提升法的优势和难点

提升方法在用于分类或回归问题时有许多重要优势也面临挑战。 

提升法的主要优势包括:  

  • 易于实施: 提升法可以与几个超参数微调选项一起使用来提高拟合度。 提升算法有内置的例程来处理丢失的数据,因此不需要数据预处理。 在 Python 中,利用集成方法的 scikit-learn 库(也称为 sklearn.ensemble ),可以轻松实现流行的提升方法,包括 AdaBoost、XGBoost 等。  
  • 减少偏差:提升算法以顺序方法组合多个弱学习器,对观察结果进行迭代改进。 这种方法有助于减少在浅层决策树和逻辑回归模型中常见的高偏差。 
  • 计算效率:由于提升算法只选择在训练过程中增加其预测能力的特征,因此可以帮助降低维度并提高计算效率。  

提升算法面临的主要难题包括:  

  •  过度拟合:关于提升法是有助于减少过度拟合还是会加剧过度拟合,研究中存在一些争议(链接位于 ibm.com 之外)。  我们之所以将这一点纳入难题中,是因为这种情况确有发生,预测不能推广到新的数据集。  
  •  密集计算:提升中的顺序训练很难扩大规模。 由于每个估计量都建立在其前代的基础上,因此提升法模型在计算方面开销很大,尽管 XGBoost 试图解决在其他类型的提升方法中出现的可扩展性问题。 与装袋算法相比,提升算法的训练速度可能较慢,因为大量参数也会影响模型的行为。 

提升算法的应用

提升算法非常适用于各行各业的人工智能项目,包括:  

  • 医疗保健:提升算法用于降低医疗数据预测中的错误,例如预测心血管危险因素和癌症患者的存活率。 例如,研究(链接指向 ibm.com 外部)表明,集成方法显著提高了识别心血管疾病预防性治疗可能受益患者的准确性,同时避免对他患者进行不必要的治疗。  同样,另一项研究(链接指向 IBM 外部)发现,将提升算法应用于多个基因组学平台可以改善对癌症存活时间的预测。 

  • IT:梯度提升回归树在搜索引擎中用于页面排名,而 Viola-Jones 提升算法用于图像检索。  正如康奈尔(链接指向 ibm.com 之外)所指出的那样,当预测的方向很明确时,增强分类器能够更快地停止计算。  这意味着搜索引擎可以停止对排名较低的页面的评估,而图像扫描仪只会考虑实际包含所需对象的图像。    

  • 财务:提升算法与深度学习模型一起使用来自动化关键任务,包括欺诈检测、定价分析等。 例如,信用卡欺诈检测和金融产品定价分析(链接指向 ibm.com 外部)中的提升方法提高了分析海量数据集的准确性,最大限度地减少财务损失。   


提升算法和 IBM

IBM 解决方案支持从端到端的机器学习生命周期。 了解 IBM 数据挖掘工具(例如 IBM SPSS Modeler )如何让您能够开发预测模型以将预测模型部署到业务运营中。 而且使用这些工具,可以轻松地通过建模来增强模型准确性。 要了解有关提升法和装袋法优势的更多信息,请访问 IBM 数据科学社区。 


相关解决方案

SPSS Modeler

利用直观的拖放式数据科学工具,提高 ROI 并加速实现价值。


IBM Cloud 解决方案

混合。 开放。 永续。 您的数字化转型平台和合作伙伴。


Cloud Pak 解决方案

AI 驱动的混合云软件。