Sklearn随机森林模型太大

时间:2019-03-12 09:31:21

标签: python scikit-learn random-forest

sklearn中来自初学者的问题,请告知。 我已经使用以下参数训练了RandomForestClassifier模型:

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

该参数不是随机选择的,由于某些原因它们表现出最好的性能……尽管对我自己来说似乎很奇怪。

使用joblib.dumpcompress=3

保存时,模型大小约为 5.5GB

使用的数据是:

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_score为0.3 -max_depth = 380-accuracy_score为0.95

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

UPD。准确性结果

火车分数: 0.988 classifier.score

OOB得分: 0.953 classifier.oob_score_

测试成绩: 0.935 sklearn.metrics -> accuracy_score

1 个答案:

答案 0 :(得分:0)

尝试使用min_samples_leaf而不是max_depth来限制树的深度。这为树的不同路径和不同的估计量提供了不同的深度。希望有可能找到一个具有较低平均值深度的良好性能的模型。 我喜欢将min_samples_leaf设置为float,这意味着采样数的一小部分。尝试在(0.0001,0.1)之间进行网格搜索