python - 为什么随机森林的大小随着训练样本数量的增加而增加?

标签 python machine-learning memory scikit-learn random-forest

过去几个月我一直在定期训练 sklearn 随机森林。我注意到,当使用 joblib 将模型导出到文件时,文件大小急剧增加 - 从 2.5 GB 增加到 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_samples_leaf 设置为浮点,那么它是训练数据集的百分比。例如,min_samples_leaf=0.01 每片叶子中至少有 1% 的样本。

要优化模型的大小,您可以在 min_samples_leafn_estimators 上使用 GridSearchCV。除非您有大量的类和特征,否则您可能可以将模型大小减少几个数量级。

关于python - 为什么随机森林的大小随着训练样本数量的增加而增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54047121/

相关文章:

python - 根据多个条件替换列中的所有值

python - 在 python 中使用 * 或 ** 有什么好处吗?

python - 如何使输出图像的大小与原始图像的大小相同以计算CNN中的损失?

machine-learning - 甘斯生成元的损失函数

python - 使用 scikit.mlpregressor 训练多个数据集

algorithm - 提出用于处理矩阵形式的巨型数据的数据结构(将其视为 excel 表)

python - 获取距离簇质心最近的元素

python - 如何将观察结果合并到一个 pandas DataFrame 中,其中除一列之外的所有列都相同?

memory - 试图在java中分解longs,内存不足?

android - android中的dalvik堆和 native 堆有什么区别?哪一个是固定的。?