集成学习是指将多个学习器进行集成来完成学习任务,若集成中只包含同类型的学习器称为同质集成,同质集成对应的学习器称为基学习器;若集成使用的学习器不同类型称为异质集成,异质集成对应的个体学习器称为组件学习器。
BoostingBoosting是提高单个学习器学习能力的一种方法,其原理是,首先基于训练样本得到一个学习器,然后根据当前学习器的表现对训练样本的分布比例或者训练样本自身的权重进行调整,使得当前学习器中学习错误的样本得到更多关注,基于调整后的样本得到一个新的学习器,直到学习器的数量达到预先设定的值( T T T),最后将所有学习器进行加权结合,表达式如下,其中 α t \alpha_t αt为第t次训练得到的学习器对应的权重, h t h_t ht为第t次得到的学习器。
H ( x ) = ∑ t = 1 T α t h t ( x ) H(x)=\sum_{t=1}^{T}\alpha_th_t(x) H(x)=∑t=1Tαtht(x)
BaggingBagging是一种通过放回采样的方法得到不同的训练样本,使用不同训练样本对学习器进行训练,经过多次( T T T次)采样训练,最后对得到的不同学习器进行集成。具体的集成方法可以比较简单,对分类问题可以使用简单投票法,即少数服从多数的原则来选择所有分类器中分类最多的结果,对回归问题可以使用简单平均法,即对所有分类器的计算结果求均值。
随机森林随机森林是在Bagging的基础上,随机选择训练样本的属性,它是基于Bagging做的一种改进的方法,Bagging只是通过随机选择样本来增加学习器的多样性,而随机森林中学习器的多样性不止来自训练样本的扰动,还有来自属性的扰动。通常来讲,随机森林在学习器数量增加时的泛化能力和收敛速度好于Bagging,但学习器数量较少时其波动也较大,即随机森林的起始性能相对较差,但学习潜力较大。
结合策略平均法
由于训练样本不充分或存在噪声,所以加权平均法的权重有时候并不一定更好,通常来讲,如果单个学习器的性能相差较大时使用加权平均法,而相互接近时使用简单平均法。
简单平均分:
H ( x ) = 1 T ∑ i = 1 T h i ( x ) H(x) = \frac{1}{T}\sum_{i=1}^{T}h_i(x) H(x)=T1∑i=1Thi(x)
加权平均法:
H ( x ) = 1 T ∑ i = 1 T w i h i ( x ) H(x) = \frac{1}{T}\sum_{i=1}^{T}w_ih_i(x) H(x)=T1∑i=1Twihi(x)
其中 w i w_i wi是单个学习器 h i h_i hi的权重,通常要求 w i ≥ 0 , ∑ i = 1 T w i = 1 w_i\ge0,\sum_{i=1}^{T}w_i=1 wi≥0,∑i=1Twi=1
投票法
绝对多数
仅选择票数过半的那个学习器的结果。
相对多数
选择票数最多的结果,如果得到多个相同数量的结果,则随机选择其中一个。
H ( x ) = c a r g m a x j ∑ i = 1 T h i j ( x ) H(x) = c_{argmax_j}\sum_{i=1}^{T}h_i^j(x) H(x)=cargmaxj∑i=1Thij(x)
加权投票
基于相对多数投票法增加学习器对应的权重,跟加权平均类似,其中 w i w_i wi是单个学习器 h i h_i hi的权重,通常要求 w i ≥ 0 , ∑ i = 1 T w i = 1 w_i\ge0,\sum_{i=1}^{T}w_i=1 wi≥0,∑i=1Twi=1。
H ( x ) = c a r g m a x j ∑ i = 1 T w i h i j ( x ) H(x) = c_{argmax_j}\sum_{i=1}^{T}w_ih_i^j(x) H(x)=cargmaxj∑i=1Twihij(x)
学习法
前面说的平均和投票,可以理解为一种简单的学习器,如果学习器的结果比较复杂或者学习器输出类型不一致时,也可以通过一个新的不同类型的学习器的来进行结合,即将学习器本身作为要学习和分类的测试样本,通常使用交叉验证法或留一法,留一法是指使用学习器没有使用的测试样本进行测试,交叉验证发是指将测试样本随机分为数量相当的几类,然后分别使用各学习器进行测试验证,最终得到一个新的学习器。
多样性在集成学习的模型中,单个学习器的准确性越高,多样性越大,其集成后的准确性越高。
多样性度量
可以通过对各学习器的分类或回归结果,进行不同的计算规则来表示学习器之间的多样性,常用多样性的度量方式有:
- 不和度量
- 相关度量
- Q-统计度量
- k-统计度量
多样性增强
除了可以衡量学习器的多样性,也有一些方法可以增加学习器的多样性,核心原理是为学习器的学习过程增加扰动,或者说人为增加偏差量,常见增加扰动的地方有:
- 数据样本扰动
- 输入属性扰动
- 输出表示扰动
- 算法参数扰动