sklearn初学者的问题,请指教。
我使用以下参数训练了 RandomForestClassifier
模型:
n_estimators = 32,
criterion = 'gini',
max_depth = 380,
这些参数不是随机选择的,出于某种原因,它们表现出了最佳性能......尽管我自己觉得很奇怪。
使用joblib.dump
和compress=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 -> precision_score
最佳答案
尝试使用 min_samples_leaf
而不是 max_depth 来限制树深度。这允许树的不同路径和不同的估计器具有不同的深度。希望能够找到一个具有良好性能且平均深度较低的模型。
我喜欢将 min_samples_leaf 设置为 float ,表示样本数量的一小部分。尝试在 (0.0001, 0.1) 之间进行网格搜索
关于python - Sklearn随机森林模型太大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55118118/