集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务。多分类器系统,基于委员会的学习。
如何产生“好而不同”的个体学习器,是集成学习研究的核心。
“好”——个体学习器要有一定的准确率。
“不同”——学习器之间存在差异,即对同一数据有不同预测结果。
P ( H ( x ) ≠ f ( x ) ) = ∑ k = 0 ⌊ T / 2 ⌋ ( T k ) ( 1 − ϵ ) k ϵ T − k ⩽ exp ( − 1 2 T ( 1 − 2 ϵ ) 2 ) \begin{aligned} P(H(\boldsymbol{x}) \neq f(\boldsymbol{x})) &=\sum_{k=0}^{\lfloor T / 2\rfloor}\left(\begin{array}{l}{T} \\ {k}\end{array}\right)(1-\epsilon)^{k} \epsilon^{T-k} \\ & \leqslant \exp \left(-\frac{1}{2} T(1-2 \epsilon)^{2}\right) \end{aligned} P(H(x)̸=f(x))=k=0∑⌊T/2⌋(Tk)(1−ϵ)kϵT−k⩽exp(−21T(1−2ϵ)2)
随着集成中个体分类器T的增加,集成的错误率呈指数级下降,最终趋于零。
上述的关键假设:基学习器的误差是相互独立的。但是在现实任务中,个体学习器是通过解决同一个问题训练出来的,显然不相互独立。
个体分类器的准确性和多样性是相互冲突的,当增加多样性会提高准确性,但当多样性增加到一定程度时,准确性会下降。
集成学习的思路是通过合并多个模型来提升机器学习性能,这种方法相较于单个模型通常能够获得更好的预测结果。
一般来说集成学习可以分为三大类:
集成学习方法也可以归为如下两大类:
串行集成方法,这种方法串行地生成基础模型(如AdaBoost)。串行集成的基本动机是利用基础模型之间的依赖。通过给错分样本一个较大的权重来提升性能。
并行集成方法,这种方法并行地生成基础模型(如Random Forest)。并行集成的基本动机是利用基础模型的独立性,因为通过平均能够较大地降低误差。
大部分集成模型都通过一个基础学习算法来生成一个同质的基础学习器,即同类型的学习器,也叫同质集成。
有同质集成就有异质集成,为了集成后的结果表现最好,异质基础学习器需要尽可能准确并且差异性够大。
Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器进行加权结合,得到最终的强学习器。
Boosting系列算法里最著名算法主要有AdaBoost算法和提升树(boosting tree)系列算法。AdaBoost算法过程如下:
输入: 训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } D=\left\{\left(\boldsymbol{x}_{1}, y_{1}\right),\left(\boldsymbol{x}_{2}, y_{2}\right), \ldots,\left(\boldsymbol{x}_{m}, y_{m}\right)\right\} D={(x1,y1),(x2,y2),…,(xm,ym)}
基学习算法 L \mathcal{L} L;
训练轮数T.
过程:
输出: H ( x ) = sign ( ∑ t = 1 T α t h t ( x ) ) H(\boldsymbol{x})=\operatorname{sign}\left(\sum_{t=1}^{T} \alpha_{t} h_{t}(\boldsymbol{x})\right) H(x)=sign(∑t=1Tαtht(x))
Bagging是引导聚合的意思。减少一个估计方差的一种方式就是对多个估计进行平均。例如,我们可以用训练集的不同子集(随机选择并替代训练集)训练M个不同的树然后计算最后的结果:
Bagging使用装袋采样来获取数据子集训练基础学习器。通常分类任务使用投票的方式集成,而回归任务通过平均的方式集成。
1)从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping(有放回)的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(我们这里假设k个训练集之间是相互独立的,事实上不是完全独立)
2)每次使用一个训练集得到一个模型,k个训练集共得到k个模型。但是是同种模型。(注:,k个训练集虽然有重合不完全独立,训练出来的模型因为是同种模型也是不完全独立。这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
3)对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)
对于Bagging需要注意的是,每次训练集可以取全部的特征进行训练,也可以随机选取部分特征训练,例如随机森林就是每次随机选取部分特征
公式参考: [https://blog.csdn.net/weixin_41725746/article/details/90483885#3_457]
[https://blog.csdn.net/icefire_tyh/article/details/52065224]
参考文献:
[1] [统计学习-李航]
[2] [机器学习西瓜书-周志华]
[3] [https://blog.csdn.net/bitcarmanlee/article/details/78819025]