使用和理解MATLAB的TreeBagger(随机森林)方法

时间:2015-09-23 12:55:34

标签: matlab tree random-forest

我尝试使用MATLAB的TreeBagger方法,该方法实现了一个随机森林。

我得到了一些结果,并且可以在训练分类器后在MATLAB中进行分类。 但是,我想"看"树木,或想知道分类是如何运作的。

例如,让我们运行这个最小的例子,我在这里找到:Matlab treebagger example

所以,我最终得到了一个存储在" B"中的分类器。 我该如何检查树木?就像查看每个节点一样,查看决策的标准(例如功能)? 输入B会返回:

B = 

  TreeBagger
Ensemble with 20 bagged decision trees:
           Training X:                [6x2]
           Training Y:                [6x1]
               Method:       classification
                Nvars:                    2
         NVarToSample:                    2
              MinLeaf:                    1
                FBoot:                    1
SampleWithReplacement:                    1
 ComputeOOBPrediction:                    0
     ComputeOOBVarImp:                    0
            Proximity:                   []
           ClassNames:             '0'             '1'

我看不到B.trees左右的内容。

后续问题将是: 如何将您在MATLAB中原型化的随机森林代码移植到任何其他语言。 然后,您需要知道每棵树的工作原理,以便您可以用目标语言实现它。

我希望你明白这一点,或者理解我的疑问;)

感谢您的回答!

最佳, 帕特里克

2 个答案:

答案 0 :(得分:2)

通过运行view()命令,了解如何检查树。例如。用于检查示例的第一个树:

>> view(B.Trees{1})
Decision tree for classification
1 if x2<650 then node 2 elseif x2>=650 then node 3 else 0
2 if x1<4.5 then node 4 elseif x1>=4.5 then node 5 else 1
3 class = 0
4 class = 0
5 class = 1

通过向view()命令传递更多参数,树也可以可视化:

view(B.Trees{1},'mode','graph')

enter image description here

答案 1 :(得分:1)

查看多个树只需使用循环:

for n=1:30 %number of tree
view(t.Trees{n});
end

you can find the source here