火车数据与测试数据的均方误差之间的差异非常大

问题描述 投票:1回答:1

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

Model1训练均方误差:154.96

[Model1测试均方误差:72018955075415565139968.00

培训分数:0.48

测试分数:-236446352571492139008.00

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

我正在使用tensorflow 1.13.1python 3.7

python tensorflow regression tensor
1个回答
0
投票

Overfitting似乎是这种情况。

您可以

  • [确保您正在执行数据预处理步骤,如1.Missing Value Imputation2.Fixing the Outliers3. ScalingNormalizing功能
  • 确保您正在执行Feature Engineering(删除不需要的功能,添加有意义的功能)
  • Shuffle数据,通过使用shuffle=True中的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

  • 使用RegularizationRegularization的代码如下所示(您也可以尝试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,因为它会减少可训练参数的数量

希望这会有所帮助。祝您学习愉快!

© www.soinside.com 2019 - 2024. All rights reserved.