R-квадрат отрицательный для модели линейной регрессии - Tensorflow - PullRequest
0 голосов
/ 05 апреля 2020

Я построил нейронную сеть без функции активации, которая, таким образом, является моделью линейной регрессии:

def build_model():
  model = tf.keras.models.Sequential([
  tf.keras.layers.Input(shape=(1,)),
  tf.keras.layers.Dense(1)
  ])

  model.compile(optimizer='adam', loss='mse',metrics=['mae','mse','mape',coeff_determination]) 

  return model

Мое coeff_dermination определяется следующим образом:

from keras import backend as K

def coeff_determination(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()) )

Математически, R-квадрат не может быть ниже 0 для модели линейной регрессии, потому что: Объясненная дисперсия + Ошибка дисперсии = Общая дисперсия.

Но когда я тренирую модель выше, R-квадрат иногда может быть отрицательным.

Почему? Спасибо за ваши мысли / огни

Training model

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...