我有一个数据集,我正在尝试预测某个值。在大多数情况下,产值往往保持在1,000-10,000范围内,但偶尔会大幅上升到50,000左右。我正在根据这些数据训练TensorFlow的内置DNNRegressor实例,我发现了一些事情:
当我在包含这些异常值的训练数据上训练模型时,损失函数严重惩罚模型以丢失它们,导致它变得非常挑剔并高估某些值。这有助于它更容易地捕获异常值,但显着恶化了典型情况。
相比之下,当模型对排除异常值的数据进行训练时,它可以很好地拟合大部分数据,但完全错过了尖峰。
理想情况下,我想要将这两种情况结合起来:模型应该优先考虑典型情况下的准确性,但最好不要完全忽略尖峰的可能性。
我已经考虑过使用Huber损失作为损失函数来训练模型,以避免允许异常值支配训练过程,但我实际上并不知道如何指定评估者在训练期间应该使用哪种损失函数处理。通过TensorFlow文档查看一直没有说明。有谁知道如何做到这一点,或者在上述两种情况之间可能尝试采用其他方法来达到中间地位?