本文从监督学习的角度来展开,主要包含bagging,boosting,随机森林(后面补)。
一、Bagging
Bagging的方法主要针对那些很复杂容易overfitting的分类器。
这种方法又称为boostrap aggregating(自举汇聚法)。是一种基于数据随机重采样的分类器构建方法。也就是说假设我们有一个原始数据集S,我们对其进行多次随机采样,得到S个新的与原始数据集大小相同的数据集。比如原始数据集为S={a,b,c,d},我们进行随机多次采样得到S1={a,a,c,d},S2={a,a,d,d},S3={c,c,b,d}S4={a,c,b,b}。也就是说在这个过程中有些数据会被重复采样。在准备好数据之后,我们使用每一个数据集训练一个分类器,则一种得到S个分类器。当我们需要对新数据进行分类的时候,我们则对这S个分类器的结果进行majority vote(也就是多数选举的策略)得到最终的结果。
二、Boosting
Boost的意思是增强的意思,也就是把一个本来很弱的分类器(容易underfitting)不断提升变成一个很强的分类器。这个方法中有一个很典型的算法就是Adaboost.
Adaboost算法描述:
算法思路是先获得第一个分类器f1(x)f_1(x)f1(x),然后再获得第一个f2(x)f_2(x)f2(x)来帮助f1(x)f_1(x)f1(x),f1(x)f_1(x)f1(x)和f2(x)f_2(x)f2(x)不可以很相似,二者应该是相互补充的关系。然后以此类推,再获取f3(x)f_3(x)f3(x),f4(x)f_4(x)f4(x)…。最后将所有分类器结合起来作为最终分类器。
算法说明:假设一共有M个分类器
step1:初始化训练数据的权重分布:我们首先假设等概率分布。所以
D1=(w11,w12,...,w1N)D_1=(w_{11},w_{12},...,w_{1N})D1=(w11,w12,...,w1N) 其中 w1i=1/Nw_1i=1/Nw1i=1/N
step2:使用权重分布为D1D_1D1的数据集训练分类器m:
误差为:
权重更新参数为:
权重更新公式为:
这里我们对分类器进行解释:boost的核心在于re-weight training data,也就是更新参数。首先我们建立了f1(x)f_1(x)f1(x),使用f1(x)f_1(x)f1