集成学习算法总结

集成学习算法是指使用多个分类器提高整体的泛化能力

1.Bagging(Bootstrap Aggregating)算法

通过组合随机生成的训练集而改进分类的集成算法(bootstrap)

使用训练集中的某个子集作为当前训练集(有放回随机抽样);经过T次训练后,得到T个不同的分类器

调用这T个分类器,把这T个分类结果中出现次数多的类赋予测试样例

有效减少噪声影响

2.Boosting算法

初始化样本权重,生成一个弱分类器;

利用弱分类器增加分类错误的样本的权重;

不断重复,生成T个弱分类器;

对噪声敏感

改进算法-AdaBoosting算法

  • 对每一次的训练数据样本赋予一个权重,并且每一次样本的权重分布依赖上一次的分类结果
  • 基分类器之间采用序列的线性加权方式来组合

3.Gradient Boosting

1,初始化

f0(x)=argminγi=1NL(yi,γ)f_0(x)=\arg\min_\gamma\sum_{i=1}^NL(y_i,\gamma)

2.1计算负梯度

y~i=L(yi,fm1(xi))fm1(xi),i=1,2,N\widetilde y_i = -\frac{\partial L(y_i,f_{m-1}(x_i))}{\partial f_{m-1}(x_i)}, i=1,2,\cdots N

2.2用基学习器hm(x)h_m(x) 拟合y~i\widetilde y_i

wm=argminwi=1N[y~ihm(xi;w)]2w_m=\mathop{\arg\min}\limits_w\sum_{i=1}^N[\widetilde y_i-h_m(x_i;w)]^2

2.3确定步长ρm\rho_m

ρm=argminρi=1NL(yi,fm1(xi)+ρhm(xi;wm))\rho_m = \mathop{\arg\min}\limits_{\rho} \sum\limits_{i=1}^{N} L(y_i,f_{m-1}(x_i) + \rho h_m(x_i\,;\,w_m))

2.4更新fm(x)f_m(x) 最终得到fM(x)f_M(x)

fm(x)=fm1(x)+ρmhm(x;wm)f_m(x) = f_{m-1}(x) + \rho_m h_m(x\,;\,w_m)

Bagging + 决策树 = 随机森林

AdaBoost + 决策树 = 提升树

Gradient Boosting + 决策树 = GBDT