集成学习算法(1)

集成学习简介
  在讲boosting和bagging算法之前,首先需要了解一下集成学习的概念。集成学习是指将若干弱分类器组合之后产生一个强分类器。弱分类器(weak learner)指那些分类准确率只稍好于随机猜测的分类器(error rate < 50%)。如今集成学习有两个流派,一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合,随机森林算法就属于bagging派系;另一个是boosting派系,它的特点是各个弱学习器之间有依赖关系,Adaboost算法就属于boosting派系。在实现集成学习算法时,很重要的一个核心就是如何实现数据的多样性,从而实现弱分类器的多样性。集成学习的思想如下图所示:

这里写图片描述

集成学习有如下的特点:
  (1)将多个分类方法聚集在一起,以提高分类的准确率(这些算法可以是不同的算法,也可以是相同的算法。);
  (2)集成学习法由训练数据构建一组基分类器,然后通过对每个基分类器的预测进行投票来进行分类;
  (3)严格来说,集成学习并不算是一种分类器,而是一种分类器结合的方法;
  (4)通常一个集成分类器的分类性能会好于单个分类器;
  (5)如果把单个分类器比作一个决策者的话,集成学习的方法就相当于多个决策者共同进行一项决策。
二、bagging算法
2.1、bagging算法思想
  bagging是bootstrap aggregating的缩写。该算法的思想是让学习算法训练多轮,每轮的训练集由从初始的训练集中随机取出的n个训练样本组成,某个初始训练样本在某轮训练集中可以出现多次或根本不出现(即所谓的有放回抽样),训练之后可得到一个预测函数序列h_1,⋯ ⋯h_n ,最终的预测函数H对分类问题采用投票方式,对回归问题采用简单平均方法对新示例进行判别。上面的算法思想可通过下图来进行理解:

这里写图片描述

算法的基本流程为:
  输入为样本集D={(x,y1),(x2,y2),…(xm,ym)}D={(x,y1),(x2,y2),…(xm,ym)},弱学习器算法, 弱分类器迭代次数T。
  输出为最终的强分类器f(x)f(x)
  (1)对于t=1,2…,T:(a)对训练集进行第t次随机采样,共采集m次,得到包含m个样本的采样集Dm;(b)用采样集DmDm训练第m个弱学习器Gm(x);
  (2) 如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
2.2、bagging算法案例
  为了更好理解bagging的概念,提供下面一个例子。
X 表示一维属性,Y 表示类标号(1或-1)测试条件:当x<=k时,y=?;当x>k时,y=?;k为最佳分裂点
  下表为属性x对应的唯一正确的y类别。

这里写图片描述

  现在进行5轮随机抽样,结果如下:

这里写图片描述

  每一轮随机抽样后,都生成一个分类器。然后再将五轮分类融合。

这里写图片描述

  对比符号和实际类,我们可以发现:在该例子中,Bagging使得准确率可达90%。由此,总结一下bagging方法:
  (1) Bagging通过降低基分类器的方差,改善了泛化误差;
  (2)其性能依赖于基分类器的稳定性;如果基分类器不稳定,bagging有助于降低训练数据的随机波动导致的误差;如果稳定,则集成分类器的误差主要由基分类器的偏倚引起;
  (3)由于每个样本被选中的概率相同,因此bagging并不侧重于训练数据集中的任何特定实例。

三、boosting算法
3.1、boosting算法的基本思想
  boosting算法是Adaptive boosting的缩写,是一种迭代算法。每轮迭代中会在训练集上产生一个新的分类器,然后使用该分类器对所有样本进行分类,以评估每个样本的重要性(informative)。
  具体来说,算法会为每个训练样本赋予一个权值。每次用训练完的新分类器标注各个样本,若某个样本点已被分类正确,则将其权值降低,并以该权重进行下一次数据的抽样(抽中的概率减小);若样本点未被正确分类,则提高其权值,并以该权重进行下一次数据的抽样(抽中的概率增大)。权值越高的样本在下一次训练中所占的比重越大,也就是说越难区分的样本在训练过程中会变得越来越重要。 整个迭代过程直到错误率足够小或达到一定次数才停止。

这里写图片描述

3.2、boosting算法的案例
  以下图为例,来说明boosting算法的核心思想:

这里写图片描述

  由图可以发现,boosting算法在迭代的过程中不断加强识别错误样本的学习比重,从而实现最终的强化学习。

四、Bagging和Boosting算法的区别
  (1) bagging的训练集是随机的,各训练集是独立的;而boosting训练集的选择不是独立的,每一次选择的训练集都依赖于上一次学习的结果;
  (2) bagging的每个预测函数都没有权重;而boosting根据每一次训练的训练误差得到该次预测函数的权重;
  (3) bagging的各个预测函数可以并行生成;而boosting只能顺序生成。(对于神经网络这样极为耗时的学习方法,bagging可通过并行训练节省大量时间开销)。

--------------------- 本文来自 Chenyukuai6625 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/chenyukuai6625/article/details/73692347?utm_source=copy

猜你喜欢

转载自blog.csdn.net/u011304078/article/details/82893047