将神经网络更改为不过度拟合

数据挖掘 神经网络 分类 scikit-学习
2022-02-15 13:46:53

我正在尝试用 13 个属性对大约 400K 数据进行分类。我用过python sklearn的SVM包,但是没用,后来才知道SVM不适合大数据集分类。然后我使用以下 MLPClassifier 使用 (sklearn) ANN:

MLPClassifier(solver='adam', alpha=1e-5, random_state=1,activation='relu', max_iter=500)

并使用 200K 样本训练系统,并在剩余样本上测试模型。分类效果很好。但是,我担心的是系统过度训练或过度拟合。您能否指导我了解隐藏层的数量和节点大小以确保没有过度拟合?(我了解到默认实现有 100 个隐藏神经元。按原样使用默认实现可以吗?)

1个回答

为避免过拟合,

在使用MLPClassifier进行模型构建时

  1. 使用early_stopping = True. 当验证数据没有改善时,这会停止训练。
  2. 在大多数情况下,使用默认节点大小是可以的,直到它具有大量特征。
  3. 由于您有更多数据,因此您将训练、测试和验证分开并验证分数。
  4. 检查各种指标(f1_score、精度、召回等)。当涉及不平衡的数据集时,这非常有用。
  5. 如果您高度关注过度拟合,可以探索cross_val_predict误差标准差显示了模型对看不见的数据的效果。

您将获得更多与您拥有的数据相关的东西。