Hyperopt 与默认值

数据挖掘 分类 随机森林 超参数
2021-10-04 18:53:57

当我使用 hyperopt 库调整我的随机森林分类器时,我得到以下结果:

Hyperopt 估计最优 {'max_depth': 10.0, 'n_estimators': 300.0}

但是,当我使用其默认 超参数训练模型时,与调整后的模型相比,所有评估指标(Precision、Recall、F1、iba、AUC)都返回更高的值。我还应该遵循调整后的参数吗?或者忽略调整过程的结果,因为它无助于改善结果?

1个回答

根据我的说法,您的过采样方法(如评论中所述)不正确。 当您在每个 FOLD 上应用 SMOTE 时(假设 K-FOLD),它将对少数类进行过度采样。而且你总是会得到 K-FOLD 的混合响应,这不是 K-FOLD 验证的目的。

让我试着用一个例子来解释你:

  1. 假设您有一个包含 4 个 A、B、C 和 D 类的数据集。
  2. 每个类的样本,A类有10000个,B类有2000个,C类有1000个,D类有6000个。
  3. 在 K 折交叉验证期间,系统选取样本进行训练,其中大部分是 A 类和 D 类。
  4. 而对于测试它主要有 B 和 C。由于您使用了 SMOTE,它将对其他两个类进行过度采样,并且在这种情况下您也会得到不错的结果。

注意:这可能是原因之一。

My suggestion:
 1. Shuffle the whole data set.
 2. Divide into training and test data.
 3. Apply SMOTE on training data.
 4. Follow other steps of Model training, without manipulating the data at this stage.
 5. Evaluate model on the actual test data.