随机森林模型(RF)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随机森林模型(RF)相关的知识,希望对你有一定的参考价值。

参考技术A         集成学习通过构建多个学习器,将结果进行整合,已获得比单一学习器更好的泛化性能。目前集成学习方法分类两类,一类的Boosting算法,学习器之间有较强的依赖关系,串行学习;另一类是Bagging算法,学习器之间无依赖关系,可以并行学习,随机森林(Random Forest,RF)是典型的Bagging集成学习算法。

        Bagging是“Bootstrap aggregation”的简写,代表一种自主采样法:从原始数据集中,有放回地重采样n个样本,形成一个新的数据集;假设每个样本的维度是a,,再随机抽取k个特征训练一个决策树;以上两步重复m次,就得到随机森林模型(m个决策树),最终通过投票的方式得到最终预测结果。
        Bagging算法是一种集合模型训练的框架,通过多次抽样训练多个弱学习器,集合弱学习器(弱学习器低偏差,高方差)的结果提高模型的泛化能力。如果弱学习器是决策树,多个决策树模型就构成随机森林,弱学习器还可以是其他学习器。

        决策树属于非参数学习算法,可用于解决分类和回归的问题。回归问题的结果是叶子结点的样本平均值。
决策树的构建步骤主要分为三部分:

        在随机森林中计算某个特征X的重要性,方法如下:
(1)对于随机森林中的每一棵树,使用响应的(OOB)袋外数据计算分类误差,记为errOOB1。
(2)随机将袋外数据所有样本的特征X加入噪声(随机改变特征X 的取值),再次计算分类误差,记为errOOB2。
(3)假设随机森林有N棵树,特征X的重要性为 .。若给某个特征加入噪声后,袋外数据的准确性大幅下降后,说明该特征重要程度比较高。

(如有不同见解,望不吝赐教!!!)

有没有办法从随机森林模型中提取树深度?

【中文标题】有没有办法从随机森林模型中提取树深度?【英文标题】:Is there a way to extract Tree depths from a Random Forest model? 【发布时间】:2019-10-07 21:44:19 【问题描述】:

我创建了一个随机森林分类器,我正在尝试生成我的随机森林模型的树深度的直方图。我只是无法提取森林中每棵树的深度。

我的 RF 模型称为“RF_optimized”,我尝试使用下面的代码来迭代我的树并可视化哪个有效。我浏览了estimators_export_graphviz 文档,但似乎没有办法提取树的实际深度。

from sklearn import tree
from sklearn.tree import export_graphviz
from sklearn.externals.six import StringIO

# Create a string buffer to write to (a fake text file)
f = StringIO()

i_tree = 0
for tree_in_forest in RF_optimised.estimators_:

    export_graphviz(tree_in_forest,out_file=f,
    #feature_names=col,
    filled=True,
    rounded=True,
    proportion=True)

    graph = pydotplus.graph_from_dot_data(f.getvalue())
    display(Image(graph.create_png()))

我需要一个函数来遍历我的随机森林中的树并将树的深度存储在列表或数据框中,以便稍后生成直方图。有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

在解释器中的一些探索表明,每个 Tree 实例都有一个 max_depth 参数,这似乎是我正在寻找的 - 再说一遍,它没有记录。

[estimator.tree_.max_depth for estimator in RF_optimised.estimators_]

为我做了诀窍:)

【讨论】:

max_depth 也应该以estimator.max_depth 的形式出现在估算器中,这在DecisionTreeClassifier 中有记录

以上是关于随机森林模型(RF)的主要内容,如果未能解决你的问题,请参考以下文章

随机森林(RF)的原理

有没有办法从随机森林模型中提取树深度?

随机森林RF与GBDT之间的区别

mahout 随机森林RF算法

ML之PFI(eli5):基于mpg汽车油耗数据集利用RF随机森林算法和PFI置换特征重要性算法实现模型特征可解释性排序

RF分类基于matlab随机森林算法数据分类含Matlab源码 2048期