Python 为什么随机森林的规模随着训练实例的增加而增加?

Python 为什么随机森林的规模随着训练实例的增加而增加?,python,machine-learning,memory,scikit-learn,random-forest,Python,Machine Learning,Memory,Scikit Learn,Random Forest,在过去的几个月里,我一直在定期训练sklearn Random Forests。我注意到,当使用joblib将模型导出到文件时,文件大小急剧增加,从2.5GB增加到11GB。所有参数保持不变,训练特征的数量保持不变。唯一的区别是,培训数据中的示例数量有所增加 假设参数保持不变,并且指定了估计器的数量和每棵树的深度,为什么增加示例的数量会增加随机森林的大小 以下是模型的参数: RandomForestClassifier(bootstrap=True, class_weight=None, cri

在过去的几个月里,我一直在定期训练sklearn Random Forests。我注意到,当使用joblib将模型导出到文件时,文件大小急剧增加,从2.5GB增加到11GB。所有参数保持不变,训练特征的数量保持不变。唯一的区别是,培训数据中的示例数量有所增加

假设参数保持不变,并且指定了估计器的数量和每棵树的深度,为什么增加示例的数量会增加随机森林的大小

以下是模型的参数:

RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
        max_depth=None, max_features='sqrt', max_leaf_nodes=None,
        min_impurity_decrease=0.0, min_impurity_split=None,
        min_samples_leaf=20, min_samples_split=2,
        min_weight_fraction_leaf=0.0, n_estimators=1000, n_jobs=-1,
        oob_score=False, random_state=123, verbose=0, warm_start=False)

我会将
min\u samples\u leaf
设置为浮点,然后它是训练数据集的百分比。例如,
min\u samples\u leaf=0.01
,每个叶中至少有1%的样本


要优化模型的大小,可以在
min\u samples\u leaf
n\u估计器上使用GridSearchCV。除非您有大量的类和功能,否则您可能会将模型大小减少几个数量级。

简而言之,林中的每棵树的叶子上都包含所有训练样本,因为您将“最大深度”设置为“无”。因此,随着训练数据的增长,树会变得更深,因此在存储方面会更大。不是所有的样本,min_samples_leaf=20会稍微限制深度。