我有一个包含 3500 个观察 x 70 个特征的数据集,这是我的训练集,我还有一个包含 600 个观察 x 70 个特征的数据集,它是测试集。
目标是将观察正确分类为 0 或 1。训练集的 2000 个观察为 0,其余 1600 个为 1。
我的目标是尽可能提高准确率 >=90% 的召回率。
我只根据树的数量(从 50 到 650 棵树)对集成算法进行网格搜索。分析上,每种算法的精度 >= 90% 的最佳召回结果如下:
随机森林(375 棵树)
from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(random_state=0, n_estimators=375, class_weight='balanced')
classifier.fit(X_train, y_train)
- 精度:90%
- 召回率:24%
Xgboost(550 棵树)
from xgboost import XGBClassifier
classifier = XGBClassifier(n_estimators=n_trees, seed=0, scale_pos_weight=1.5)
classifier.fit(X_train, y_train, eval_metric='map')
- 精度:90%
- 召回率:15%
为什么 Xgboost 的表现比随机森林差这么多?