什么是提升法?
了解提升算法以及它如何提高数据挖掘计划的预测能力。
蓝色背景
什么是提升法?

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

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

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

集成学习

集成学习相信“群体智慧”的观点,即一个更大群体的决策通常要优于专家个人的决策。 与此类似,集成学习指的是一组(集成的)基础学习器(或模型),他们共同协作以获得更好的最终预测。 单个模型,又称基础学习器或弱学习器,由于高方差或高偏差而可能表现不理想。 然而,当弱学习器汇总以后,可以形成一个强学习器,这种结合有助于减少偏差或降低方差,产生更好的模型性能。 

集成方法通常使用决策树来说明,因为这种算法在没有修剪的情况下容易出现过拟合(高方差和低偏差);如果决策树非常小,比如决策树桩,即仅有一层的决策树,则容易出现欠拟合(低方差和高偏差)。 请记住,当算法在训练数据集时出现过拟合或欠拟合现象时,它就无法有效地归纳新的数据集,所以使用集成方法来抵消这种行为,以使模型能够归纳新的数据集。 虽然决策树会表现出高方差或高偏差,但值得注意的是,它并不是唯一一种利用集成学习在“偏差-方差”权衡中找到“最佳位置”的建模方法。  

装袋法与提升法

装袋法与提升法是两种主要的集成学习方法。 正如这篇研究报告(PDF,248 KB)(链接位于 ibm.com 外部)中强调的,这些学习方法之间的主要区别在于它们的训练方式。 在装袋法中,弱学习器并行训练,但在提升法中,它们按顺序训练。 这意味着会构建一系列模型,并且随着每次新的模型迭代,前一个模型中误分类数据的权重会增加。 这种权重的重新分配可帮助算法发现需要关注的参数,从而提高其性能。 AdaBoost 是英文“adaptative boosting”(自适应提升)的缩写,它是同类算法中的第一个,也是最受欢迎的提升算法之一。 其他类型的提升算法包括 XGBoost、GradientBoost 和 BrownBoost。 

装袋法和提升法的另一个区别在于它们的使用方式。 例如,装袋法通常用于表现出高方差和低偏差的弱学习器,而提升法则用于低方差和高偏差的情况。 装袋法可用于避免过拟合,而提升法可能更容易出现这种情况(链接位于 ibm.com 外部),尽管这实际上取决于数据集。  参数调优可帮助避免这个问题。 

因此,装袋法和提升法的实际应用领域也有所不同。 装袋法常用于贷款审批流程和统计基因组学,而提升法更多地用于图像识别应用和搜索引擎。  

特色产品

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 外部)中使用提升法,有助于提高分析海量数据集的准确性,从而最大程度减少财务损失。 

相关解决方案
SPSS Modeler

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

探索 IBM SPSS Modeler
IBM 云解决方案

混合, 开放, 弹性。 贵组织数字化转型的平台与合作伙伴。

探索云解决方案
Cloud Pak 解决方案

AI 驱动的混合云软件。

探索 Cloud Pak 解决方案
采取下一步行动

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

立即加入 IBM 的数据科学社区