组件学习器是什么?异质集成中由不同算法训练的成员
组件学习器(Component Learner)是集成学习中的一个概念,指在“异质集成”中参与组合的各个个体学习器。在异质集成中,各个成员是用不同类型的学习算法训练出来的,比如一个决策树、一个支持向量机、一个神经网络和一个 K 近邻模型组合在一起。由于不存在统一的基学习算法,这些成员不叫基学习器,而叫组件学习器,或者直接称为个体学习器。
同质集成与异质集成
集成学习可以分为两类。同质集成:所有成员都是同一种模型,比如随机森林中全是决策树,其成员叫基学习器。它们之间的差异主要来自训练数据、特征或随机初始化的不同。异质集成:成员是不同种类的模型,其成员叫组件学习器。它们之间的差异主要来自算法本身的不同。
异质集成的优势
集成学习要想有效,成员之间必须“好而不同”:每个成员都要有一定的准确性,彼此之间又要有足够的差异,犯的错误要尽量不同。不同的学习算法有着不同的归纳偏好:决策树擅长处理特征之间的交互和非线性,但边界是轴平行的台阶状;线性模型假设线性关系,稳定但表达能力有限;K 近邻依赖局部的相似性;神经网络能学习复杂的表示;支持向量机追求最大间隔。它们看待同一个问题的“角度”天然不同,在不同的样本上犯错的情况也往往不同,因此组合起来更容易相互弥补。这是异质集成相对于同质集成的一个重要优势。
如何组合组件学习器
投票和平均:最简单的方式,分类时进行多数投票或对概率求平均(软投票),回归时对预测值求平均,还可以根据各个组件在验证集上的表现分配权重。但需要注意,不同类型的模型给出的概率在“校准”程度上可能差别很大,有的模型习惯给出非常极端的概率,直接平均时它可能主导结果,必要时应先对概率进行校准。堆叠(Stacking):这是异质集成最常用的方式。先用交叉验证的方法,让每个组件学习器对训练数据做出“没见过”的预测,再把这些预测作为新的特征,训练一个元学习器来学习如何最好地组合它们。元学习器通常选用逻辑回归、线性回归等简单的模型,以免过拟合。David Wolpert 在 1992 年提出了堆叠泛化的思想,Leo Breiman 后来做了进一步的研究。
实践中的应用
在机器学习竞赛中,排名靠前的方案常常是把梯度提升树、神经网络、线性模型等多种模型堆叠在一起的异质集成。Netflix 推荐大赛的获胜方案就组合了上百个不同类型的模型。异质集成的缺点是需要分别开发、训练和维护多种模型,部署和推理的成本较高,结果也更难解释,因此在实际的生产系统中,往往需要在效果提升与工程代价之间进行权衡。