一 集成学习概念
集成学习通俗理解就是“三个臭皮匠,顶个诸葛亮”。对于复杂任务,通过适当的方式集成多个个体学习器(弱分类器)所得到的最终模型要比单独的个体学习器(弱分类器)的性能更优。所以问题的关键点就转化为两点:如何选择、生成弱分类器和如何对他们进行集成,通常有以下三种思路:
- 将不同类型的弱分类器进行集成,例如同用于分类的SVM,LR,RF等
- 将相同类型不同参数的弱分类器进行集成,例如GBDT的迭代次数,树的深度等
- 将相同类型但训练集不同的弱分类器进行集成,例如K折交叉验证,随机抽样等
要想获得好的集成学习需要注意:
- 个体学习器要有一定的准确性:单个学习器的准确度越高,集成学习器才可能越好。个体学习器不能太差,至少不能差于弱学习器。(弱学习器是指泛化性能略优于随机猜想的学习器)
- 个体学习器的多样性(差异性):学习器之间要有差异。
二 个体学习器概念
集成学习的基础就是要得到多个个体学习器,个体学习器通常由一个现有的学习算法从训练数据产生:
- 只包含同种类型的个体学习器,这样的集成是“同质”的(homogeneous)。同质集成中的个体学习器亦称为”基学习器“(base learning),相应的学习算法称为”基学习算法“(base learning algorithm)。
- 集成也可包含不同类型的个体学习器,这样集成是”异质“的(heterogeneous)。相应的个体学习器,常称为”组件学习器“(component learning)或直接称为个体学习器。
在一般的经验中,如果把好坏不等的东西掺到一起,那么通常结果会是比坏的好一些,比好的要坏一些
如何增强个体学习器的多样性:
2.1 数据样本扰动
数据样本扰动对“不稳定基学习器”很有效,这样的“不稳定基学习器”主要有决策树、神经网络。训练样本稍微有些变化就会导致学习器有显著的变动。而有些基学习器对数据样本的扰动是不敏感的,比如线性学习器、支持向量机、朴素贝叶斯、K近邻学习器,这样的基学习器称为稳定基学习器,稳定基学习器对数据样本的扰动不敏感,对这类稳定基学习器一般采用的是输入属性扰动等其他机制。数据样本扰动基于的是采样法,在Bagging中使用的是自助采样法,而在AdaBoost中采样的是序列采样。
2.2 输入属性扰动
著名的随机子空间算法依赖的就是输入属性扰动,这个算法从初始属性集中抽取出若干个属性子集,再基于每个属性子集在子空间中训练个体学习器不仅能够产生多样性大的个体,还会因属性数的减少而大幅节省时间开销。
2.3 输出表示扰动
基本思路是对输出表示进行操纵以增强多样性。可对训练样本的类标记稍作变动,如“翻转法”,翻转法由Breiman在2000年随机改变一些训练样本的标记;或者是对输出表示进行转化,如“输出调制法”将分类输出转化为回归输出后构建个体学习器。还可以将原任务拆解为多个可同时求解的子任务。
2.4 算法参数扰动
这里的算法参数一般要对参数进行设置,比如神经网络的隐层神经元数、初始连接权值等,通过随机设置不同的参数,往往可产生差别较大的个体学习器。比如可以将决策树使用的属性选择机制替换为其他的属性选择机制。“负相关法”显示地通过正则化项来强制个体神经网络使用不同的参数。
三 Boosting&Bagging
集成方法分类:
串行集成方法多个模型顺序生成。此方法是利用模型之间的依赖关系。算法可以通过提高被分错样本的权重来提高性能。具体参见Boosting。
并行集成方法多个模型并行生成。此方法是利用模型之间的独立性,因为可以通过平均来降低误差。具体参见Bagging。
树行集成方法这种方法可分多层,每一层可包括多种模型,下层的训练数据集为上一层的训练结果,类似于树。具体参见Stacking、Blending。
类型 | 算法 |
---|---|
Bagging | 随机森林(RF) |
Boosting | AdaBoost、GBDT、XGBoost、LightGBM、CatBoost |
3.1 Bagging
Bagging就是通过 M M M个弱模型的结果,通过并行集成的方式来获得最终结果。因为 M M M个数据集是相互独立的,因此这M个弱模型之间也是相互独立的,在最终的集成结果时,每个模型的权重是一样的。Bagging主要是减少方差,Bagging的主要步骤如下:
- 在包含 N N N个样本的数据集中随机有放回的抽取一定数量的样本,构成数据集;
- 按步骤1的方式生成 M M M个数据集;
- 利用机器学习方法对得到的 M M M个数据集生成 M M M个弱分类器;
- 集成 M M M个弱分类器结果作为最终的结果;
3.2 Boosting
每个模型的重要度作为每个模型结果的权重,然后加权计算得出结果。可以看出Boosting中生成多个模型的方式并不是和Bagging一样并行生成,而是串行生成,因此也决定了多个模型结果的集成是串行集成,也就是每个模型的结果权重并不是一样的。Boosting主要是减少偏差。如何来调整样本分布以及计算模型的重要度,不同方法有不同的定义。主要的步骤如下:
-
每一次根据上一次训练得到的结果,调整数据集样本的分布,然后再生成下一个模型;
-
生成 M M M个模型;
-
根据 M M M个模型的结果生成最终结果;
四 结合策略
4.1 平均法
对数值型输出 h i ( x ) ∈ R h_i(x)\in R hi(x)∈R,最常见的结合策略就是使用平均法,平均法分为简单平均法和加权平均法。
简单平均法:
H ( x ) = 1 T ∑ i = 1 T h i ( x ) H(x)=\frac{1}{T}\sum_{i=1}^Th_i(x) H(x)=T