集成方法或元算法是对其它算法进行组合的一种方式,根据是否使用基学习器分为同质和异质
优点:泛化错误率低,易编码,可以应用在大部分分类器上,无参数调整
1.从统计的方面来看,由于学习任务的假设空间往往很大,可能有多个假设在训练集上达到同等性能,此时若使用单学习器可能因为误选而导致泛化性能不佳,结合多个学习器会减少这一风险
2.从计算的方面看,学习算法往往会陷入局部极小,导致泛化性能糟糕,集成可降低陷入局部极小点的风险
3.从表示的方面看,某些学习任务的真实假设可能不在当前学习算法所考虑的假设空间内,此时使用单个学习器必定无效,而通过集成,扩大假设空间,有可能学得更好的解
缺点:对离群点敏感
适用数据类型:数值型和标称型数据
Bagging(bootstrap aggregating)自举汇聚法
从原始数据集中选择S次得到S个新数据集,每次使用随机放回抽样。
然后应用某个学习算法,得到S个分类器,与此同时,选择分类器投票结果最多的类别作为最后的分类结果(权重相等),对回归任务使用平均值
主要关注方差,因此它在不剪枝决策树,神经网络等易受样本扰动的学习器上效果更为明显
随机森林
以决策树为基学习器
每次在选择属性进行划分时,随机选择一个包含K个属性的子集,然后从中选择一个最优的属性。若K=D,则与传统的决策树相同,若K=1,则完全随机。
一般采用K=SQRT(D)或者LOG(D)
Boosting:
多个分类器的类型仍然一致,但不同的分类器串行训练,每个新分类器都根据已训练处的分类器的性能来进行训练,通过关注已有分类器错分的数据来获得新的分类器。
结果是基于所有分类器的加权求和,权重并不相等,对应分类器的成功度
Boosting 主要关注偏差
AdaBoost(adaptive boosting): 弱分类器(单层决策树)越简单效果越好,“弱”是指分类器的性能比随机猜测要略好.
步骤:
1.对训练数据中的每个样本赋予权重,这些权重构成向量D,并初始化成相等值
2.首先训练一个弱分类器并计算错误率
3.重新调整样本权重,上一轮迭代中分对的样本权重将会降低,分错的提高。
为了从所有弱分类器中得到最终的分类结果,分配分类器权重alpha,基于分类器错误率
a = 0.5*ln(1- ε/ε)
如果某个样本正确分类,Di(t+1) = Di(t)*e^-a/Sum(D)
如果某个样本错误分类,Di(t+1) = Di(t)*e^a/Sum(D)
弱分类器如果过多,容易导致过拟合,使用错误率上升
结合策略
1.平均法
简单平均,加权平均
在个体学习器性能相差较大时宜采用加权平均法
2.投票法
绝对多数投票法,相对多数投票法,加权投票法
3.学习法
通过另一个学习器来结合
个体学习器称为初级学习器,用于结合的学习器称为次级学习器
Stacking算法先从初始数据中训练出初级学习器,然后生成一个新数据集用于训练次级学习器,在这个新数据集中,初级学习器的输出被当做样例输入特征。
次级学习器的输入属性表示和次级学习算法对stacking集成的泛化性能有很大影响。
用多响应线性回归MLR的效果较好