在过去的几个月里,我一直在定期训练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_leaf
和n_estimators
上使用 GridSearchCV。除非有大量的类和特征,否则可能会将模型大小减小几个数量级。