在完成模型的架构后,我决定通过在fit()
中设置validation_split = 0
来在整个数据集上训练模型。我认为这将改善基于这些来源的结果:
在Keras序列模型中使用的验证数据是什么?
Your model doesn't "see" your validation set and isn´t in any way trained on it
https://machinelearningmastery.com/train-final-machine-learning-model/
What about the cross-validation models or the train-test datasets?
They’ve been discarded. They are no longer needed.
They have served their purpose to help you choose a procedure to finalize.
然而,没有验证集(与validation_split = 0.2
相比),我得到了更差的结果,使所有其他参数相同。
这有什么解释吗?或者只是偶然,我的模型碰巧在固定的测试数据上表现更好,当一部分训练数据被排除在外(并用作验证)。
这真是一个非常好的问题,涵盖了很多与机器学习相关的概念,特别是偏差-方差权衡
@CrazyBarzillian的评论暗示,更多的数据可能会导致过度拟合,是的,我们需要更多关于你的数据的信息来解决问题。但在更广泛的意义上,我想向你解释几点,这可能有助于你理解它为什么会发生。解释
每当你的数据有更多的特征时,你的模型就会学习一个非常复杂的方程来解决它。简而言之,对于我们拥有的数据量来说,模型太复杂了。这种情况被称为高方差,导致模型过拟合。我们知道,当训练误差远低于测试误差时,我们面临着一个高方差问题。高方差问题可以通过减少特征的数量(通过应用PCA,异常值去除等),通过增加数据点的数量来解决.
有时,你的数据中有较少的特征,因此模型学习一个非常简单的方程来解决它。这被称为高偏置. 在这种情况下,添加更多的数据是没有用的。在这种情况下,更少的数据可以完成工作,或者添加更多的功能将有助于.
我假设
如果你的模型在添加更多数据时表现不佳,我猜你的模型患有高偏差。但是要检查语句是否添加了更多的数据导致结果不佳在你的情况下,你可以做以下事情:-
- 使用一些超参数
- 尝试其他机器学习模型
- 代替准确率分数,在回归的情况下寻找r2分数或平均绝对误差,或者在分类的情况下寻找F1,精度,召回率
如果在做了这两件事之后,你仍然得到相同的结果,更多的数据导致糟糕的结果,那么你可以确定高偏差,可以增加特征的数量或减少数据。
<<p>解决方案/strong>通过减少数据,我的意思是使用小数据但更好的数据。更好的数据意味着假设你正在做一个分类问题,你有三个类(a, B和C),如果所有的数据点在三个类之间是平衡的,那么更好的数据将是。你的数据应该平衡。如果不平衡,即A类有大量样本,而B类和C类只有3-4个样本,那么你可以应用随机抽样技术去克服它。
如何制作更好的数据
- 平衡数据
- 删除离群值
- 缩放(归一化)数据
结论
这是一个神话,更多的数据总是导致好的模型。实际上,数据的质量比数量更重要。数据既要有数量也要有质量。这种维持质量和数量的游戏被称为偏差-方差权衡。