首页 > 解决方案 > 训练数据和测试数据的均方误差差异很大

问题描述

我使用线性回归来制作 ML 模型,但遇到了问题。这是我的结果值

Model1 训练均方误差:154.96

Model1 测试均方误差:72018955075415565139968.00

训练成绩:0.48

测试成绩:-236446352571492139008.00

我不知道为什么会因为过度拟合而打印这些值?

我正在使用tensorflow 1.13.1python 3.7

标签: pythontensorflowregressiontensor

解决方案


这似乎是 的情况Overfitting

你可以

  • 确保您遵循数据预处理步骤,如 1. Missing Value Imputation2. Fixing the Outliers3.ScalingNormalizing功能
  • 确保您正在执行Feature Engineering(删除不需要的功能,添加有意义的功能)
  • Shuffle数据,通过使用shuffle=Truein model.fit。代码如下所示:

history = cnn_model.fit(x = X_train_reshaped, y = y_train, batch_size = 512, epochs = epochs, callbacks=[callback], verbose = 1, validation_data = (X_test_reshaped, y_test), validation_steps = 10, steps_per_epoch=steps_per_epoch, shuffle = True)

  • 使用Early Stopping. 代码如下所示

    callback = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=15)

  • 利用Dropout

  • 使用Regularization. 代码Regularization如下所示(您可以尝试l1 Regularizationl1_l2 Regularization也可以):

`
从 tensorflow.keras.regularizers 导入 l2

Regularizer = l2(0.001)

model.add(tf.keras.layers.Dense(
    units = 64, activation='relu', kernel_regularizer=Regularizer, bias_regularizer=Regularizer,
    activity_regularizer=Regularizer))

tf.keras.layers(Dropout(0.4))

model.add(Dense(units = 10, activation = 'sigmoid', 
                        activity_regularizer=Regularizer, kernel_regularizer=Regularizer))`
  • 最后但并非最不重要的一点,尝试删除一些Layers,因为它减少了可训练参数的数量

如果您按照上述说明进行操作Test AccuracyTesting Score仍然没有改进,请分享完整的代码,以便我们为您提供帮助。

希望这可以帮助。快乐学习!


推荐阅读