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

我使用gridsearchcv来确定mlpclassifier中哪些超参数可以提高我的神经网络的准确性。我发现层数和节点数确实会产生影响,但我正在尝试找出其他哪些配置可以影响准确性(实际上是F1分数)。但根据我的经验,像“激活函数”、“学习率”、“求解器”这样的参数似乎并没有真正改变什么。我需要研究哪些其他超参数可以影响神经网络预测的准确性。

有人对除了层数/节点数之外的其他参数有哪些建议/想法吗,这些参数可以影响我的神经网络预测的准确性?


回答:

这完全取决于你的数据集。神经网络并不是可以学习一切的魔法工具,而且与传统的机器学习模型相比,它们需要更多的数据。对于MLP来说,通过添加大量层使模型变得极其复杂从来都不是一个好主意,因为这会使模型变得更加复杂、运行速度变慢,并且可能导致过拟合。学习率是一个重要因素,因为它用于寻找模型的最佳解决方案。模型会犯错并从中学习,而学习的速度由学习率控制。如果学习率太小,你的模型将需要很长时间才能达到最佳状态,但如果学习率过高,模型可能会跳过最佳状态。激活函数的选择再次取决于用例和数据,但对于较简单的数据库,激活函数不会产生巨大的差异。

在传统的深度学习模型中,神经网络由多个层组成,这些层不一定都是密集的。在MLP中,所有层都是密集的,即前馈型。要改进你的模型,你可以尝试结合密集层和其他类型的层,如CNN、RNN、LSTM、GRU等。使用哪种层完全取决于你的数据集。如果你使用的是非常简单的数据库用于学校项目,那么可以尝试传统的机器学习方法,如随机森林,因为你可能会得到更好的结果。

如果你想坚持使用神经网络,可以阅读关于其他类型的层、丢弃法、正则化、池化等内容。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注