【问题标题】:Understanding max_features parameter in RandomForestClassifier了解 RandomForestClassifier 中的 max_features 参数
【发布时间】:2020-06-23 01:10:59
【问题描述】:

我正在分析RandomForestClasifier,需要一些帮助。

max_features 参数给出了随机森林中分裂的最大特征数,通常定义为sqrt(n_features)。如果 m 是 n 的 sqrt,则 DT 形成的组合没有 nCm。如果 nCm 小于 n_estimators(随机森林中的决策树数)怎么办?

示例: 对于 n = 7,max_features 为 3,因此 nCm 为 35,表示决策树的 35 个唯一特征组合。现在对于n_estimators = 100,剩下的 65 棵树会有重复的特征组合吗?如果是这样,树会不会在答案中引入偏见?

【问题讨论】:

    标签: scikit-learn random-forest decision-tree ensembles


    【解决方案1】:
    1. max_features 参数设置每次拆分时要使用的最大特征数。因此,如果有 p 个节点,则 .

    2. max_samples 强制对来自 X 的数据点进行采样。默认情况下,它的采样大小与 X 的大小相同。

    来自文档:

    ma​​x_samples int 或 float,默认=None

    如果 bootstrap 为 True,则从 X 抽取的样本数以训练每个基本估计器。

    如果没有(默认),则绘制 X.shape[0] 个样本。

    因此,可以形成的树的唯一组合是 p! * nCm * (n+n-1)! / (n!(n-1)!)

    对于您的示例,让我们考虑每棵树中有 10 个节点,您的 X 中有 10 个样本。

    10! * 7C3 * (19!/ 10! * 9!)
    = 11732745024000.0
    

    因此,合理大小的数据集不会有任何偏差。

    【讨论】:

    • 那么在开始的时候,我们不是为随机森林中的每个估计器定义了一个特征子集吗?是否考虑了所有估计器的所有特征,然后在每个节点上随机选择进行拆分?
    • 是的,在每个节点上随机选择。来自文档:如果是 int,则在每次拆分时考虑 max_features 特征。
    • 阅读更多here
    • 如果 bootstrap 为 true 且 max_sample, none,它将绘制 no of samples = X.shape[0],因此这与 bootstrap 为 false 的情况有任何区别。
    • 您能否解释一下我们是如何在唯一的树中获得 (n+n-1)!/(n!(n-1)!) 的。谢谢!
    猜你喜欢
    • 2014-07-19
    • 2021-08-04
    • 2023-02-01
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2023-03-13
    • 2023-02-02
    相关资源
    最近更新 更多