本文主要是介绍Bagging RF,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Bagging
算法流程如下:
- 从原始样本中使用Bootstraping方法有放回地随机抽取 n n n 个训练样本,共进行 k k k 轮抽取,得到 k k k 个训练集;
- 对于 k k k 个训练集,分别训练出 k k k 个模型;
- 在对预测输出进行结合时:
- 分类:简单投票法
- 回归:简单平均法
RF
RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。
传统决策树在选择划分属性时是在当前结点的属性集合(假设有 d d d 个属性)中选择一个最优属性;而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含 k k k 个属性的子集,然后再从这个子集中选择一个最优属性用于划分。 k k k 控制了随机性的引入程度:
- k = d k=d k=d :基决策树的构建与传统决策树相同;
- k = 1 k=1 k=1 :随机选择一个属性进行划分;
RF简单、容易实现、计算开销小,但是性能却非常强大。
结合策略
对于输出值连续型,最常用的结合策略是使用平均法:
平均法
- 简单平均法:
H ( x ) = 1 T ∑ i = 1 T h i ( x ) H(x) = \frac{1}{T} \sum_{i=1}^T h_i(x) H(x)=T1i=1∑Thi(x)
- 加权平均法:
H ( x ) = ∑ i = 1 T w i h i ( x ) , ∑ i = 1 T w i = 1 H(x) = \sum_{i=1}^T w_i h_i(x), \quad \sum_{i=1}^T w_i = 1 H(x)=i=1∑Twihi(x),i=1∑Twi=1
w i w_i wi 一般是从训练数据中学习而得。
在个体学习器性能相差较大时使用加权平均法,反之使用简单平均法。
投票法
对于分类任务来说,假设有 { c 1 , c 2 , … , c N } \{ c_1, c_2, \dots, c_N \} {c1,c2,…,cN} 个类别。最常用的结合策略是使用投票法:
- 绝对多数投票法:
H ( x ) = { c j , i f ∑ i = 1 T h i j ( x ) > 0.5 ∑ k = 1 N ∑ i = 1 T h i k ( x ) ; r e j e c t , o t h e r w i s e H(x) = \begin{cases} c_j,& if \ \sum_{i=1}^T h_i^j(x) > 0.5\sum_{k=1}^N \sum_{i=1}^T h_i^k(x);\\ reject, & otherwise \end{cases} H(x)={cj,reject,if ∑i=1Thij(x)>0.5∑k=1N∑i=1Thik(x);otherwise
即某类别得票过半数,则预测为该类别;否则拒绝预测。
- 相对多数投票法:
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)=cargmaxji=1∑Thij(x)
即预测为得票最多的类别,若同时有多个类别获得最高票,则从中随机选择一个类别。
- 加权投票法:
H ( x ) = c a r g m a x j ∑ i = 1 T w i h i j ( x ) , ∑ i = 1 T w i = 1 H(x) = c_{argmax_j} \sum_{i=1}^T w_i h_i^j(x), \quad \sum_{i=1}^T w_i = 1 H(x)=cargmaxji=1∑Twihij(x),i=1∑Twi=1
学习法
当训练数据很多时,一种更为强大的结合策略是使用”学习法“,即通过另一个学习来结合,典型代表就是Stacking。这里把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器。
Stacking先从初始数据集训练出初级学习器,然后”生成“一个新数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。算法流程如下:
这篇关于Bagging RF的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!