问题描述
我试图用 13 个属性对大约 40 万个数据进行分类。我用过python sklearn的SVM包,但是没用,后来才知道SVM不适合大数据集分类。然后我使用以下 MLPClassifier 使用(sklearn)ANN:
MLPClassifier(solver='adam',alpha=1e-5,random_state=1,activation='relu',max_iter=500)
并使用 20 万个样本训练系统,并在其余样本上测试模型。分类效果很好。然而,我担心的是系统过度训练或过度拟合。你能指导我隐藏层的数量和节点大小以确保没有过拟合吗? (我了解到默认实现有 100 个隐藏神经元。可以按原样使用默认实现吗?)
解决方法
要知道您是否过度拟合,您必须计算:
- 训练集准确率
- 测试集准确性
一旦您计算出此分数,请进行比较。 如果训练集分数比测试集分数好得多,那么你就过度拟合了。这意味着您的模型正在“记忆”您的数据,而不是从中学习以做出未来预测。
如果您对神经元网络过度拟合,您可能必须减少层数并减少每层的神经元数量。 没有任何严格的规则说明您需要的层数或神经元数量取决于您的数据集大小。对于相同的数据集大小,每个数据集的行为可能完全不同。
因此,总而言之,如果您过度拟合,则必须使用不同的层参数和神经元数量来评估模型的准确性,然后观察使用哪些值可以获得最佳结果。您可以使用一些方法来找到最佳参数,例如 gridsearchCV
。