用随机森林做特征选择

关于随机森林的介绍,可见本博客中http://blog.csdn.net/u014755493/article/details/70168009

首先提出两个指标,特征重要性和分类精确度。

一.特征重要性

对于随机森林中的一颗决策树,其训练数据集是使用Bagging方法得到的,即套袋法,还有大约1/3的袋外数据我们可以用它进行特征重要性的度量,假设针对某个特征X,我们利用套袋法建立了一颗决策树T,然后用T对袋外数据TOOB进行分类检测,得到其正确分类的个数XT,然后对袋外数据的特征X进行“随机扰乱”,对特征X的取值赋予随机取的新数值,这时再用T对袋外数据TOOB'进行分类检测,得到正确分类数XT',这时对于T来说,特征X的重要性D=|XT' - XT|,我们对随机森林中共N颗决策树做相同操作,可以得到N个特征X的重要性,取其均值作为X的重要性度量,即D(X) = (D1+D2+......+DN)/N,其中Di = |XT'i - XTi|(i=1,2,3,....,N)。

总结下来,判断一个属性重要不重要,还是判断其值的改变对结果的影响程度。

二.分类精确度

准确度度量方法有很多,可以根据精度要求进行调整,这里可以使用正确的分类数/总的测试数据数


下面就可以开始使用随机森林进行特征选择

①.将原始数据集随机划分为10等份,设其有M个特征,用其中的9份做训练数据集训练出一个随机森林R1,剩下的一份作为测试数据集,这样我们一共能得到10个随机森林R1,R2,R3....,R10,

②.对于每个随机森林Ri,我们采用后向序列选择算法,对M个特征进行重要性由大到小的排序,剔除最小的一个特征,并记录下Ri的分类精度,

③.对步骤②如此进行M次迭代,选取有最高分类精度的Ri作为第i颗随机森林的分类精度,其特征集作为第i个随机森林的特征集

④.对步骤②③进行10次迭代,最终选取有最高分类精度的随机森林作为最终结果,其特征集作为我们特征选择的结果

之所要进行这么多次迭代,一定程度上能避免随机性带来的干扰。

用随机森林做特征选择_第1张图片

你可能感兴趣的:(用随机森林做特征选择)