集成学习算法-Bagging和Boosting及其相关算法概述

1、集成学习

1.1 简介

       在学习树模型的时候,经常听到有关于集成学习的概念。集成学习在机器学习中有较高的准确率,不足之处就是模型的训练过程比较复杂,效率不是很高;主要分为两种类型:

(1)基于boosting思想的算法,例如:AdaboostGDBTXGBOOST

(2)基于Bagging思想的算法,经典的就是随机森林算法

1.2 集成学习的思想 
       首先说明一下集成学习的主要思想,俗话说,三个臭皮匠,顶个诸葛亮;集成学习利用了类似的思想,通过利用一定的手段学习出多个弱分类器,然后通过组合的方式进行投票,构建一个等效于较强分类器的公共预测模块。核心思想就是如何训练处多个弱分类器以及如何将这些弱分类器进行组合。其中Boosting是采用串行的方式,而Bagging采用的是并行的方式。

1.3、弱分类器选择 
        一般采用弱分类器的原因在于将误差进行均衡,通常有同质学习器和异质学习器两种选择方式。常用的弱分类器可以采用误差率计较小的,比如说LRSVM等。

1.4、多个分类器的训练方法
         可以采用随机选取数据进行分类器的训练(例如随机森林),也可以采用不断的调整错误分类的训练数据的权重生成新的分类器(例如Adaboost)。

1.5、弱分类器之间的组合方式 
        若分类器之间的组合方式一般有简单多数投票、权重投票,贝叶斯投票,基于D-S证据理论的整合,基于不同的特征子集的整合。

2Boosting算法

2.1 基本概念

        Boosting方法是一种用来提高弱分类算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数。他是一种框架算法,主要是通过对样本集的操作获得样本子集,然后用弱分类算法在样本子集上训练生成一系列的基分类器。他可以用来提高其他弱分类算法的识别率,也就是将其他的弱分类算法作为基分类算法放于Boosting 框架中,通过Boosting框架对训练样本集的操作,得到不同的训练样本子集,用该样本子集去训练生成基分类器;每得到一个样本集就用该基分类算法在该样本集上产生一个基分类器,这样在给定训练轮数 n ,就可产生 n 个基分类器,然后Boosting框架算法将这 n个基分类器进行加权融合,产生一个最后的结果分类器,在这 n个基分类器中,每个单个的分类器的识别率不一定很高,但他们联合后的结果有很高的识别率,这样便提高了该弱分类算法的识别率。在产生单个的基分类器时可用相同的分类算法,也可用不同的分类算法,这些算法一般是不稳定的弱分类算法,如神经网络(BP) ,决策树(C4.5)等。

2.2Adaboost

       Adaboostboosting中较为代表的算法,基本思想是通过训练数据的分布构造一个分类器,然后通过误差率求出这个若弱分类器的权重,通过更新训练数据的分布,迭代进行,直到达到迭代次数或者损失函数小于某一阈值。

Adaboost的算法流程: 
假设训练数据集为T={(X1,Y1),(X2,Y2),(X3,Y3),(X4,Y4),(X5,Y5)} 其中Yi={-1,1}训练数据的权重分布为D={W11,W12,W13,W14,W15},其中W1i=1/N。即平均分配。例如,选择最简单的线性分类器y=aX+b ,分类器选定之后,最小化分类误差可以求得参数。误差率也可以求出来为e1.同时可以求出这个分类器的系数。基本的Adaboost给出的系数计算公式为

 
然后更新训练数据的权重分布,

其中为规范化因子

使得是一个分布;Adaboost分类采用的是加权平均法,最终的强分类器为

 
当然这种组合方式基于分类器的系数的,而分类器的系数又是根据误差率求出来的,所以Adaboots最后影响的就是如何使用误差率,以及训练数据更新权重的的计算系数。

3Bagging算法

bagging方法采用的是随机有放回的选择训练数据然后构造分类器,最后组合。

集成学习算法-Bagging和Boosting及其相关算法概述_第1张图片

这里以随机森林为例进行讲解。 
随机森林算法

       随机森林算法基本思想就是构造很多棵决策树,形成一个森林,然后用这些决策树共同决策输出类别是什么。随机森林算法及在构建单一决策树的基础上的,同时是单一决策树算法的延伸和改进。

        在整个随机森林算法的过程中,有两个随机过程,第一个就是输入数据是随机整体的训练数据选取一部分作为一棵决策树的构建,而且是有放回的选取;第二个就是每棵决策树的构建所需的特征是从整体的特征集随机的选取的,这两个随机过程使得随机森林很大程度上避免了过拟合现象的出现。

随机森林算法具体的过程:

1、从训练数据中选取n个数据作为训练数据输入,一般情况下n是远小于整体的训练数据N的,这样就会造成有一部分数据是无法被去到的,这部分数据称为袋外数据,可以使用袋外数据做误差估计。

2、选取了输入的训练数据的之后,需要构建决策树,具体方法是每一个分裂结点从整体的特征集M中选取m个特征构建,一般情况下m远小于M

3、在构造每棵决策树的过程中,按照选取最小的基尼指数进行分裂节点的选取进行决策树的构建。决策树的其他结点都采取相同的分裂规则进行构建,直到该节点的所有训练样例都属于同一类或者达到树的最大深度。

4 重复第2步和第3步多次,每一次输入数据对应一颗决策树,这样就得到了随机森林,可以用来对预测数据进行决策。

5 输入的训练数据选择好了,多棵决策树也构建好了,对待预测数据进行预测,比如说输入一个待预测数据,然后多棵决策树同时进行决策,最后采用多数投票的方式进行类别的决策。

随机森林算法的注意点:

1 在构建决策树的过程中是不需要剪枝的。 
2
整个森林的树的数量和每棵树的特征需要人为进行设定。 
3
构建决策树的时候分裂节点的选择是依据最小基尼系数的。

随机森林有很多的优点

1. 在数据集上表现良好,两个随机性的引入,使得随机森林不容易陷入过拟合。

2. 在当前的很多数据集上,相对其他算法有着很大的优势,两个随机性的引入,使得随机森林具有很好的抗噪声能力。

3. 它能够处理很高维度(feature很多)的数据,并且不用做特征选择,对数据集的适应能力强:既能处理离散型数据,也能处理连续型数据,数据集无需规范化。

4. 在创建随机森林的时候,对generlization error使用的是无偏估计。

5. 训练速度快,可以得到变量重要性排序。

6 在训练过程中,能够检测到feature间的互相影响。

7 容易做成并行化方法。

8. 实现比较简单。

随机森林的缺点

1、在某些噪声比较大的样本集上,RF模型容易陷入过拟合。

2、取值划分比较多的特征,容易对RF的决策产生更大的影响,从而影响拟合的模型的效果;

 

你可能感兴趣的:(人工智能,分类算法,决策树)