Превратите функцию потерь в функцию точности - PullRequest
0 голосов
/ 05 мая 2020

У меня есть потеря RMSE, определенная как:

RMSE = np.sum(np.sqrt((np.array(pred_df.real_values) - np.array(pred_df.estimate_values))**2))

, где реальные значения и прогнозы находятся в диапазоне от 0,0 до 5,0.

Я хочу использовать это как показатель точности c, а не как потерю, однако я не знаю интервал, в котором эта функция принимает значения. Единственное, что я могу придумать, это:

Худший случай - все прогнозы неверны (все с точностью до 5,0): RMSE = 5.0 * len(pred_df) Лучший случай - все прогнозы верны: RMSE = 0.0

Могу ли я просто использовать RMSE - 5.0 * len(pred_df) в качестве метрики точности c? Есть ли более разумный способ сделать это?

1 Ответ

1 голос
/ 05 мая 2020

На самом деле, ваш проигрыш больше TRSE, поскольку вы берете сначала root, а затем общую сумму вместо среднего, отсюда и «общая root квадратная ошибка» :). Если вы действительно хотите потерю RMSE,

RMSE = np.sqrt(np.mean((np.array(pred_df.real_values) - np.array(pred_df.estimate_values))**2))

Чтобы преобразовать это в метрику точности c, вы правильно находите минимальные / максимальные значения, но вы не должны вычитать на максимальное значение; вы должны сначала вычесть минимальное значение, а затем разделить его на разницу между максимальным и минимальным значениями, то есть нормализацию минимального и максимального значений. Это даст значения в диапазоне [0, 1]. Минимальное значение RMSE равно 0, а максимальное значение - 5 (ваш подход в лучшем / худшем случае это оправдывает). Тогда (RMSE - 0) / (5-0) = RMSE / 5 является метрикой точности c: acc = RMSE / 5

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