Boosting
Boosting , short for Adaptive Boosting, is a machine learning ensemble meta-algorithm for primarily reducing bias, and also variance in supervised learning, and a family of machine learning algorithms that convert weak learners to strong ones.
AdaBoost算法
在算法初始化阶段,为每一个样本赋予一个相等的权重,同等概率分布(样本数的倒数),即每个样本在开始都是一样重要的。接下来,每一次训练后得到的模型,对数据点的估计会有所差异,所以在每一步结束后,我们需要对权重进行处理,而处理的方式就是通过增加错分类的样本点的权重,同时减少分类正确的样本点的权重。这样能够确保,如果某些点经常被分错,那么就会被“严重关注”,也就会被赋予一个很高的权重。然后等进行了N次迭代(迭代次数由用户指定),将会得到N个简单的弱学习器,最后将它们组合起来,可以对它们进行加权(错误率越大的弱学习器其权重值越小,错误率越小的弱分类器权重值越大)或者让它们进行投票等得到一个最终的模型,即带权加法模型。
AdaBoost缺点
-
AdaBoost对噪声和离群点敏感
-
可扩展性方面,由于提升的时序性,不能进行并行处理。
算法原理
-
初始权重,均匀分布:
$$D_i=(w_{11}, ... ,w_{1i}, ... ,w_{1N}), w_{1i}=\frac{1}{N}$$ -
m=1,2,…,M迭代:
2.1 由带权数据集学习弱分类器:
$$G_m(x)$$
2.2 弱分类器\(G_m(x)\)在加权数据集上的分类误差:是被\(G_m(x)\)误分类样本的权重之和。
$$e_m=\sum_{i=1}^N w_{mi}I(G_m(x_i) \neq y_i)=\sum_{G_m \neq y_i}w_{mi}$$
2.3 The weight of weak learners:
$$\alpha_m=\frac{1}{2}\log\frac{1-e_m}{e_m}$$
2.4 Re-Weighting:
$$w_{m+1,i}=\frac{w_{mi}}{Z_m}exp(-\alpha_my_iG_m(x_i)),$$$$Z_m=\sum_{i=1}^Nw_{mi}exp(-\alpha_my_iG_m(x_i))$$ -
弱分类器的线性组合:
$$f(x)=\sum_{m=1}^M\alpha_mG_m(x)$$
Strong learner:
$$G(x)=sign(f(x))$$
AdaBoost重点
- AdaBoost怎样实现更加关注误分类的数据?
通过给数据样本增加权重Weighted data,分错的数据在下一轮学习中提高权重,反之减小权重。“re-weighting”
- 为什么通过调高误分类数据的权重可以使下一轮的弱分类器更加关注?(数据权重的思想)
选择决策点与带权分类误差
弱分类器的分类误差由误分类权重累加,当寻找最佳划分点时,总是寻找误差最小的,则权重高的数据会尽可能分对,才能使误差尽可能的小,由此实现更加关注误分类的点。
数据权重主要用于弱分类器寻找其分类误差最小的决策点
-
数据权重和弱分类器权重
-
AdaBoost主要为减少偏差
-
Adaboost使用的是自适应的方法,其中概率分布式变化的,关注的是难分类的样本。
引用
PPT - A Gentle Introduction to Gradient Boosting
Scikit-learn - GRADIENT BOOSTING