ANN线性回归模型的评估

时间:2019-09-28 22:06:53

标签: python machine-learning keras neural-network regression

我是机器学习业务的新手,最近我用Python在Keras上建立了我的第一个ANN。这是具有5个特征和1个输出的线性回归模型。我用“ MSE”和“损失函数”作了一个图,这些是结果。我们可以说这是一个很好的模型吗?另外,R ^ 2 = 0.91。 这是正确的方法吗?

classifier = Sequential()

classifier.add(Dense(5, input_dim=5,kernel_initializer='normal',activation='relu'))

classifier.add(Dense(5, activation='relu'))

classifier.add(Dense(1,activation='linear'))


classifier.compile(loss='mse', optimizer='adam', metrics=['mse','mae'])

history = classifier.fit(X_train, y_train, batch_size=10, validation_data=(X_test, y_test), epochs=200, verbose=0)

y_pred=classifier.predict(X_test)

train_mse=classifier.evaluate(X_train, y_train, verbose=0)

plt.title('Loss / Mean Squared Error')
plt.plot(history.history['loss'], label='train')
plt.plot(history.history['val_loss'], label='test')
plt.legend()
plt.show()

enter image description here

1 个答案:

答案 0 :(得分:1)

除了一些术语上的细节(NN回归不是 linear 回归,通常我们不将此模型称为classifier)之外,您的模型看起来确实不错,但有两个错误(培训和测试),并且没有overfitting的迹象。

尽管R ^ 2值为0.91听起来不错,但在 predictive 设置中使用度量标准(如此处)还是有问题的;引用我在another SO thread中的回答:

  

整个R平方的概念实际上直接来自统计学的世界,统计学的重点是解释性模型,而在机器学习的上下文中它很少使用,而重点是预测性模型;至少是AFAIK,除了一些非常入门的课程外,我从未(我的意思是从没 ...)见过预测性建模问题,其中R平方用于任何类型的绩效评估;流行的机器学习介绍(例如Coursera的Andrew Ng的Machine Learning)也不用不理会它,这不是偶然的。并且,如上文Github thread所述(强调):

     
    

尤其是在使用 test 集时,我对R ^ 2的含义有点不清楚。

  
     

我当然同意。