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

Posted

技术标签:

【中文标题】如何评估/提高来自具有不平衡数据集的神经网络的预测的准确性?【英文标题】:How to evaluate/improve the accuracy from the prediction from a neural network with an unbalanced dataset? 【发布时间】:2019-09-29 09:03:01 【问题描述】:

我使用 gridsearchcv 来确定 mlpclassifier 中的哪些超参数可以使我的神经网络的准确度更高。我发现层和节点的数量会有所不同,但我试图找出哪些其他配置可以在准确性上产生差异(实际上是 F1 分数)。但根据我的经验,“activation”、“learning_rate”、“solver”等参数似乎并没有真正改变任何东西。 我需要研究哪些其他超参数可以通过神经网络对预测的准确性产生影响。

是否有人对哪些参数与层数/节点的数量不同会影响我的神经网络预测的准确性有一些提示/想法?

【问题讨论】:

【参考方案1】:

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

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

如果您想坚持使用神经网络,请阅读其他类型的层、dropout、正则化、池化等。

【讨论】:

以上是关于如何评估/提高来自具有不平衡数据集的神经网络的预测的准确性?的主要内容,如果未能解决你的问题,请参考以下文章

具有极不平衡数据集的 TensorFlow 分类

分类评估指标

哪个指标用于评估具有不平衡数据的分类器?

不平衡数据集的 Knn 分类器

sklearn.SVC 在使用带有小型平衡数据集的 GridSearchCV 时返回完全不同的预测(模型)

tensorflow 评估和预测的不同结果(F1-Score)