1. 什么是Adaboost?
AdaBoost算法是基于Boosting思想的机器学习算法,其中AdaBoost是Adaptive Boosting的缩写,AdaBoost是一种迭代型的算法,其核心思想是针对同一个训练集训练不同的学习算法,即弱学习算法,然后将这些弱学习算法集合起来,构造一个更强的最终学习算法。AdaBoost算法示意图1:
假设有
n
个样本,为了构造出一个强的学习算法,首先需要选定一个弱学习算法,并利用同一个训练集不断训练弱学习算法,以提升弱学习算法的性能。在AdaBoost算法中,有两个权重,第一个数训练集中每个样本有一个权重,称为样本权重,用向量
其中, Nerror 表示被错误分类的样本的数目, Nall 表示所有样本的数目。因此,弱学习算法 h1 的权重 α1 可以通过 ε 求得:
在第一次学习完成后,需要重新调整样本的权重,以使得在第一分类中被错分的样本的权重,使得在接下来的学习中可以重点对其进行学习,所以需要更新训练的权值分布:
其中,
αm
表示第
m
训练器的权重值,
之后,使用更新后的权重值进行下一轮学习,直到
M
轮结束,得到
2. Adaboost算法
Adaboost基本的算法流程为3:
AdaBoost算法是一种具有很高精度的分类器,其实AdaBoost算法提供的是一种框架,在这种框架下,我们可以使用不同的弱分类器,通过AdaBoost框架构建出强分类器。
- Machine Learning in Action. Peter Harrington ↩
- http://blog.csdn.net/google19890102/article/details/46376603 ↩
- A short introduction to boosting ↩