哪些指标决定了模型的质量?

数据挖掘 神经网络 喀拉斯 scikit-学习 张量流 模型选择
2022-02-16 22:58:07

参加这个Kaggle 比赛,有一些问题。使用此代码:

def r2_keras(y_true, y_pred):
    SS_res =  K.sum(K.square(y_true - y_pred)) 
    SS_tot = K.sum(K.square(y_true - K.mean(y_true))) 
    return ( 1 - SS_res/(SS_tot + K.epsilon()) )

我的训练输出如下:

0s 138us/step - loss: 0.1340 - mean_squared_error: 0.1340 - r2_keras: 0.7565 - val_loss: 0.4112 - val_mean_squared_error: 0.4112 - val_r2_keras: 0.4064
Scaled Validation r2: 0.5182
Unscaled Validation r2: -152.1261

我使用 20% 的训练数据进行验证。

我在训练期间跟踪这些指标:

  • 训练损失,mse 和 r2
  • 验证损失,mse 和 r2

训练后,我在模型上获得了这些指标:

R2 用于验证缩放数据
R2 用于验证未缩放数据

scaler = StandardScaler()
scaled_train = scaler.fit_transform(train_df)
scaled_test  = scaler.transform(test_df)
...
m.fit( X_train, Y_train, epochs=epochs, validation_data=(X_test,Y_test))
....
from sklearn.metrics import r2_score
scaled_r2 = r2_score(prediction, scaled_test_df[[target]].values)
unscaled_r2 = r2_score(descaled_prediction, test_df[target].values)

所以,我的问题是:

  1. 未缩放和缩​​放 r2 的相关性不高(0.31 AAMOF)。哪一个最能描述模型在看不见的数据上的准确性?
  2. 为什么未缩放的 r2 与缩放的 r2 不同?
  3. 模型 r2 与训练期间的任何验证 r2 都不相同 ( val_r2_keras)。训练后的模型 r2 不应该与训练期间报告的模型相同吗?
1个回答

未缩放和缩​​放 r2 的相关性不高(0.31 AAMOF)。哪一个最能描述模型在看不见的数据上的准确性?

我不认为这会更好地描述泛化错误,因为它们都在描述同一事物,只是在不同的尺度上。因此,建议使用与将用于对未见数据进行预测的指标一致的准确度指标。

为什么未缩放的 r2 与缩放的 r2 不同?

这是因为MSE 是规模相关的。

模型 r2 与训练期间的任何验证 r2 (val_r2_keras) 都不相同。训练后的模型 r2 不应该与训练期间报告的模型相同吗?

你为什么这么认为?

它们是不同的,因为用于训练和验证的数据集不同。