如何评估/提高不平衡数据集的神经网络预测的准确性?

时间:2019-05-11 22:33:37

标签: python machine-learning scikit-learn neural-network classification

我使用gridsearchcv来确定mlpclassifier中的哪些超参数可以使我的神经网络的准确性更高。我发现层和节点的数量会有所不同,但是我试图找出哪些其他配置可以使准确性有所不同(实际上是F1分数)。但是从我的经验来看,像“激活”,“ learning_rate”,“求解器”之类的参数似乎并没有真正改变任何东西。 我需要对其他超参数可以通过神经网络进行预测的准确性产生影响的研究。

有人对与神经网络预测的精度有差异的,不同于层/节点数量的参数有一些提示/想法吗?

1 个答案:

答案 0 :(得分:1)

这完全取决于您的数据集。神经网络并不是可以学习一切的神奇工具,而且与传统的机器学习模型相比,它们需要大量数据。对于MLP,通过增加许多层来使模型极其复杂绝不是一个好主意,因为它会使模型更复杂,更慢并且也可能导致过度拟合。学习率是一个重要因素,因为它可用于找到模型的最佳解决方案。模型会犯错误并从中学习,学习速度受学习率控制。如果学习率太小,您的模型将花费很长时间才能达到最佳阶段,但是如果学习率太高,则模型可能会跳过最佳阶段。激活功能的选择再次取决于用例和数据,但是对于更简单的数据集,激活功能不会有太大区别。

在传统的深度学习模型中,神经网络由可能并不总是密集的几层组成。 MLP中的所有层都是密集的,即前馈。要改善您的模型,您可以尝试结合使用cnn,rnn,lstm,gru或其他层的密集层。使用哪一层完全取决于您的数据集。如果您正在为学校项目使用非常简单的数据集,请尝试使用传统的机器学习方法(例如随机森林),以获得更好的结果。

如果您想坚持使用神经网络,请阅读有关其他类型的层,辍学,正则化,合并等信息。