【机器学习】AdaBoost

集成学习为什么要弱分类器,不用强学习器?

集成学习:构建多个分类器(弱分类器),用某种策略将多个结果集成起来,作为最终结果。

要求:每个弱分类器具备一定的“准确性”,分类器之间具备“差异性”。

上述基于理论依据,基于每个弱(基)分类器的误差相互独立,但是解决相同问题,此假设不可能做到。因此集成学习的关键是,使得弱分类器之间“好而不同。”

集成学习大致分两大类:1)基分类器之间强依赖,必须串行。Boosting   2)基分类器之间无强依赖,可并行。Bagging、随机森林(Random Forest)。

Boosting提升算法

AdaBoost是典型的Boosting算法,属于Boosting家族的一员。在说AdaBoost之前,先说说Boosting提升算法。Boosting算法是将“弱学习算法“提升为“强学习算法”的过程,主要思想是“三个臭皮匠顶个诸葛亮”。一般来说,找到弱学习算法要相对容易一些,然后通过反复学习得到一系列弱分类器,组合这些弱分类器得到一个强分类器。Boosting算法要涉及到两个部分,加法模型前向分步算法。加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下:

【机器学习】AdaBoost_第1张图片

由于采用的损失函数不同,Boosting算法也因此有了不同的类型,AdaBoost就是损失函数为指数损失的Boosting算法。


对于提升方法,有两个问题需要回答:

  • 每一轮如何改变训练数据的权值或概率分布?
  • 如何将弱分类器组合成一个强分类器?

AdaBoost的做法:

  • 提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。
  • 加权多数表决的方法,加大分类误差率小的弱分类器的权值,使其在表决中起较大作用,减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。

不改变所给的训练数据,而不断改变训练数据权值的分布,使得训练数据在基本分类器的学习中起不同的作用,这就是AdaBoost的一个特点。

AdaBoost算法的步骤为:更新训练数据权值->在此权值上训练弱分类器(策略为最小化分类误差率)->计算分类误差率(误分类样本的权值之和)->计算分类器系数(要用到上一步的分类误差率)->更新训练权值->构建基本分类器的线性组合,一直循环,直到基本分类器的线性组合没有误分类点。

 Adaboost算法优缺点

优点 
(1)Adaboost提供一种框架,在框架内可以使用各种方法构建子分类器。可以使用简单的弱分类器,不用对特征进行筛选,也不存在过拟合的现象。 
(2)Adaboost算法不需要弱分类器的先验知识,最后得到的强分类器的分类精度依赖于所有弱分类器。无论是应用于人造数据还是真实数据,Adaboost都能显著的提高学习精度。 
(3)Adaboost算法不需要预先知道弱分类器的错误率上限,且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,可以深挖分类器的能力。Adaboost可以根据弱分类器的反馈,自适应地调整假定的错误率,执行的效率高。 
(4)Adaboost可以在不改变训练数据,只改变数据权值分布,使得数据在不同学习器中产生不同作用,类似于重采样。 
缺点 
在Adaboost训练过程中,Adaboost会使得难于分类样本的权值呈指数增长,训练将会过于偏向这类困难的样本,导致Adaboost算法易受噪声干扰。此外,Adaboost依赖于弱分类器,而弱分类器的训练时间往往很长。

AdaBoost

原理理解

基于Boosting的理解,对于AdaBoost,我们要搞清楚两点:

对于第一个问题,AdaBoost改变了训练数据的权值,也就是样本的概率分布,其思想是将关注点放在被错误分类的样本上,减小上一轮被正确分类的样本权值,提高那些被错误分类的样本权值。然后,再根据所采用的一些基本机器学习算法进行学习,比如逻辑回归。

对于第二个问题,AdaBoost采用加权多数表决的方法,加大分类误差率小的弱分类器的权重,减小分类误差率大的弱分类器的权重。这个很好理解,正确率高分得好的弱分类器在强分类器中当然应该有较大的发言权。

算法流程

总结一下,得到AdaBoost的算法流程:

【机器学习】AdaBoost_第2张图片

公式推导

【机器学习】AdaBoost_第3张图片

【机器学习】AdaBoost_第4张图片


随机森林

“随机”是干啥的?随机森林的随机有两层意思。

  • 训练样本选取随机。虽然每一棵树的训练样本个数都是样本总数N,但是每一个样本的随机选取都是有放回的选取。这样,每一颗树的训练样本几乎都不相同。
  • 特征选取随机。假设训练数据有M个特征,随机森林的每一颗树只选取m(m< M)个特征用于构建决策树。每一颗树选取的特征可能都不完全相同。

强调:随机森林不进行剪枝。决策树剪枝是因为防止过拟合,而随机森林的“随机”已经防止了过拟合,因此不需要剪枝。可以这样比喻随机森林算法:每一棵决策树就是一个精通于某一个窄领域的专家(因为我们从M个feature中选择m让每一棵决策树进行学习),这样在随机森林中就有了很多个精通不同领域的专家,对一个新的问题(新的输入数 据),可以用不同的角度去看待它,最终由各个专家,投票得到结果。

补充:随机森林有2个参数需要人为控制,一个是森林中树的数量,一般建议取很大。另一个是m的大小,推荐m的值为M的均方根。

最后说一下随机森林的优缺点:

  • 不用做特征选择
  • 在训练完后,它能够给出哪些feature比较重要

参考:

AdaBoost原理详解

机器学习算法二:详解Boosting系列算法一Adaboost

经典算法总结之AdaBoost与随机森林

你可能感兴趣的:(机器学习)