随机森林

  • 引入

Bagging算法中,通过bootstrapping得到不一样的数据,通过这些数据送到一个基本算法之后,得到不同的g,最后对这些g取平均得到G;决策树算法中,通过递归方式建立子树,最终得到一棵完整的树。
这两种算法都有其鲜明的特点,决策树对于不同的数据相对会敏感一些,即其算法的variance很大,而Bagging的特点是通过投票和平均的方式来降低variance的效果。如果将这两种方法结合起来,就是该文要介绍的随机森林,random forest。
1. 随机森林算法
这里写图片描述
随机森立算法中的“随机”一词是指通过Bagging中的bootstrapping得到不同的数据,进而体现出来的随机性,而得到这笔数据用来送进CART算法训练得到一棵树,最后将所得的树做平均得到最终结果。
并行计算的可能性:随机森林算法从Bagging过程中可以分配到不同的计算机中进行计算,每台计算机可以独立学习一棵树,不同的树之间没有任何依赖关系。这使得Bagging过程很容易实现并行化。
2. 特征投影(Feature Projection)
在Bagging算法中,通过bootstrap在原来的数据中进行抽样,来得到不同的数据集,从而产生不同的g。
在随机森林的算法中,除了在数据集中做抽取之外,还可以在特征这一角度进行抽取。举个例子,如果事先我们有100个特征,现在我们可以抽取10个特征来训练一棵树,这样的方式我们也可以得到很不一样的树,其对于分类的标准显然也很不一样。
这种特征抽取的方式相当于在原来特征的100个维度中,随机选取10个维度,这等效于一个特征转换,这个过程中,从100维度到10个维度的转换中,相当于作了低维度的投影(Projection)。
得到的特征实际上是原始特征的随机子集,这使得生成模型过程中的效率也大大提高了。
这里写图片描述
3. 特征扩展(Feature Expansion)
上面介绍的特征投影等效于对原来的特征向量左乘一个投影矩阵Φ(x) = P·x,得到的特征抽样是随机选取的原始特征。现在我们可以尝试更加复杂、有能力的投影方式。更加有能力的特征投影就是不再单一选取单一维度的特征,而是将多个维度的特征进行组合,得到新的一维的特征,这称为特征扩展。
这里写图片描述
4. Out-Of-Bag Estimate
在bootstrapping的过程中,有些数据可能没有被选择,这些数据称为out-of-bag(OOB) examples,对于训练每一个gt,其中用“”标注的数据即是gt的OOB examples。
这里写图片描述
下面的公式是经过N’次选择之后没有被选择的数据,大约有(1/e)N多的数据没有被选择到,即大约有三分之一的数据没有被选择,这些数据由于没有用来训练模型,故可以用于模型的验证。
这里写图片描述
在随机森林的算法中,我们不太需要使用OOB数据来验证每个g的性能,因为即使g的能力很差,最终进行平均得到的G的性能也可能会很好。但这些OOB数据可以用来验证G的性能。
这里写图片描述
上图中,(xN,yN)这一个数据由于没有用于g2,g3,gT的训练数据,故可以用来作为它们的验证数据。所以(xN,yN)可以作为G-的验证数据,其中G(x)=average(g2, g3, gT)。
下面给出了OOB Error(Eoob)的公式,G的OOB Error的估算是通过不同的G-来平均得到的,所以,在bootstrap的过程就可以自己去验证模型的性能好坏,不需要单独划分一块数据作为专门的验证数据。
这里写图片描述
下面是随机森林算法中使用OOB Error进行验证的方法:
这里写图片描述
5. 特征选择(Feature Selection)
接下来要介绍的特征选择,其目的主要是使用程序来自动选择需要的特征,而将冗余的、不相关的特征忽略掉。
优点:特征选择由于舍去了不必要的特征,使得模型复杂度大大降低,可以简化假设,缩短预测时间;同时,舍去了特征的噪声,可以提高模型的泛化能力,使得模型不容易对噪声过拟合;最后,由于选择出来的特征具有很好的物理意义,其结果可以作很好的解释。
缺点:特征的选择计算量大;如果选出来的特征是噪声的话,可能会导致过拟合;如果选择了噪声特征,得到的解释可能只是数据之中的关联性,而非因果性。
5.1 Permutation Test
上面说的特征选择是如何选择特征的组合方式的问题,为了解决这个问题,我们暂不考虑特征之间的相关关系,而是为每个特征打一个分数,表示特征的重要性,然后按照重要性进行排序,选择最重要的前K个特征作为选取出来的特征。
由于随机森林算法是一个非线性的模型,我们不能单纯以线性模型中的权重作为衡量特征重要性的标准,所以下面要介绍的称为Permutation Test的方法来判别特征的权重。
Permutation Test的方法是通过将第i个维度特征的所有数据重新的随机调整位置,然后比较一下原始数据和调整之后的数据表现的差距,来评价这个维度的特征是有多么重要。
这里写图片描述
5.2 在Out-Of-Bag Estimate过程中做Permutation Test
在随机森林中可以用OOB代替验证的过程,为了简化Permutation Test带来的重新进行训练的代价,我们在使用OOB Example(bootstrap过程中没有选取的数据)进行验证的过程中做一些修改,即在验证的时候去进行Permutation Test,而非训练时进行。
在求Eoob(G)时,我们通过G-(xn)来计算,我们在这里将x(n)修改成x(n,i),就可以不用对G进行修改了。
这里写图片描述
在实际应用中,面对非线性的问题时,可以通过随机森林的方法来进行初步的特征选择。
参考资料
机器学习技法课程,林轩田,台湾大学
转载请注明作者Jason Ding及其出处
GitCafe博客主页(http://jasonding1354.gitcafe.io/)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值