首页 > 解决方案 > sklearn 随机森林模型太大

问题描述

初学者的问题sklearn,请指教。我已经RandomForestClassifier使用以下参数训练了模型:

n_estimators = 32,
criterion = 'gini',
max_depth = 380,

这个参数不是随机选择的,出于某种原因,它们表现出最好的性能......虽然对我来说似乎很奇怪。

使用和保存时模型大小约为5.5GBjoblib.dumpcompress=3

使用的数据是:

tfidf=TfidfVectorizer()
X_train=tfidf.fit_transform(X_train)

le=LabelEncoder()
le.fit(y_train)
y_train=le.fit_transform(y_train)

样本大小为 4.7Mio 记录拆分为 0.3(70% 训练,30% 测试)

现在,我有一个问题,也许有人可以帮助:

模型使用的参数和模型大小相对于样本大小是否有意义?对于增加尺寸的模型,参数的选择可能不是最优的(我知道这里增加尺寸的主要参数是max_depth,但结果是最好的......)

也许对参数或数据准备有任何建议,根据我对这个样本的经验,我注意到以下几点: 1. 增加n_estimators对结果几乎没有影响;2.max_depth另一方面增加带来显着改善。例如: - max_depth = 10- accuracy_score0.3 - max_depth = 380- accuracy_score0.95

任何建议,建议非常欢迎!:)

UPD。准确度结果

火车分数:0.988 classifier.score

OOB 分数:0.953 classifier.oob_score_

测试分数:0.935 sklearn.metrics -> accuracy_score

标签: pythonscikit-learnrandom-forest

解决方案


尝试使用min_samples_leaf而不是 max_depth 来限制树的深度。这允许树的不同路径和不同的估计器有不同的深度。希望能够找到具有良好性能且平均深度较低的模型。我喜欢将 min_samples_leaf 设置为浮点数,表示样本数的一小部分。在 (0.0001, 0.1) 之间尝试网格搜索


推荐阅读