Я построил нейронную сеть без функции активации, которая, таким образом, является моделью линейной регрессии:
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-квадрат иногда может быть отрицательным.
Почему? Спасибо за ваши мысли / огни