首页 > Python基础教程 >
-
集成学习之AdaBoost算法
1. 回顾Boosting提升算法
AdaBoost是典型的Boosting算法,属于Boosting家族的一员。在说AdaBoost之前,先说说Boosting提升算法。Boosting算法是将“弱学习算法“提升为“强学习算法”的过程,主要思想是“三个臭皮匠顶个诸葛亮”。一般来说,找到弱学习算法要相对容易一些,然后通过反复学习得到一系列弱分类器,组合这些弱分类器得到一个强分类器。Boosting算法要涉及到两个部分,加法模型和前向分步算法。
模型为加法模型就是我们最终的强分类器是若干个弱分类器加权平均而得到的(弱分类器线性相加而成)。
前向分步就是我们在训练的过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。我们的算法是通过一轮轮的弱学习器学习,利用前一个强学习器的结果和当前弱学习器来更新当前的强学习器的模型。也就是说
第k-1轮的强学习器为:
而第k轮的强学习器为:
上两式一比较可以得到:
可见强学习器的确是通过前向分步学习算法一步步而得到的。
2. 集成学习之AdaBoost算法
Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。这里的集合起来的策略是通过提高前一轮分类器分类错误的样本的权值,降低分类分类正确的样本权值,对于那些没有本分类正确的样本会得到后面分类器更多的关注。然后可以产生很多的弱分类器,通过多数加权投票组合这些弱分类器,加大误差率小的分类器,减少误差率大的分类器,使其在表决中起到较少的作用。
只要是boosting算法,都要解决以下这4个问题:(结合Adaboost算法原理理解怎么解决)
1)如何计算学习误差率e?
2)如何得到弱学习器权重系数α
3)如何更新样本权重D?
4) 使用何种结合策略?