机器学习算法之集成学习

一、集成学习方法的思想

       在机器学习问题中,对于一个复杂的任务来说,能否将很多的机器学习算法组合在一起,这样计算出来的结果会不会比使用单一的算法性能更好?这样的思路就是集成学习方法。三个臭皮匠,顶个诸葛亮。实际操作中,集成学习把大大小小的多种算法融合在一起,共同协作来解决一个问题。这些算法可以是不同的算法,也可以是相同的算法。

      第一种就是所有的个体学习器都是一个种类的,或者说是同质的。比如都是决策树个体学习器,或者都是神经网络个体学习器。第二种是所有的个体学习器不全是一个种类的,或者说是异质的。比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。

机器学习算法之集成学习_第1张图片

  目前来说,同质个体学习器的应用是最广泛的,一般我们常说的集成学习的方法都是指的同质个体学习器。而同质个体学习器使用最多的模型是CART决策树和神经网络。同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是boosting系列算法,第二个是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林(Random Forest)系列算法。

       集成学习方法是指组合多个模型,以获得更好的效果,使集成的模型具有更强的泛化能力。对于多个模型,如何组合这些模型,主要有以下几种不同的方法:

  1. 在验证数据集上上找到表现最好的模型作为最终的预测模型;
  2. 对多个模型的预测结果进行投票或者取平均值;
  3. 对多个模型的预测结果做加权平均。
    用好集成学习有两个关键点:1)怎么训练每个算法?2)怎么融合每个算法?围绕这两个关键点,有很多方法提出来,极具代表性就是大家熟知的bagging和boosting方法,其中Bagging和boosting也是当今两大杀器RF(Random Forests)和GBDT(Gradient Boosting Decision Tree)之所以成功的主要秘诀。 Bagging主要减小了variance,而Boosting主要减小了bias,而这种差异直接推动结合Bagging和Boosting的MultiBoosting的诞生。

二、集成学习的主要方法

1、强可学习和弱可学习

       在集成学习方法中,是将多个弱模型,通过一定的组合方式,组合成一个强模型。在《统计学习方法》中介绍了“强可学习 (strongly learnable) ”和“弱可学习 (weakly learnable) ”的概念。
       在概率近似正确 (probably approximately correct, PAC) 学习的框架中,一个概念(一个类),如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么就称这个概念是强可学习的。一个概念,如果存在一个多项式的学习算法能够学习它,学习正确率仅比随机猜测略好,那么就称这个概念是弱可学习的。 Schapire 指出在 PAC 学习框架下,一个概念是强可学习的充分必要条件是这个概念是弱可学习的。那么对于一个学习问题,若是找到“弱学习算法”,那么可以将弱学习方法变成“强学习算法”。

2、在验证集上找表现最好的模型

       这样的方法的思想与决策树的思想类似,在不同的条件下选择满足条件的算法。

3、多个模型投票或者取平均值

       对于数据集训练多个模型,对于分类问题,可以采用投票的方法,选择票数最多的类别作为最终的类别,而对于回归问题,可以采用取均值的方法,取得的均值作为最终的结果。在这样的思路里最著名的是 Bagging 方法. Bagging Boostrap Aggregating ,其中, Boostrap 是一种有放回的抽样方法,其抽样策略是简单的随机抽样。
       在 Bagging 方法中,让学习算法训练多次,每次的训练集由初始的训练集中随机取出的个训练样本组成,初始的训练样本在某次的训练集中可能出现多次或者根本不出现。最终训练出个预测函数,最终的预测函数为,对于分类和回归问题可采用如下的两种方法:
  1. 分类问题:采用投票的方法,得票最多的类别为最终的类别
  2. 回归问题:采用简单的平均方法
(图片来自参考文章2)
随机森林算法就是基于 Bagging 思想的学习算法。

4、对多个模型的预测结果做加权平均

       在上述的 Bagging 方法中,其特点在于随机化抽样,通过反复的抽样训练新的模型,最终在这些模型的基础上取平均。而在对多个模型的预测结果做加权平均则是将多个弱学习模型提升为强学习模型,这就是 Boosting 的核心思想。
       在 Boosting 算法中,初始化时对每个训练样本赋予相等的权重,如 ,然后用该学习算法对训练集训练 轮,每次训练后,对训练失败的训练样本赋予更大的权重,也就是让学习算法在后续的学习中几种对比较难学的训练样本进行学习,从而得到一个预测函数序列 ,其中每个 都有一个权重,预测效果好的预测函数的权重较大。最终的预测函数对于分类和回归问题可采用如下的两种方法:
  1. 分类问题:有权重的投票方式
  2. 回归问题:加权平均



你可能感兴趣的:(python,集成学习)