首页 > 解决方案 > 使用超网格搜索和 10 倍 CV 调整参数后,随机森林模型的 AUC 较低

问题描述

我在不调整超参数的情况下收到的 AUC 值更高。我使用了相同的训练数据,这里可能缺少一些东西或一些有效的解释。

数据是推文的词嵌入的平均值,该推文使用预训练的 GLoVE 向量计算,用于 50 维推文

没有调整:

RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
            max_depth=None, max_features='auto', max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_estimators=100, n_jobs=None,
            oob_score=False, random_state=None, verbose=0,
            warm_start=False)

AUC- 0.978

调音:

GridSearchCV(cv=10, error_score='raise-deprecating',
       estimator=RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
            max_depth=None, max_features='auto', max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_estimators='warn', n_jobs=None,
            oob_score=False, random_state=42, verbose=0, warm_start=False),
       fit_params=None, iid='warn', n_jobs=3,
       param_grid={'max_features': ['auto', 'sqrt', 'log2', None], 'bootstrap': [True, False], 'max_depth': [2, 3, 4], 'criterion': ['gini', 'entropy']},
       pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',
       scoring=None, verbose=0)
print(cv_rf.best_estimator_)
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
            max_depth=4, max_features='auto', max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=None,
            oob_score=False, random_state=42, verbose=0, warm_start=False)

AUC-0.883

标签: pythonscikit-learnrandom-forestauchyperparameters

解决方案


我预计这有两个可能的原因。

  1. 在前一个模型中,最大深度设置为 None,这意味着节点被扩展直到所有叶子都是纯的或直到所有叶子包含少于 min_samples_split 样本,而max_depth=4在后者中,这使得模型不太灵活。

建议:可以max-depth在Grid Search中增加范围

  1. 估计器的数量 ( n_estimators) 从 100 减少到 10。这使得 Ensemble 模型更弱。

建议:增加估算器的数量或调整估算器的数量。


推荐阅读