Machine learning 低R2但高MAPE

Machine learning 低R2但高MAPE,machine-learning,keras,scikit-learn,neural-network,Machine Learning,Keras,Scikit Learn,Neural Network,我目前正在做一个项目,我必须解决一个基于回归的问题。我基本上必须尝试不同的模型,并比较每一个模型的准确性。到目前为止,我已经尝试过决策树、随机林和Bagging。目前,我正在尝试ANN的。我用来评估模型性能的指标是R2分数、RMSE和MAPE。对于前3款车型,我得到的结果是: 决策树: R2:0.608 RMSE:11.640681667132872 MAPE:78.73% 装袋: R2:0.752 RMSE:9.193 MAPE:78.46% 随机林: R2:0.726 RMSE:9.7

我目前正在做一个项目,我必须解决一个基于回归的问题。我基本上必须尝试不同的模型,并比较每一个模型的准确性。到目前为止,我已经尝试过决策树、随机林和Bagging。目前,我正在尝试ANN的。我用来评估模型性能的指标是R2分数、RMSE和MAPE。对于前3款车型,我得到的结果是:
决策树:
R2:0.608
RMSE:11.640681667132872
MAPE:78.73%

装袋:
R2:0.752
RMSE:9.193
MAPE:78.46%

随机林:
R2:0.726
RMSE:9.731
MAPE:78.27%

然而,对于ANN,我得到的结果确实令人困惑。
R2:0.264
RMSE:12.034
MAPE:88.73%

正如您所看到的,尽管与其他模型相比R2分数非常低,但MAPE的准确度却出人意料地高。有人能告诉我为什么会发生这种情况吗?

我用于计算MAPE精度的代码是:

#Function to calculate MAPE accuracy
def evaluate(model, test_features, test_labels):
    predictions = model.predict(test_features)
    errors = abs(predictions - test_labels)
    mape = 100 * np.mean(errors / test_labels)
    accuracy = 100 - mape
    print('Model Performance')
    print('Average Error: {:0.4f} degrees.'.format(np.mean(errors)))
    print('Accuracy = {:0.2f}%.'.format(accuracy))

    return accuracy

另外,我正在使用“保持”评估方法。

看一看,看一看