Boosting(提升)是一种机器学习中的集成学习方法,它将一组精度较低的模型(称为弱学习器)组合起来,创建一个高度精确的单一模型,即强学习器。与诸如bagging(袋装)之类的并行集成方法不同,boosting算法是顺序构建模型的。序列中的每个新模型都被训练用来纠正其前身所犯的错误。这种迭代过程提高了整体准确性,尤其是通过减少偏差。Boosting是监督学习中用于分类和回归任务的一种流行且有效的技术。
Boosting的理论基础源于Kearns和Valiant在1988年和1989年提出的一个问题:一组弱学习器能否创建一个单一的强学习器。弱学习器被定义为性能仅略优于随机猜测的分类器,而强学习器则与真实分类高度相关。Robert Schapire在1990年的一篇论文中给出了肯定回答,这导致了实用boosting算法的发展。第一个此类算法由Schapire开发,Freund和Schapire后来开发了AdaBoost,它至今仍是boosting的基础范例。
核心机制
虽然boosting在算法上不受约束,但大多数boosting算法包括迭代地学习相对于某个分布的弱分类器,并将它们添加到最终的强分类器中。添加时,它们会以与弱学习器准确性相关的方式进行加权。在添加弱学习器后,数据权重会被重新调整,这一过程称为重新加权。被错误分类的输入数据获得更高的权重,而正确分类的样本则失去权重。因此,未来的弱学习器会更专注于先前弱学习器错误分类的样本。
这种对困难样本的顺序关注将boosting与其他集成方法区分开来。重新加权机制确保序列中的每个后续模型都处理组合集成的残差误差。经过多轮迭代,集成逐渐减少其训练偏差,即使单个弱学习器仅略优于随机猜测,也常常能达到高精度。
历史发展
存在许多boosting算法。最初的算法由Robert Schapire(一种递归多数门公式)和Yoav Freund(多数投票提升)提出,它们不是自适应的,无法充分利用弱学习器。Schapire和Freund随后开发了AdaBoost,这是一种自适应boosting算法,赢得了著名的哥德尔奖。AdaBoost是第一个能够适应弱学习器的算法,因此具有历史意义,并且通常是大学机器学习课程中boosting入门内容的基础。
只有那些在可能近似正确学习框架中被证明是boosting算法的算法才能被准确地称为boosting算法。其他精神相似的算法有时被称为杠杆算法,尽管它们有时也被错误地称为boosting算法。许多boosting算法之间的主要区别在于它们对训练数据点和假设进行加权的方法。
主要算法
AdaBoost在历史上仍然是最重要的,但许多更新的算法已被开发出来。这些包括LPBoost、TotalBoost、BrownBoost、xgboost、MadaBoost、LogitBoost和CatBoost等。许多boosting算法符合AnyBoost框架,该框架表明boosting在函数空间中使用凸代价函数执行梯度下降。
诸如xgboost和CatBoost之类的现代实现已在工业和竞争性机器学习中被广泛使用,因为它们具有可扩展性和性能。这些算法结合了正则化、高效的基于树的弱学习器以及针对稀疏数据和分类特征的优化。它们通常应用于从金融到医疗保健等领域,在表格数据上往往优于其他方法。
计算机视觉中的对象分类
给定包含世界中各种已知对象的图像,可以从中学习一个分类器,以自动对未来的图像中的对象进行分类。基于对象的某些图像特征构建的简单分类器在分类性能上往往较弱。使用boosting方法进行对象分类是一种以特殊方式统一弱分类器以提升整体分类能力的方法。
对象分类问题
对象分类是人工智能和计算机视觉中的一项典型任务,涉及确定图像是否包含特定类别的对象。这一概念与识别、鉴定和检测密切相关。基于外观的对象分类通常包含特征提取、学习分类器以及将分类器应用于新样本。表示对象类别的方式有很多种,从形状分析、词袋模型到诸如SIFT之类的局部描述符。监督分类器的示例包括朴素贝叶斯分类器、支持向量机、高斯混合模型和神经网络。然而,研究表明,对象类别及其在图像中的位置也可以以无监督方式被发现。
对象分类的现状
图像中对象类别的识别是计算机视觉中的一个挑战性问题,尤其是当类别数量很大时。这是由于类内变异大,并且需要对同一类别内对象的变体进行泛化。一个类别内的对象可能看起来非常不同。即使是同一对象,在不同的视角、尺度和光照下也可能看起来不同。背景杂乱和部分遮挡也增加了识别的难度。人类能够识别数千种对象类型,而大多数现有的对象识别系统仅被训练来识别少数几种,例如人脸、汽车或简单对象。研究在处理更多类别和允许增量添加新类别方面一直非常活跃。尽管一般问题仍未解决,但已经开发了几种多类别对象检测器(支持数百或数千个类别),部分通过特征共享和boosting实现。
用于二分类的Boosting
AdaBoost可以用作人脸检测的一个二分类示例。两个类别是人脸与背景。一般算法如下:形成一组大的简单特征;初始化训练图像的权重;对于T轮,归一化权重,使用可用特征集中的单个特征训练分类器,评估训练误差,选择误差最低的分类器,并更新训练图像的权重(如果分类错误则增加,如果正确则减少);最后,将强分类器形成为T个分类器的线性组合,其中系数对于训练误差较小的分类器更大。在boosting之后,由200个特征构建的分类器可以在10的负5次方假阳性率下产生95%的检测率。
用于二分类的boosting的另一个应用是使用运动模式和外观模式检测行人的系统。这项工作首次将运动信息和外观信息结合作为特征来检测行走的人。它采用了类似于Viola-Jones对象检测框架的方法。
用于多类分类的Boosting
与二分类相比,多类分类涉及将图像分配给几个可能的对象类别之一。用于多类问题的boosting方法通常通过诸如一对一或一对多分解之类的策略扩展二分类方法,或者通过直接修改boosting算法来处理多个类别。这些方法使对象检测系统能够识别数百或数千个类别,尽管计算成本和复杂性有所增加。
应用与影响
Boosting已被应用于计算机视觉之外的许多领域。在深度学习背景下,boosting思想影响了集成技术和基于梯度的优化。在自然语言处理中,boosting已被用于文本分类和情感分析。在金融领域,它用于信用评分和欺诈检测。在生物信息学中,boosting有助于基因表达分类和蛋白质功能预测。该方法将简单模型组合成高度准确的预测器的能力使其成为学术研究和工业实践中的常用工具。
理论意义
Boosting的理论意义在于它证明了弱可学习性蕴含强可学习性。这一结果由Schapire在1990年证明,回答了Kearns和Valiant提出的问题,并为理解集成方法的力量奠定了基础。可能近似正确学习框架为boosting算法提供了形式化保证,确保只要有足够的弱学习器,集成就能在训练分布上实现任意低的误差。这一理论基础将boosting与许多启发式集成方法区分开来,并激发了对boosting成功条件的广泛研究。
局限性与考虑因素
Boosting并非没有局限性。它可能对噪声数据和异常值敏感,因为重新加权机制可能导致集成对错误标记的样本过拟合。Boosting的顺序性也使其比bagging更不适合并行化,尽管现代实现引入了近似方法来加速训练。此外,弱学习器的选择和轮数会显著影响性能,需要仔细调整。尽管存在这些挑战,boosting仍然是监督学习中最有效和最广泛使用的技术之一。