Как рассчитать MAPE в Python
Средняя абсолютная процентная ошибка (MAPE) обычно используется для измерения прогностической точности моделей. Он рассчитывается как:
MAPE = (1/n) * Σ(|фактическое значение – прогноз| / |фактическое значение|) * 100
куда:
- Σ – символ, означающий «сумма»
- n – размер выборки
- фактический – фактическое значение данных
- предсказание – предсказанное значение данных
MAPE обычно используется, потому что его легко интерпретировать и легко объяснить. Например, значение MAPE, равное 11,5%, означает, что средняя разница между прогнозируемым значением и фактическим значением составляет 11,5%.
Чем ниже значение MAPE, тем лучше модель способна предсказывать значения. Например, модель с MAPE 5% более точна, чем модель с MAPE 10%.
Как рассчитать MAPE в Python
В Python нет встроенной функции для вычисления MAPE, но мы можем создать для этого простую функцию:
import numpy as np
def mape( actual , pred ):
actual, pred = np.array(actual), np.array(pred)
return np.mean(np.abs((actual - pred) / actual)) \* 100
Затем мы можем использовать эту функцию для вычисления MAPE для двух массивов: одного, содержащего фактические значения данных, и другого, содержащего прогнозируемые значения данных.
actual = [12, 13, 14, 15, 15,22, 27]
pred = [11, 13, 14, 14, 15, 16, 18]
mape(actual, pred)
10.8009
Из результатов видно, что средняя абсолютная процентная ошибка для этой модели составляет 10,8009%.Другими словами, средняя разница между прогнозируемым значением и фактическим значением составляет 10,8009%.
Предостережения по использованию MAPE
Хотя MAPE легко рассчитать и интерпретировать, его использование имеет два потенциальных недостатка:
1. Поскольку формула для расчета абсолютной процентной ошибки |фактическое предсказание| / |фактическое| это означает, что MAPE будет неопределенным, если какое-либо из фактических значений равно нулю.
2. MAPE не следует использовать с данными небольшого объема. Например, если фактический спрос на какой-либо товар равен 2, а прогноз равен 1, значение абсолютной процентной ошибки будет |2-1| / |2| = 50%, что создает впечатление, что ошибка прогноза довольно высока, несмотря на то, что прогноз отличается всего на одну единицу.