
Bagging算法流程如下从原始样本中使用Bootstraping方法有放回地随机抽取nnn个训练样本共进行kkk轮抽取得到kkk个训练集对于kkk个训练集分别训练出kkk个模型在对预测输出进行结合时分类简单投票法回归简单平均法RFRF在以决策树为基学习器构建Bagging集成的基础上进一步在决策树的训练过程中引入了随机特征选择。传统决策树在选择划分特征时是在当前结点的特征集合假设有ddd个特征中选择一个最优特征而在RF中对基决策树的每个结点先从该结点的特征集合中随机选择一个包含kkk个特征的子集然后再从这个子集中选择一个最优特征用于划分。kkk控制了随机性的引入程度kdkdkd基决策树的构建与传统决策树相同k1k1k1随机选择一个特征进行划分RF简单、容易实现、计算开销小但是性能却非常强大。结合策略对于输出值连续型最常用的结合策略是使用平均法平均法简单平均法H(x)1T∑i1Thi(x) H(x) \frac{1}{T} \sum_{i1}^T h_i(x)H(x)T1i1∑Thi(x)加权平均法H(x)∑i1Twihi(x),∑i1Twi1 H(x) \sum_{i1}^T w_i h_i(x), \quad \sum_{i1}^T w_i 1H(x)i1∑Twihi(x),i1∑Twi1wiw_iwi一般是从训练数据中学习而得。在个体学习器性能相差较大时使用加权平均法反之使用简单平均法。投票法对于分类任务来说假设有{c1,c2,…,cN}\{ c_1, c_2, \dots, c_N \}{c1,c2,…,cN}个类别。最常用的结合策略是使用投票法绝对多数投票法H(x){cj,if ∑i1Thij(x)0.5∑k1N∑i1Thik(x)reject,otherwise H(x) \begin{cases} c_j, if \ \sum_{i1}^T h_i^j(x) 0.5\sum_{k1}^N \sum_{i1}^T h_i^k(x)\\ reject, otherwise \end{cases}H(x){cj,reject,if∑i1Thij(x)0.5∑k1N∑i1Thik(x)otherwise即某类别得票过半数则预测为该类别否则拒绝预测。相对多数投票法H(x)cargmaxj∑i1Thij(x) H(x) c_{argmax_j} \sum_{i1}^T h_i^j(x)H(x)cargmaxji1∑Thij(x)即预测为得票最多的类别若同时有多个类别获得最高票则从中随机选择一个类别。加权投票法H(x)cargmaxj∑i1Twihij(x),∑i1Twi1 H(x) c_{argmax_j} \sum_{i1}^T w_i h_i^j(x), \quad \sum_{i1}^T w_i 1H(x)cargmaxji1∑Twihij(x),i1∑Twi1学习法当训练数据很多时一种更为强大的结合策略是使用”学习法“即通过另一个学习来结合典型代表就是Stacking。这里把个体学习器称为初级学习器用于结合的学习器称为次级学习器或元学习器。Stacking先从初始数据集训练出初级学习器然后”生成“一个新数据集用于训练次级学习器。在这个新数据集中初级学习器的输出被当作样例输入特征而初始样本的标记仍被当作样例标记。算法流程如下