作者:JSong,日期:2017.10.10
简书一直不肯支持数学公式,没办法,只能截图啦。原文请移步博客园
集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务,常可获得比单一学习器显著优越的泛化性能,这对“弱学习器”尤为明显。
目前,有三种常见的集成学习框架:bagging,boosting和stacking。第一种是并行的,各个基学习器之间不存在强依赖关系,代表是随机森林算法。后两者是串行的,基学习器之间存在强依赖关系,必须串行生成。具体可参见我的文章 机器学习|集成学习。
1、前向分步算法(forward stagewise algorithm)
算法(前向分步算法):
2、AdaBoost算法
前向分布算法是一种算法的框架,接下来我们对于二分类问题构造一个具体的boosting算法。
注:此时的 $e_{m}$ 与 $\gamma_{m}$ 的极小化函数完全等价,又注意到 $w_{mi}$ 和为1,所以不妨把 $\gamma_{m}$ 的极小化函数修改为 $e_m$, 这个意义下 $e_m$ 即是基函数的分类误差率。
注意到,这个时候事实上并不需要参数 $\gamma$ 的显示存在,其隐形的存在于每个基函数的训练时使用的损失函数中,更进一步,其代表了每个样本的权重。通俗点讲,算法在串行迭代过程中,那些分类不准确的样本点在下一步的基分类模型中是会被重点照顾。
最后我们把上述过程整理成Adaboost算法
算法(Adaboost算法):
3、Gradient Boosting
一条不一样的路,待续