基学习算法是什么?同质集成中用来产生每个成员的算法
基学习算法(Base Learning Algorithm)是同质集成学习中,用来训练每一个成员模型的那种学习算法。比如随机森林中的每一棵树都用决策树算法训练,决策树算法就是它的基学习算法;AdaBoost 中常用只有一次划分的决策树桩,决策树桩的学习算法就是基学习算法。由基学习算法训练出来的每一个模型,叫作基学习器。
集成方法是“元算法”
Bagging、Boosting 等集成方法本身并不规定具体用什么模型,它们是一种“包裹”在学习算法外面的框架,也被称为元算法。它们的工作方式是:以某种方式处理训练数据,然后反复地调用基学习算法,得到多个基学习器,再把它们组合起来。比如 Bagging 会进行多次自助采样,每次都把采样得到的数据交给基学习算法去训练;Boosting 则在每一轮调整样本的权重,再交给基学习算法训练下一个学习器。因此,同一个集成方法可以搭配不同的基学习算法,效果也会大不相同。
如何选择基学习算法
与 Bagging 搭配:Bagging 主要降低方差,因此适合搭配“不稳定”的基学习算法,也就是训练数据稍有变化、学到的模型就会差别很大的算法,比如不剪枝的决策树、神经网络。对于线性回归、K 近邻这类稳定的算法,在不同的自助样本上学到的模型几乎一样,Bagging 带来的提升很有限。与 Boosting 搭配:Boosting 主要降低偏差,通常搭配偏差较大、结构简单的弱学习算法,比如决策树桩或深度较浅的决策树,基学习算法太强反而容易过拟合。基学习算法还需要能够处理样本权重,否则就要用重采样来代替。计算效率:集成需要调用基学习算法几十次乃至上千次,所以它的训练和预测速度非常关键。决策树训练快、预测快,不需要对特征做标准化,能处理数值和类别特征,因此成为最常用的基学习算法。
为基学习算法引入随机性
在同质集成中,所有的基学习器都来自同一个算法,它们之间的差异需要靠扰动来产生。除了扰动训练样本,还可以直接在基学习算法内部引入随机性:随机森林在每个节点上只从随机选出的一部分特征中寻找最优划分,这就是对决策树算法的一种修改;极端随机树更进一步,连划分点也随机选取;神经网络则可以使用不同的随机初始化。周志华《机器学习》把这些方式归纳为对数据样本、输入属性、输出表示和算法参数的扰动,并指出不同的扰动方式适合不同的基学习算法:对于稳定的基学习器,比如线性模型、支持向量机、朴素贝叶斯,对样本的扰动效果有限,对输入属性的扰动往往更有效。
基学习算法与集成的效果
集成的最终效果取决于两方面:每个基学习器本身的准确性,以及它们之间的多样性。选择基学习算法时,需要在这两方面之间取得平衡。现代最成功的集成方法,比如随机森林、XGBoost、LightGBM,都是以 CART 决策树作为基学习算法,再加上精心设计的随机性和正则化,它们在表格数据上至今仍是最可靠的选择之一。