簡體   English   中英

Sklearn隨機森林模型太大

[英]Sklearn random forest model is too big

來自sklearn的初學者的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 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM