Как придать ненулевое значение больший вес с функцией потерь в задаче регрессии? - PullRequest
0 голосов
/ 24 января 2019

У меня есть задача регрессии: y = f (x),
большинство значений в y равно нулю, поэтому, если использовать среднеквадратичную ошибку (mse) в качестве функции потерь, модель выдаст все предсказанные y как оченьмалые значения;
Итак, я хочу придать больший вес ненулевым значениям в y;
Что мне делать?
Одно из решений, которое я хочу попробовать, - определить новую функцию потерь:

потеря = e * mse (y, y_pred) [y! = 0] + (1-e) * mse (y, y_pred) [y == 0]

e это весовой параметр, будет ли он работать?Как реализовать в tenorflow?

1 Ответ

0 голосов
/ 24 января 2019

если вы хотите просто увеличить значения в своем тензоре y, вы можете умножить свой тензор y на скалярную переменную

y=tf.math.multiply(y,10)

В некоторых случаях модели, обученные с помощью mse, предсказывают очень плавные результаты, если вы хотите более резкие результаты, вы можете использовать mean_pairwise_squared_error

loss=tf.losses.mean_pairwise_squared_error(y_pred,y,weights=e)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...