[英]Sklearn random forest model is too big
來自sklearn
的初學者的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
max_depth = 380
為0.3- max_depth = 380
accuracy_score
max_depth = 380
為0.95
有什么建議,請多指教!:)
UPD。 准確性結果
火車得分:0.988 classifier.score
OOB得分: 0.953 classifier.oob_score_
測試分數: 0.935 sklearn.metrics -> accuracy_score
嘗試使用min_samples_leaf
而不是max_depth來限制樹的深度。 這為樹的不同路徑和不同的估計量提供了不同的深度。 希望有可能找到一個具有較低平均深度的良好性能的模型。 我喜歡將min_samples_leaf設置為float,這意味着采樣數的一小部分。 嘗試在(0.0001,0.1)之間進行gridsearch
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.