Является ли Total Error Mean адекватным показателем производительности для регрессионных моделей? - PullRequest
2 голосов
/ 30 марта 2019

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

Общая абсолютная ошибка Среднее = среднее (y_predicted) / среднее (y_true)) - 1

Где среднее значение (y_predicted) является средним значением всех прогнозов, а среднее значение (y_true) является средним значением всех истинных значений.

Я никогда не видел этот показательраньше он использовался в машинном обучении, и я убедил его добавить в качестве альтернативы среднее абсолютное процентное отклонение, но, несмотря на то, что моя модель работает лучше в отношении MAPE, некоторые области не справляются, когда мы смотрим на общее абсолютное абсолютное значение ошибки.

MyИнтуитивно понятно, что эта метрика неверна в отображении реальной точности, но я не могу понять, почему.

Является ли полная абсолютная ошибка средней метрикой производительности?Если нет, то почему?Если это так, то почему точность регрессионной модели возрастает с точки зрения MAPE, а не с точки зрения общей абсолютной абсолютной ошибки?

Заранее спасибо!

1 Ответ

2 голосов
/ 30 марта 2019

Я хотел бы предложить сообщить вашему боссу, что когда кто-то хочет ввести новую метрику, он / она должен продемонстрировать, почему она полезна поверх существующих, не другой наоборот (т.е. мы демонстрируем, почему это не так); Кстати, это точно стандартная процедура, когда кто-то действительно предлагает новую предложенную метрику в исследовательской работе, например недавнее предложение Максимальный информационный коэффициент (MIC) .

Тем не менее, нетрудно продемонстрировать на практике, что эта предложенная метрика является плохой с некоторыми фиктивными данными:

import numpy as np
from sklearn.metrics import mean_squared_error

# your proposed metric:
def taem(y_true, y_pred):
    return np.mean(y_true)/np.mean(y_pred)-1

# dummy true data:
y_true = np.array([0,1,2,3,4,5,6])

Теперь предположим, что у нас действительно потрясающая модель, которая прекрасно предсказывает, то есть y_pred1 = y_true; в этом случае и MSE, и ваш предложенный TAEM действительно будут 0:

y_pred1 = y_true # PERFECT predictions
mean_squared_error(y_true, y_pred1)
# 0.0
taem(y_true, y_pred1)
# 0.0

Пока все хорошо. Но давайте теперь рассмотрим вывод действительно плохой модели, которая предсказывает высокие значения, когда она должна была предсказать низкие, и наоборот; другими словами, рассмотрим другой набор прогнозов:

y_pred2 = np.array([6,5,4,3,2,1,0])

что на самом деле y_pred1 в обратном порядке. Теперь легко видеть, что и здесь у нас будет отличная оценка TAEM:

taem(y_true, y_pred2)
# 0.0

Хотя MSE, конечно, предупредил бы нас, что мы очень далеки от совершенных предсказаний:

mean_squared_error(y_true, y_pred2)
# 16.0

Нижняя строка : Любая метрика , которая игнорирует поэлементные различия в пользу только средних значений, страдает от аналогичных ограничений, а именно, принимает одинаковые значения для любой перестановки предсказаний, характеристика, которая крайне нежелательно для полезного показателя производительности.

...