集成学习算法总结----Boosting和Bagging

1、集成学习概述

1.1 集成学习概述

集成学习在机器学习算法中具有较高的准去率,不足之处就是模型的训练过程可能比较复杂,效率不是很高。目前接触较多的集成学习主要有2种:基于Boosting的和基于Bagging,前者的代表算法有Adaboost、GBDT、XGBOOST、后者的代表算法主要是随机森林。

1.2 集成学习的主要思想 
集成学习的主要思想是利用一定的手段学习出多个分类器,而且这多个分类器要求是弱分类器,然后将多个分类器进行组合公共预测。核心思想就是如何训练处多个弱分类器以及如何将这些弱分类器进行组合。

1.3、集成学习中弱分类器选择 
一般采用弱分类器的原因在于将误差进行均衡,因为一旦某个分类器太强了就会造成后面的结果受其影响太大,严重的会导致后面的分类器无法进行分类。常用的弱分类器可以采用误差率小于0.5的,比如说逻辑回归、SVM、神经网络。

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

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

2、Boosting算法

2.1 基本概念

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

2.2、Adaboost

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

Adaboost的算法流程: 
假设训练数据集为T={(X1,Y1),(X2,Y2),(X3,Y3),(X4,Y4),(X5,Y5)} 其中Yi={-1,1}

1、初始化训练数据的分布 
训练数据的权重分布为D={W11,W12,W13,W14,W15},其中W1i=1/N。即平均分配。

2、选择基本分类器 
这里选择最简单的线性分类器y=aX+b ,分类器选定之后,最小化分类误差可以求得参数。

3、计算分类器的系数和更新数据权重 
误差率也可以求出来为e1.同时可以求出这个分类器的系数。基本的Adaboost给出的系数计算公式为 
然后更新训练数据的权重分布, 
(图片来自李航的统计学习方法) 

4、分类器的组合

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

5、Adaboost的一些问题

Adaboost中涉及到一些可以进行调整的参数和计算公式的选择主要有以下几点:

**弱分类器如何选择 
**如何更好的实验误差率计算分类器的系数 
**如何更好的计算训练数据的权重的分布 
**弱分类器如何进行组合 
**迭代次数 
**损失函数的阈值选取多少

3、Bagging算法

bagging方法bootstrap aggregating的缩写,采用的是随机有放回的选择训练数据然后构造分类器,最后组合。这里以随机森林为例进行讲解。 
随机森林算法概述

随机森林算法是上世纪八十年代Breiman等人提出来的,其基本思想就是构造很多棵决策树,形成一个森林,然后用这些决策树共同决策输出类别是什么。随机森林算法及在构建单一决策树的基础上的,同时是单一决策树算法的延伸和改进。在整个随机森林算法的过程中,有两个随机过程,第一个就是输入数据是随机的从整体的训练数据中选取一部分作为一棵决策树的构建,而且是有放回的选取;第二个就是每棵决策树的构建所需的特征是从整体的特征集随机的选取的,这两个随机过程使得随机森林很大程度上避免了过拟合现象的出现。

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

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

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

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

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

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

随机森林算法图示

随机森林算法的注意点:

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

随机森林有很多的优点:

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

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

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

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

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

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

g 容易做成并行化方法。

h. 实现比较简单。

原文地址:https://www.cnblogs.com/peizhe123/p/8617517.html

时间: 2024-08-02 16:32:11

集成学习算法总结----Boosting和Bagging的相关文章

集成学习算法总结----Boosting和Bagging(转)

1.集成学习概述 1.1 集成学习概述 集成学习在机器学习算法中具有较高的准去率,不足之处就是模型的训练过程可能比较复杂,效率不是很高.目前接触较多的集成学习主要有2种:基于Boosting的和基于Bagging,前者的代表算法有Adaboost.GBDT.XGBOOST.后者的代表算法主要是随机森林. 1.2 集成学习的主要思想 集成学习的主要思想是利用一定的手段学习出多个分类器,而且这多个分类器要求是弱分类器,然后将多个分类器进行组合公共预测.核心思想就是如何训练处多个弱分类器以及如何将这些

集成学习记录(Boosting和Bagging)

集成学习: 集成学习在机器学习算法中具有较高的准去率,不足之处就是模型的训练过程可能比较复杂,效率不是很高. 目前接触较多的集成学习主要有2种:基于Boosting的和基于Bagging,前者的代表算法有Adaboost.GBDT.XGBOOST.后者的代表算法主要是随机森林. 集成学习主要思想: 集成学习的主要思想是利用一定的手段学习出多个分类器,而且这多个分类器要求是弱分类器,然后将多个分类器进行组合公共预测.核心思想就是如何训练处多个弱分类器以及如何将这些弱分类器进行组合. 弱分类器选择:

集成学习算法

集成学习算法 在统计学和机器学习中,集成方法使用多种学习算法来获得比单独从任何组成学习算法获得更好的预测性能.Ensemble methods(组合方法)的效果往往是最好的,当然需要消耗的训练时间也会拉长. 所谓Ensemble methods,就是把几种机器学习的算法组合到一起,或者把一种算法的不同参数组合到一起. 一 Blending and Bagging Motivation of Aggregation Uniform Blending Linear and Any Blending

Ensemble_learning 集成学习算法 stacking 算法

原文:https://herbertmj.wikispaces.com/stacking%E7%AE%97%E6%B3%95 stacked 产生方法是一种截然不同的组合多个模型的方法,它讲的是组合学习器的概念,但是使用的相对于bagging和boosting较少,它不像bagging和boosting,而是组合不同的模型,具体的过程如下:1.划分训练数据集为两个不相交的集合.2. 在第一个集合上训练多个学习器.3. 在第二个集合上测试这几个学习器4. 把第三步得到的预测结果作为输入,把正确的回

sklearn中调用集成学习算法

1.集成学习是指对于同一个基础数据集使用不同的机器学习算法进行训练,最后结合不同的算法给出的意见进行决策,这个方法兼顾了许多算法的"意见",比较全面,因此在机器学习领域也使用地非常广泛.生活中其实也普遍存在集成学习的方法,比如买东西找不同的人进行推荐,病情诊断进行多专家会诊等,考虑各方面的意见进行最终的综合的决策,这样得到的结果可能会更加的全面和准确.另外,sklearn中也提供了集成学习的接口voting classifier. sklearn中具体调用集成学习方法的具体代码如下:

集成学习之Boosting —— Gradient Boosting原理

集成学习之Boosting -- AdaBoost原理 集成学习之Boosting -- AdaBoost实现 集成学习之Boosting -- Gradient Boosting原理 集成学习之Boosting -- Gradient Boosting实现 上一篇介绍了AdaBoost算法,AdaBoost每一轮基学习器训练过后都会更新样本权重,再训练下一个学习器,最后将所有的基学习器加权组合.AdaBoost使用的是指数损失,这个损失函数的缺点是对于异常点非常敏感,(关于各种损失函数可见之前

机器学习算法总结(三)——集成学习(Adaboost、RandomForest)

1.集成学习概述 集成学习算法可以说是现在最火爆的机器学习算法,参加过Kaggle比赛的同学应该都领略过集成算法的强大.集成算法本身不是一个单独的机器学习算法,而是通过将基于其他的机器学习算法构建多个学习器并集成到一起.集成算法可以分为同质集成和异质集成,同质集成是值集成算法中的个体学习器都是同一类型的学习器,比如都是决策树:异质集成是集成算法中的个体学习器由不同类型的学习器组成的.(目前比较流行的集成算法都是同质算法,而且基本都是基于决策树或者神经网络的) 集成算法是由多个弱学习器组成的算法,

6. 集成学习(Ensemble Learning)算法比较

1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random Forest) 4. 集成学习(Ensemble Learning)Adaboost 5. 集成学习(Ensemble Learning)GBDT 6. 集成学习(Ensemble Learning)算法比较 1. AdaBoost Vs GBDT 相同 AdaBoost和GBDT都是重复选择一个

关于集成学习基础的简单描述

关于集成学习基础的简单描述 什么是集成学习? 集成建模是优化模型表现的一条重要途径.通常来说,将集成学习方法运用在你所构建的诸多模型之上是十分值得的,而同道中人们也一次又一次地证明着这一点.他们在诸如Kaggle之类的数据建模竞赛中往往会不约而同地采用集成学习,并且从中受益. 集成学习其实是一个很宽泛的概念,对于它的定义,可谓仁者见仁智者见智.接下来,本文将介绍一些集成建模的基本概念和思想,这些知识应该足以让你起步,从而去构建你自己的集成模型.同时,和往常一样,我们将尽量让它们看起来简单一些.