Средняя логарифмическая ошибка

Для того чтобы модель линейной регрессии можно было применять на практике необходимо сначала оценить её качество. Для этих целей предложен ряд показателей, каждый из которых предназначен для использования в различных ситуациях и имеет свои особенности применения (линейные и нелинейные, устойчивые к аномалиям, абсолютные и относительные, и т.д.). Корректный выбор меры для оценки качества модели является одним из важных факторов успеха в решении задач анализа данных.

«Хорошая» аналитическая модель должна удовлетворять двум, зачастую противоречивым, требованиям — как можно лучше соответствовать данным и при этом быть удобной для интерпретации пользователем. Действительно, повышение соответствия модели данным как правило связано с её усложнением (в случае регрессии — увеличением числа входных переменных модели). А чем сложнее модель, тем ниже её интерпретируемость.

Поэтому при выборе между простой и сложной моделью последняя должна значимо увеличивать соответствие модели данным чтобы оправдать рост сложности и соответствующее снижение интерпретируемости. Если это условие не выполняется, то следует выбрать более простую модель.

Таким образом, чтобы оценить, насколько повышение сложности модели значимо увеличивает её точность, необходимо использовать аппарат оценки качества регрессионных моделей. Он включает в себя следующие меры:

  • Среднеквадратичная ошибка (MSE).
  • Корень из среднеквадратичной ошибки (RMSE).
  • Среднеквадратичная ошибка в процентах (MSPE).
  • Средняя абсолютная ошибка (MAE).
  • Средняя абсолютная ошибка в процентах (MAPE).
  • Cимметричная средняя абсолютная процентная ошибка (SMAPE).
  • Средняя абсолютная масштабированная ошибка (MASE)
  • Средняя относительная ошибка (MRE).
  • Среднеквадратичная логарифмическая ошибка (RMSLE).
  • Коэффициент детерминации R-квадрат.
  • Скорректированный коэффициент детеминации.

Прежде чем перейти к изучению метрик качества, введём некоторые базовые понятия, которые нам в этом помогут. Для этого рассмотрим рисунок.

Рисунок 1. Линейная регрессия

Наклонная прямая представляет собой линию регрессии с переменной, на которой расположены точки, соответствующие предсказанным значениям выходной переменной \widehat{y} (кружки синего цвета). Оранжевые кружки представляют фактические (наблюдаемые) значения y . Расстояния между ними и линией регрессии — это ошибка предсказания модели y-\widehat{y} (невязка, остатки). Именно с её использованием вычисляются все приведённые в статье меры качества.

Горизонтальная линия представляет собой модель простого среднего, где коэффициент при независимой переменной x равен нулю, и остаётся только свободный член b, который становится равным среднему арифметическому фактических значений выходной переменной, т.е. b=\overline{y}. Очевидно, что такая модель для любого значения входной переменной будет выдавать одно и то же значение выходной — \overline{y}.

В линейной регрессии такая модель рассматривается как «бесполезная», хуже которой работает только «случайный угадыватель». Однако, она используется для оценки, насколько дисперсия фактических значений y относительно линии среднего, больше, чем относительно линии регрессии с переменной, т.е. насколько модель с переменной лучше «бесполезной».

MSE

Среднеквадратичная ошибка (Mean Squared Error) применяется в случаях, когда требуется подчеркнуть большие ошибки и выбрать модель, которая дает меньше именно больших ошибок. Большие значения ошибок становятся заметнее за счет квадратичной зависимости.

Действительно, допустим модель допустила на двух примерах ошибки 5 и 10. В абсолютном выражении они отличаются в два раза, но если их возвести в квадрат, получив 25 и 100 соответственно, то отличие будет уже в четыре раза. Таким образом модель, которая обеспечивает меньшее значение MSE допускает меньше именно больших ошибок.

MSE рассчитывается по формуле:

MSE=\frac{1}{n}\sum\limits_{i=1}^{n}(y_{i}-\widehat{y}_{i})^{2},

где n — количество наблюдений по которым строится модель и количество прогнозов, y_{i} — фактические значение зависимой переменной для i-го наблюдения, \widehat{y}_{i} — значение зависимой переменной, предсказанное моделью.

Таким образом, можно сделать вывод, что MSE настроена на отражение влияния именно больших ошибок на качество модели.

Недостатком использования MSE является то, что если на одном или нескольких неудачных примерах, возможно, содержащих аномальные значения будет допущена значительная ошибка, то возведение в квадрат приведёт к ложному выводу, что вся модель работает плохо. С другой стороны, если модель даст небольшие ошибки на большом числе примеров, то может возникнуть обратный эффект — недооценка слабости модели.

RMSE

Корень из среднеквадратичной ошибки (Root Mean Squared Error) вычисляется просто как квадратный корень из MSE:

RMSE=\sqrt{\frac{1}{n}\sum\limits_{i=1}^{n}(y_{i}-\widehat{y_{i}})^{2}}

MSE и RMSE могут минимизироваться с помощью одного и того же функционала, поскольку квадратный корень является неубывающей функцией. Например, если у нас есть два набора результатов работы модели, A и B, и MSE для A больше, чем MSE для B, то мы можем быть уверены, что RMSE для A больше RMSE для B. Справедливо и обратное: если MSE(A)<MSE(B), то и RMSE(A)<RMSE(B).

Следовательно, сравнение моделей с помощью RMSE даст такой же результат, что и для MSE. Однако с MSE работать несколько проще, поэтому она более популярна у аналитиков. Кроме этого, имеется небольшая разница между этими двумя ошибками при оптимизации с использованием градиента:

\frac{\partial RMSE}{\partial \widehat{y}_{i}}=\frac{1}{2\sqrt{MSE}}\frac{\partial MSE}{\partial \widehat{y}_{i}}

Это означает, что перемещение по градиенту MSE эквивалентно перемещению по градиенту RMSE, но с другой скоростью, и скорость зависит от самой оценки MSE. Таким образом, хотя RMSE и MSE близки с точки зрения оценки моделей, они не являются взаимозаменяемыми при использовании градиента для оптимизации.

Влияние каждой ошибки на RMSE пропорционально величине квадрата ошибки. Поэтому большие ошибки оказывают непропорционально большое влияние на RMSE. Следовательно, RMSE можно считать чувствительной к аномальным значениям.

MSPE

Среднеквадратичная ошибка в процентах (Mean Squared Percentage Error) представляет собой относительную ошибку, где разность между наблюдаемым и фактическим значениями делится на наблюдаемое значение и выражается в процентах:

MSPE=\frac{100}{n}\sum\limits_{i=1}^{n}\left ( \frac{y_{i}-\widehat{y}_{i}}{y_{i}} \right )^{2}

Проблемой при использовании MSPE является то, что, если наблюдаемое значение выходной переменной равно 0, значение ошибки становится неопределённым.

MSPE можно рассматривать как взвешенную версию MSE, где вес обратно пропорционален квадрату наблюдаемого значения. Таким образом, при возрастании наблюдаемых значений ошибка имеет тенденцию уменьшаться.

MAE

Cредняя абсолютная ошибка (Mean Absolute Error) вычисляется следующим образом:

MAE=\frac{1}{n}\sum\limits_{i=1}^{n}\left | y_{i}-\widehat{y}_{i} \right |

Т.е. MAE рассчитывается как среднее абсолютных разностей между наблюдаемым и предсказанным значениями. В отличие от MSE и RMSE она является линейной оценкой, а это значит, что все ошибки в среднем взвешены одинаково. Например, разница между 0 и 10 будет вдвое больше разницы между 0 и 5. Для MSE и RMSE, как отмечено выше, это не так.

Поэтому MAE широко используется, например, в финансовой сфере, где ошибка в 10 долларов должна интерпретироваться как в два раза худшая, чем ошибка в 5 долларов.

MAPE

Средняя абсолютная процентная ошибка (Mean Absolute Percentage Error) вычисляется следующим образом:

MAPE=\frac{100}{n}\sum\limits_{i=1}^{n}\frac{\left | y_{i}-\widehat{y_{i}} \right |}{\left | y_{i} \right |}

Эта ошибка не имеет размерности и очень проста в интерпретации. Её можно выражать как в долях, так и в процентах. Если получилось, например, что MAPE=11.4, то это говорит о том, что ошибка составила 11.4% от фактического значения.

SMAPE

Cимметричная средняя абсолютная процентная ошибка (Symmetric Mean Absolute Percentage Error) — это мера точности, основанная на процентных (или относительных) ошибках. Обычно определяется следующим образом:

SMAPE=\frac{100}{n}\sum\limits_{i=1}^{n}\frac{\left | y_{i}-\widehat{y_{i}} \right |}{(\left | y_{i} \right |+\left | \widehat{y}_{i} \right |)/2}

Т.е. абсолютная разность между наблюдаемым и предсказанным значениями делится на полусумму их модулей. В отличие от обычной MAPE, симметричная имеет ограничение на диапазон значений. В приведённой формуле он составляет от 0 до 200%. Однако, поскольку диапазон от 0 до 100% гораздо удобнее интерпретировать, часто используют формулу, где отсутствует деление знаменателя на 2.

Одной из возможных проблем SMAPE является неполная симметрия, поскольку в разных диапазонах ошибка вычисляется неодинаково. Это иллюстрируется следующим примером: если y_{i}=100 и \widehat{y}_{i}=110, то SMAPE=4.76, а если y_{i}=100 и \widehat{y}_{i}=90, то SMAPE=5.26.

Ограничение SMAPE заключается в том, что, если наблюдаемое или предсказанное значение равно 0, ошибка резко возрастет до верхнего предела (200% или 100%).

MASE

Средняя абсолютная масштабированная ошибка (Mean absolute scaled error) — это показатель, который позволяет сравнивать две модели. Если поместить MAE для новой модели в числитель, а MAE для исходной модели в знаменатель, то полученное отношение и будет равно MASE. Если значение MASE меньше 1, то новая модель работает лучше, если MASE равно 1, то модели работают одинаково, а если значение MASE больше 1, то исходная модель работает лучше, чем новая модель. Формула для расчета MASE имеет вид:

MASE=\frac{MAE_{i}}{MAE_{j}}

MASE симметрична и устойчива к выбросам.

MRE

Средняя относительная ошибка (Mean Relative Error) вычисляется по формуле:

MRE=\frac{1}{n}\sum\limits_{i=1}^{n}\frac{\left | y_{i}-\widehat{y}_{i}\right |}{\left | y_{i} \right |}

Несложно увидеть, что данная мера показывает величину абсолютной ошибки относительно фактического значения выходной переменной (поэтому иногда эту ошибку называют также средней относительной абсолютной ошибкой, MRAE). Действительно, если значение абсолютной ошибки, скажем, равно 10, то сложно сказать много это или мало. Например, относительно значения выходной переменной, равного 20, это составляет 50%, что достаточно много. Однако относительно значения выходной переменной, равного 100, это будет уже 10%, что является вполне нормальным результатом.

Очевидно, что при вычислении MRE нельзя применять наблюдения, в которых y_{i}=0.

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

RMSLE

Среднеквадратичная логарифмическая ошибка (Root Mean Squared Logarithmic Error) представляет собой RMSE, вычисленную в логарифмическом масштабе:

RMSLE=\sqrt{\frac{1}{n}\sum\limits_{i=1}^{n}(log(\widehat{y}_{i}+1)-log{(y_{i}+1}))^{2}}

Константы, равные 1, добавляемые в скобках, необходимы чтобы не допустить обращения в 0 выражения под логарифмом, поскольку логарифм нуля не существует.

Известно, что логарифмирование приводит к сжатию исходного диапазона изменения значений переменной. Поэтому применение RMSLE целесообразно, если предсказанное и фактическое значения выходной переменной различаются на порядок и больше.

R-квадрат

Перечисленные выше ошибки не так просто интерпретировать. Действительно, просто зная значение средней абсолютной ошибки, скажем, равное 10, мы сразу не можем сказать хорошая это ошибка или плохая, и что нужно сделать чтобы улучшить модель.

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

Именно такой мерой и является коэффициент детерминации (Coefficient of determination), который показывает долю дисперсии зависимой переменной, объяснённой с помощью регрессионной модели. Наиболее общей формулой для вычисления коэффициента детерминации является следующая:

R^{2}=1-\frac{\sum\limits_{i=1}^{n}(\widehat{y}_{i}-y_{i})^{2}}{\sum\limits_{i=1}^{n}({\overline{y}}_{i}-y_{i})^{2}}

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

Главным преимуществом коэффициента детерминации перед мерами, основанными на ошибках, является его инвариантность к масштабу данных. Кроме того, он всегда изменяется в диапазоне от −∞ до 1. При этом значения близкие к 1 указывают на высокую степень соответствия модели данным. Очевидно, что это имеет место, когда отношение в формуле стремится к 0, т.е. ошибка модели с переменными намного меньше ошибки модели с константой. R^{2}=0 показывает, что между независимой и зависимой переменными модели имеет место функциональная зависимость.

Когда значение коэффициента близко к 0 (т.е. ошибка модели с переменными примерно равна ошибке модели только с константой), это указывает на низкое соответствие модели данным, когда модель с переменными работает не лучше модели с константой.

Кроме этого, бывают ситуации, когда коэффициент R^{2} принимает отрицательные значения (обычно небольшие). Это произойдёт, если ошибка модели среднего становится меньше ошибки модели с переменной. В этом случае оказывается, что добавление в модель с константой некоторой переменной только ухудшает её (т.е. регрессионная модель с переменной работает хуже, чем предсказание с помощью простой средней).

На практике используют следующую шкалу оценок. Модель, для которой R^{2}>0.5, является удовлетворительной. Если R^{2}>0.8, то модель рассматривается как очень хорошая. Значения, меньшие 0.5 говорят о том, что модель плохая.

Скорректированный R-квадрат

Основной проблемой при использовании коэффициента детерминации является то, что он увеличивается (или, по крайней мере, не уменьшается) при добавлении в модель новых переменных, даже если эти переменные никак не связаны с зависимой переменной.

В связи с этим возникают две проблемы. Первая заключается в том, что не все переменные, добавляемые в модель, могут значимо увеличивать её точность, но при этом всегда увеличивают её сложность. Вторая проблема — с помощью коэффициента детерминации нельзя сравнивать модели с разным числом переменных. Чтобы преодолеть эти проблемы используют альтернативные показатели, одним из которых является скорректированный коэффициент детерминации (Adjasted coefficient of determinftion).

Скорректированный коэффициент детерминации даёт возможность сравнивать модели с разным числом переменных так, чтобы их число не влияло на статистику R^{2}, и накладывает штраф за дополнительно включённые в модель переменные. Вычисляется по формуле:

R_{adj}^{2}=1-\frac{\sum\limits_{i=1}^{n}(\widehat{y}_{i}-y_{i})^{2}/(n-k)}{\sum\limits_{i=1}^{n}({\overline{y}}_{i}-y_{i})^{2}/(n-1)}

где n — число наблюдений, на основе которых строится модель, k — количество переменных в модели.

Скорректированный коэффициент детерминации всегда меньше единицы, но теоретически может принимать значения и меньше нуля только при очень малом значении обычного коэффициента детерминации и большом количестве переменных модели.

Сравнение метрик

Резюмируем преимущества и недостатки каждой приведённой метрики в следующей таблице:

Мера Сильные стороны Слабые стороны
MSE Позволяет подчеркнуть большие отклонения, простота вычисления. Имеет тенденцию занижать качество модели, чувствительна к выбросам. Сложность интерпретации из-за квадратичной зависимости.
RMSE Простота интерпретации, поскольку измеряется в тех же единицах, что и целевая переменная. Имеет тенденцию занижать качество модели, чувствительна к выбросам.
MSPE Нечувствительна к выбросам. Хорошо интерпретируема, поскольку имеет линейный характер. Поскольку вклад всех ошибок отдельных наблюдений взвешивается одинаково, не позволяет подчёркивать большие и малые ошибки.
MAPE Является безразмерной величиной, поэтому её интерпретация не зависит от предметной области. Нельзя использовать для наблюдений, в которых значения выходной переменной равны нулю.
SMAPE Позволяет корректно работать с предсказанными значениями независимо от того больше они фактического, или меньше. Приближение к нулю фактического или предсказанного значения приводит к резкому росту ошибки, поскольку в знаменателе присутствует как фактическое, так и предсказанное значения.
MASE Не зависит от масштаба данных, является симметричной: положительные и отрицательные отклонения от фактического значения учитываются одинаково. Устойчива к выбросам. Позволяет сравнивать модели. Сложность интерпретации.
MRE Позволяет оценить величину ошибки относительно значения целевой переменной. Неприменима для наблюдений с нулевым значением выходной переменной.
RMSLE Логарифмирование позволяет сделать величину ошибки более устойчивой, когда разность между фактическим и предсказанным значениями различается на порядок и выше Может быть затруднена интерпретация из-за нелинейности.
R-квадрат Универсальность, простота интерпретации. Возрастает даже при включении в модель бесполезных переменных. Плохо работает когда входные переменные зависимы.
R-квадрат скорр. Корректно отражает вклад каждой переменной в модель. Плохо работает, когда входные переменные зависимы.

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

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

Другие материалы по теме:

Отбор переменных в моделях линейной регрессии

Репрезентативность выборочных данных

Логистическая регрессия и ROC-анализ — математический аппарат

Среднеквадратическая ошибка (RMSE) и среднеквадратическая логарифмическая ошибка (RMSLE) — это методы, позволяющие определить разницу между значениями, предсказанными вашей моделью машинного обучения, и фактическими значениями.

Чтобы понять эти концепции и их различия, важно знать, что означает среднеквадратическая ошибка (MSE). MSE включает в себя как дисперсию, так и смещение предиктора. RMSE рассчитывается как квадратный корень из среднего квадрата разницы между прогнозируемыми и фактическими значениями. Он используется для оценки производительности регрессионной модели. Это мера того, насколько хорошо модель способна предсказывать целевую переменную, и она чувствительна к масштабу целевой переменной.

Примечание. Квадратный корень из дисперсии является стандартным отклонением.

RMSLE аналогичен RMSE, но рассчитывается с использованием логарифмической разницы между прогнозируемыми и фактическими значениями. Он используется для оценки производительности модели, когда целевая переменная искажена или имеет большой диапазон значений. Он менее чувствителен к масштабу целевой переменной по сравнению с RMSE. Итак, в основном, какие изменения вызывает дисперсия, которую вы измеряете? Я считаю, что RMSLE обычно используется, когда вы не хотите наказывать огромные различия в прогнозируемых и фактических значениях, когда и прогнозируемые, и истинные значения являются огромными числами.

  1. Если и предсказанные, и фактические значения малы: RMSE и RMSLE одинаковы.
  2. Если предсказанное или фактическое значение велико: RMSE > RMSLE
  3. Если и предсказанные, и фактические значения велики: RMSE > RMSLE (RMSLE становится практически незначительным)

Вот пример кода для вычисления RMSE и RMSLE в Python:

import numpy as np

def rmse(predictions, targets):
    """Calculate the root mean squared error between predictions and targets"""
    return np.sqrt(np.mean((predictions - targets) ** 2))

def rmsle(predictions, targets):
    """Calculate the root mean squared logarithmic error between predictions and targets"""
    return np.sqrt(np.mean((np.log(predictions + 1) - np.log(targets + 1)) ** 2))

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

predictions = [10, 20, 30, 40]
targets = [9, 19, 29, 39]

rmse_error = rmse(predictions, targets)
print(f'RMSE: {rmse_error:.4f}')

rmsle_error = rmsle(predictions, targets)
print(f'RMSLE: {rmsle_error:.4f}')

Это выведет следующее:

RMSE: 1.4142
RMSLE: 0.0177

Вот пример кода для расчета RMSE и RMSLE в Python, а также визуализации результатов и сравнения производительности двух разных моделей:

import numpy as np
import matplotlib.pyplot as plt

def rmse(predictions, targets):
    """Calculate the root mean squared error between predictions and targets"""
    return np.sqrt(np.mean((predictions - targets) ** 2))

def rmsle(predictions, targets):
    """Calculate the root mean squared logarithmic error between predictions and targets"""
    return np.sqrt(np.mean((np.log(predictions + 1) - np.log(targets + 1)) ** 2))

# Generate some example data
predictions_1 = np.random.normal(100, 10, 1000)
targets = np.random.normal(100, 10, 1000)
predictions_2 = np.random.normal(100, 5, 1000)

# Calculate the RMSE and RMSLE for both models
rmse_1 = rmse(predictions_1, targets)
rmse_2 = rmse(predictions_2, targets)
rmsle_1 = rmsle(predictions_1, targets)
rmsle_2 = rmsle(predictions_2, targets)

# Visualize the results
x = np.arange(2)
errors = [rmse_1, rmse_2]
plt.bar(x, errors)
plt.xticks(x, ['Model 1', 'Model 2'])
plt.ylabel('RMSE')
plt.title('RMSE Comparison')
plt.show()

errors = [rmsle_1, rmsle_2]
plt.bar(x, errors)
plt.xticks(x, ['Model 1', 'Model 2'])
plt.ylabel('RMSLE')
plt.title('RMSLE Comparison')
plt.show()

Этот код создаст две гистограммы, одну для RMSE и одну для RMSLE, сравнивая производительность двух моделей. Более низкое значение по оси Y указывает на лучшую модель.

Другой пример регрессионных моделей:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

# Generate some fake data for the plot
true = np.random.normal(loc=10, scale=2, size=100)
pred1 = true + np.random.normal(loc=0, scale=1, size=100)
pred2 = true + np.random.normal(loc=0, scale=3, size=100)

# Calculate the RMSE and RMSLE for each prediction
rmse1 = np.sqrt(np.mean((pred1 - true) ** 2))
rmsle1 = np.sqrt(np.mean((np.log(pred1 + 1) - np.log(true + 1)) ** 2))
rmse2 = np.sqrt(np.mean((pred2 - true) ** 2))
rmsle2 = np.sqrt(np.mean((np.log(pred2 + 1) - np.log(true + 1)) ** 2))

# Create a dataframe with the true values and the two predictions
df = pd.DataFrame({'true': true, 'pred1': pred1, 'pred2': pred2})

# Use seaborn to create a scatterplot with regression lines for each prediction
sns.lmplot(x='true', y='pred1', data=df, scatter_kws={'alpha': 0.5})
# Add text labels with the RMSE and RMSLE values for each prediction
plt.text(x=0, y=12, s='RMSE: {:.2f}\nRMSLE: {:.2f}'.format(rmse1, rmsle1), fontsize=12)

# Use seaborn to create a scatterplot with regression lines for each prediction
sns.lmplot(x='true', y='pred2', data=df, scatter_kws={'alpha': 0.5})
# Add text labels with the RMSE and RMSLE values for each prediction
plt.text(x=0, y=10, s='RMSE: {:.2f}\nRMSLE: {:.2f}'.format(rmse2, rmsle2), fontsize=12)

plt.show()

Этот код сгенерировал диаграмму рассеяния с двумя линиями регрессии, по одной для каждого прогноза. Значения RMSE и RMSLE для каждого прогноза отображаются в виде текстовых меток на графике.

Вы можете дополнительно настроить график, используя различные параметры, доступные в seaborn и matplotlib, такие как изменение цветов, маркеров и форматирование элементов графика.

Если вы найдете это полезным, не стесняйтесь поделиться им. Вы также можете оставить комментарий или связаться со мной по LinkedIn, если у вас есть какие-либо сомнения или вопросы.

Функция оценки регрессионной модели, которую можно использовать с sckit-learnИсходя из этого, я резюмирую различия и способы использования каждого из них. yi — истинное значение y, а полоса над ним — прогнозируемое значение.

Функция оценки производительности регрессионной модели

Среднеквадратичная ошибка (MSE, RMSE)

$$ \ text {MSE} (y, \ hat {y}) = \ frac {1} {n_ \ text {samples}} \ sum_ {i = 0} ^ {n_ \ text {samples} — 1} (y_i — \ Hat {y} _i (прогнозируемое значение)) ^ 2. $$

Среднеквадратичная ошибка (MSE: среднеквадратичная ошибка, RMSE: среднеквадратичная ошибка) корректирует модель, чтобы минимизировать среднюю сумму квадратов ошибок. RMSE извлекает квадратный корень после квадрата и выравнивает размер по оси y.

Функция оценки первого выбора.Сосредоточьтесь на больших ценностях(Чем больше значение, тем больше квадратная ошибка)Чувствителен к выбросам, но полезен во многих ситуациях, когда выбросы уменьшаются экспоненциально, например, при нормальном распределении.

Средняя абсолютная ошибка (MAE)

$$ \ text {MAE} (y, \ hat {y}) = \ frac {1} {n_ {\ text {samples}}} \ sum_ {i = 0} ^ {n_ {\ text {samples}} — 1} \ left | y_i — \ hat {y} _i \ right |. $$

Средняя абсолютная ошибка (MAE) регулирует модель, чтобы минимизировать среднюю сумму абсолютных значений ошибки.

От MSEНадежный метод оценки, устойчивый к выбросам.Напротив, изучение данных с сильно различающимися значениями является слабым.Однако сохраняется тенденция подчеркивать большие ценности.Для наборов данных, которые имеют большое влияние на выбросы.

Среднеквадратичная логарифмическая ошибка

$$ \ text {MSLE} (y, \ hat {y}) = \ frac {1} {n_ \ text {samples}} \ sum_ {i = 0} ^ {n_ \ text {samples} — 1} (\ log_e (1 + y_i) — \ log_e (1 + \ hat {y} _i)) ^ 2. $$

Среднеквадратичная логарифмическая ошибка — это среднее значение суммы квадратов логарифмической ошибки y.Он применяется к задачам, где y увеличивается экспоненциально, например к населению и годовым продажам продукции.За недооценку наказание больше, чем за переоценку.

Средняя абсолютная ошибка (MedAE)

$$ R ^ 2 (y, \ hat {y}) = 1 — \ frac {\ sum_ {i = 1} ^ {n} (y_i — \ hat {y} _i) ^ 2} {\ sum_ {i = 1} ^ {n} (y_i — \ bar {y}) ^ 2} $$

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

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

Средняя процентная ошибка (MPE)

{\ text {MPE}} = {\ frac {100 \%} {n}} \ sum _ {{t = 1}} ^ {n} {\ frac {a_ {t} -f_ {t}} {a_ {t}}}

Средняя процентная ошибка работает, чтобы минимизировать средний процент (%: процент), который отклоняется от измеренного значения. Не реализовано в sckit-learn.Это выглядит хорошо, потому что значения в любой области обрабатываются как ошибки одного и того же веса независимо от их размера, но при практическом использовании возникают некоторые проблемы (ошибка возникает, когда y равен 0 или очень маленькому значению). Тогда% ошибки расходится и т. д .:Из английской википедии)

Оценка R2 (коэффициент детерминации)

Корреляция между истинными и прогнозируемыми значениямиУказывает, что соответствует подгонке графика yy.Если есть точное совпадение, оценка R2 будет 2. Поскольку оценка RXNUMX зависит от набора данныхR² нельзя сравнивать между разными наборами данных.

ま と め

в основномОценка R2 и среднеквадратичная ошибка (MSE)Оценка R2 и средняя абсолютная ошибка (MAE)Лучше всего использовать вместе.
Если вы хотите выделить большие значения и хорошо изучить выбросы,СКО.
Если вы хотите уменьшить количество выбросов,ДЕД.

Если целью прогноза является значение, которое изменяется экспоненциальноСреднеквадратичная логарифмическая ошибкаЕсть, но с этим также можно справиться, логарифмируя y.

Если у вас небольшой объем данных или вы не хотите исключать выбросы, которые имеют большое влияние,Средняя абсолютная ошибка (MedAE)Используется.


  Перевод


  Ссылка на автора

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

  • Средняя квадратическая ошибка (MSE)
  • Среднеквадратическая ошибка (RMSE)
  • Средняя абсолютная ошибка (MAE)
  • R в квадрате (R²)
  • Скорректированный R квадрат (R²)
  • Средняя квадратная процентная ошибка (MSPE)
  • Средняя абсолютная ошибка в процентах (MAPE)
  • Среднеквадратичная логарифмическая ошибка (RMSLE)

Остров Андрос в Греции

Скорректированный R квадрат (R²)

R² показывает, насколько хорошо термины (точки данных) соответствуют кривой или линии. Скорректированный R2 также показывает, насколько хорошо термины соответствуют кривой или линии, но корректирует количество терминов в модели. Если вы добавляете больше и большебесполезный переменные для модели, скорректированный R в квадрате будет уменьшаться. Если вы добавите большеполезнымПеременные, скорректированные R в квадрате будут увеличиваться. Скорректированная R² всегда будет меньше или равна R².

где n — общее количество наблюдений, а k — количество независимых регрессоров, то есть количество переменных в вашей модели, исключая константу.

Основное различие между Скорректированным R² и R²

И R², и скорректированный R² дают вам представление о том, сколько точек данных попадает в линию уравнение регрессии, Однако R² предполагает, что каждая переменная объясняетизменение в зависимая переменная,Скорректированное R² говорит вам процент вариации, объясняемый только независимые переменные это на самом деле влияет на зависимую переменную.

В действительности, скорректированное R² накажет вас за добавление независимых переменных (K в уравнении), которые не соответствуют модели. Зачем? В регрессионный анализ может быть заманчиво добавить больше данных к данным, как вы о них думаете. Некоторые из этих переменных будут значимыми, но вы не можете быть уверены, что значение случайно. Скорректированное R² компенсирует это тем, что штрафует вас за эти дополнительные переменные.

Проблемы скоторые исправлены с корректировкой

  1. R² увеличивается с каждым предиктором, добавленным в модель. Поскольку R² всегда увеличивается и никогда не уменьшается, может показаться, что он лучше подходит для большего количества терминов, которые вы добавляете в модель. Это может вводить в заблуждение.
  2. Аналогичным образом, если в вашей модели слишком много терминов и слишком много многочленов высокого порядка, вы можете столкнуться с проблемой чрезмерного соответствия данных. Когда вы перебираете данные, неверно высокое значение R² может привести к неверным прогнозам.

Все метрики, которые мы исследовали до этого момента, предполагают, что каждый прогноз предоставляет одинаково точную информацию об изменении ошибки. MSPE и MAPE не следуют этому предположению.

Среднеквадратичная ошибка в процентах (MSPE)

Давайте подумаем о следующей проблеме. Наша цель — предсказать, сколько ноутбуков продадут два магазина?

  • Магазин 1: прогнозируемый 9, проданный 10, MSE = 1
  • Магазин 2: предсказано 999, продано 1000, MSE = 1

Или даже,

  • Магазин 1: прогнозируемый 9, проданный 10, MSE = 1
  • Магазин 2: прогнозируемый 900, проданный 1000, MSE = 10000

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

Относительная ошибка предпочтения может быть выражена с помощью среднеквадратичной ошибки. Для каждого объекта абсолютная ошибка делится на целевое значение, давая относительную ошибку.

Итак, MSPE можно рассматривать как взвешенную версию MSE. Вес его образца обратно пропорционален целевому квадрату. Это означает, что стоимость, которую мы платим за фиксированную абсолютную ошибку, зависит от целевого значения, и когда цель увеличивается, мы платим меньше.

Поскольку MSPE считается взвешенной версией MSEоптимальные постоянные прогнозы для MSPEоказываетсясредневзвешенное значение целевых значений.

Средняя абсолютная ошибка в процентах (MAPE)

Предпочтение относительной ошибки также может быть выражено с помощью средней абсолютной ошибки процента, MAPE. Для каждого объекта абсолютная ошибка делится на целевое значение, что дает относительную ошибку. MAPE также можно рассматривать как взвешенную версию MAE.

Для MAPE вес ее выборки обратно пропорционален ее цели. Но так же, как и в MSPE, стоимость, которую мы платим за фиксированную абсолютную ошибку, зависит от целевого значения. И когда цель увеличивается, мы платим меньше.

Поскольку MAPE рассматривается как взвешенная версия MAEоптимальные постоянные прогнозы для MAPEоказываетсявзвешенная медиана целевых значений.

Обратите внимание, что если бы выброс имел очень и очень маленькое значение, MAPE был бы очень смещен к нему, так как этот выброс будет иметь наибольший вес

Кривые ошибок

Среднеквадратичная логарифмическая ошибка (RMSLE)

Это просто RMSE, рассчитанная в логарифмическом масштабе. Фактически, чтобы вычислить его, мы берем логарифм наших прогнозов и целевых значений и вычисляем среднеквадратичное отклонение между ними. Цели обычно неотрицательны, но могут быть равны 0, а логарифм 0 не определен. Вот почему константа обычно добавляется к прогнозам и целям перед применением логарифмической операции. Эта константа также может быть выбрана, чтобы отличаться от одной в зависимости от проблемы.

Таким образом, этот показатель обычно используется в той же ситуации, что и MSPE и MAPE, поскольку он также несет в себе относительные ошибки в большей степени, чем абсолютные.

Кривая ошибки для RMSLE

Заметкаасимметрия кривых ошибок. С точки зрения RMSLE, всегда лучше прогнозировать больше, чем та же сумма, меньше цели. Таким образом, мы заключаем, что RMSLE штрафует за заниженную оценку, превышающую завышенную оценку.

RMSLE может быть рассчитан без рут-операции, но более широко используется версия с правами root.

Теперь перейдем к вопросу о лучшей константе. (Вспомните связь между RMSLE и RMSE). Сначала мы находим лучшую константу для RMSE в лог-пространстве, которая будет средневзвешенным значением в лог-пространстве. И после этого нам нужно вернуться из лог-пространства к обычному с обратным преобразованием.

пример

Оптимальные константы для различных метрик оценки регрессии

Замечания:

  • Оптимальная константа для RMSLE оказывается равной 9,1, что выше, чем константы для MAPE и MSPE.
  • MSE весьма склонен к огромной ценности нашего набора данных, в то время как MAE гораздо менее предвзят.
  • MSPE и MAPE смещены в сторону меньших целей, потому что они назначают больший вес объекту с маленькими целями.
  • RMSLE часто считается лучшим показателем, чем MAPE, так как он менее смещен в сторону небольших целей, но работает с относительными ошибками.

Взять домой сообщение

Я настоятельно рекомендую вам подождать некоторое время, прежде чем начинать проект, и подумать о соответствующей метрике, это определенно вам очень поможет. Если вам понравилась эта статья, вы также можете прочитать Часть 1,

Спасибо за чтение, и я с нетерпением жду, чтобы услышать ваши вопросы :)
Оставайтесь с нами и счастливого машинного обучения.

P.SЕсли вы хотите больше узнать о мире машинного обучения, вы также можете подписаться на меня в Instagram, напишите мне напрямую или найди меня на linkedin, Я хотел бы услышать от вас.

Что такое функция потерь? Это метод оценки того, насколько хорошо ваш алгоритм моделирует набор данных. Если Loss больше , значит, вам нужно улучшить свой алгоритм. Итак, мы можем сказать, что функция потерь является основной частью любого алгоритма.

Прежде чем выбрать функцию потерь, подходящую для вашей модели, вы должны понять постановку задачи, данные, с которыми вы имеете дело, и различные типы функций потерь, которые существуют! Очевидно, вы можете настроить свою собственную функцию потерь.

Давайте рассмотрим некоторые из предопределенных функций потерь. В целом существует 2 категории: регрессионная потеря и классификационная потеря. Я думаю, важно понять Что? Почему? и Как? каждой потери.

Регрессионные потери

Среднеквадратическая ошибка (MSE)/среднеквадратичная ошибка (RMSE)

Какие?

  1. В статистике среднеквадратическая ошибка (MSE) определяется как среднее или среднее квадрата разницы между фактическими и расчетными значениями.

2. Порядок единицы MSE выше, чем единица ошибки, поскольку ошибка возводится в квадрат. Чтобы получить тот же порядок единиц, много раз берется квадратный корень из MSE. Это называется среднеквадратичной ошибкой (RMSE).
RMSE = SQRT(MSE)

Почему?

  1. Результат всегда положительный. Таким образом, вы всегда будете стремиться минимизировать его, независимо от знаков в прогнозируемом и фактическом значениях.
  2. Возведение в квадрат означает, что большие ошибки приводят к большему количеству ошибок, чем меньшие ошибки, а это означает, что модель наказывается за большие ошибки.
  3. Почему в квадрате? Это связано с тем, что в противном случае прогнозируемое значение иногда будет меньше, а иногда больше фактического значения, что может привести к отрицательной и положительной разнице между ними, что затем может привести к неправильному суммированию, а иногда и к 0, в худшем случае! что может заставить нас поверить, что наша модель идеальна!

Как?

  1. Можно использовать в Keras, указав «mse» или «mean_squared_error» в качестве функции потерь при компиляции модели.
model.compile(loss=’mean_squared_error’) model.compile(loss=’root_mean_squared_error’)

2. Из модуля Sklearn Python

from sklearn.metrics import mean_squared_error
mean_squared_error(y_true, y_pred)
mean_squared_error(y_true, y_pred, squared=False) ; if squared=False it returns RMSE instead of MSE

3. Использование модуля Numpy

mse = np.square(y_true — y_pred).mean(axis=0)
rmse = np.sqrt(mse)

Средняя абсолютная ошибка (MAE)

Какие?

  1. Средняя абсолютная ошибка (MAE) определяется как среднее или среднее значение абсолютной разницы между фактическими и расчетными значениями.

Почему?

  1. Он одинаково обрабатывает большие и маленькие ошибки. Не очень чувствителен к выбросам, в отличие от потери MSE.

Как?

  1. Можно использовать в Keras, указав «mean_absolute_error» в качестве функции потерь при компиляции модели.
model.compile(loss=’mean_absolute_error’)

2. Из модуля Sklearn Python

from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_true, y_pred)

3. Использование модуля Numpy

mae = np.absolute(y_true — y_pred).mean(axis=0)

Среднеквадратическая логарифмическая ошибка (MSLE)/RMSLE

Какие?

  1. Сначала вычислите натуральный логарифм каждого из прогнозируемых значений и фактических значений, затем вычислите среднеквадратичную ошибку. Это называется среднеквадратичной логарифмической ошибкой или MSLE.

Почему?

  1. Его интересует только относительная разница между фактическим и прогнозируемым значением или, другими словами, процентная разница между ними.
  2. Это означает, что он будет обрабатывать небольшие различия между небольшими фактическими и прогнозируемыми значениями примерно так же, как большие различия между большими фактическими и прогнозируемыми значениями. Так, например, если
    Actual = 30, Predicted = 20 ; тогда MSLE = 0,02861 и
    Факт = 30000 , Прогноз = 20000; тогда MSLE = 0,03100, но здесь MSE = 100000000
  3. Это полезно, когда диапазон целевых значений велик, т.е. может варьироваться от 10 до 10000 и даже больше.

Как?

  1. Можно использовать в Keras, указав «mean_squared_logarithmic_error» в качестве функции потерь при компиляции модели.
model.compile(loss=’mean_squared_logarithmic_error’)

2. Использование модуля Numpy

msle = np.sum(np.square(np.log(y_true+1) -np.log(y_pred+1))).mean(axis=0)
and simliarly we can have, rmsle = np.sqrt(msle)

Хубер Лосс

Какие?

  1. Потеря Хубера = комбинация MSE и MAE

Почему?

  1. Он предлагает лучшее из обоих миров, уравновешивая MSE и MAE вместе. Это квадратично (MSE), когда ошибка мала, иначе MAE.
  2. Использование MAE для больших значений потерь уменьшает вес, который мы придаем выбросам, так что мы по-прежнему получаем всестороннюю модель. В то же время мы используем MSE для меньших значений потерь, чтобы поддерживать квадратичную функцию вблизи центра.
  3. Используйте потерю Хьюбера каждый раз, когда чувствуете, что вам нужен баланс между приданием выбросам некоторого веса, но не слишком большого. В случаях, когда выбросы очень важны для вас, используйте MSE! В тех случаях, когда вас совершенно не волнуют выбросы, используйте MAE!

Как?

  1. Можно использовать в Keras, указав «huber_loss» в качестве функции потерь при компиляции модели.
model.compile(loss=’huber_loss’) or model.compile(loss=tf.keras.losses.Huber())

2. Использование Склеарна

from sklearn.linear_model import HuberRegressor
huber = HuberRegressor().fit(X, y)

3. Использование Tensorflow

def huber_loss_fn(y_true, y_pred, delta=1):
 error = y_true — y_pred
 is_small_error = tf.abs(error) < delta
 squared_loss = tf.square(error) / 2
 linear_loss = delta * (tf.abs(error) — delta/2)
 return tf.where(is_small_error, squared_loss, linear_loss)

Классификационные потери

Бинарная перекрестная потеря энтропии

Какие?

В двоичной классификации мы предсказываем вероятность того, что X будет в классе 1.

Когда наблюдение принадлежит классу 1, первая часть формулы становится активной, а вторая часть исчезает, и наоборот, в случае, когда фактический класс наблюдения равен 0.

Почему?

  1. Он используется с двоичной классификацией, где целевые значения находятся в наборе {0, 1}. Затем он вычисляет оценку, которая штрафует вероятности на основе расстояния от ожидаемого значения. Это означает, насколько близко или далеко от фактического значения.

Как?

  1. В Керасе
model.compile(loss='binary_crossentropy')
model.compile(loss=tf.keras.losses.BinaryCrossentropy(from_logits=True))

2. В Склеарне

from sklearn.metrics import log_loss
log_loss(y_true, y_pred)

3. В Нампи

loss = -(y_true*np.log(y_pred)+(1-y_true)*np.log(1-y_pred)).mean()

Потеря шарнира

Какие?

Hinge Loss используется, в частности, для моделей SVM или там, где целевые значения находятся в наборе {-1, 1}.

hinge_loss = max(0, 1-y_true*y_pred)

Почему?

  1. В SVM у нас есть 2 класса -1 и 1, и мы пытаемся смоделировать границу решения. Таким образом, предсказанные значения показывают расстояние от границы решения.
  2. В таком случае, если класс прогнозируется как -1,6, а фактический — -1. Это означает, что он находится далеко от границы решения и, следовательно, будет иметь 0 потерь. Чем ближе он к границе, тем больше будет его потеря на шарнире, и она будет продолжать увеличиваться, если он пойдет не с той стороны границы.

Как?

  1. В Керасе
model.compile(loss='hinge')

2. В Склеарне

from sklearn.metrics import hinge_loss
hinge_loss(y_true, y_pred)

3. В Нампи

loss = np.max([0.0, 1 - y_true*y_pred])

Многоклассовая кросс-энтропийная потеря/категориальная кросс-энтропия

Какие?

Это функция потерь по умолчанию, используемая в многоклассовой классификации.

Почему?

  1. Он используется, когда у нас есть несколько классов вместо двух, и вместо расчета двоичных потерь для каждой метки мы вычисляем категориальные потери для всех классов.

Как?

  1. В Керасе
model.compile(loss='categorical_crossentropy')

2. В Склеарне

sklearn.metrics.log_loss(y_true, y_pred, labels=[all_labels])

Разреженные мультиклассовые кросс-энтропийные потери

Какие?

И категориальная кросс-энтропия, и разреженная категориальная кросс-энтропия имеют одну и ту же функцию потерь, как определено в приведенном выше уравнении. Единственная разница между ними заключается в том, как определяются метки истинности. … В разреженной категориальной кросс-энтропии метки истинности закодированы целым числом, например, [1], [2] и [3] и т. д., тогда как в категориальной кросс-энтропии они закодированы горячим способом.

Почему?

  1. Он используется в тех случаях, когда имеется большое количество меток и их однократное кодирование вызовет только проблемы.

Как?

  1. В Керасе
model.compile(loss='sparse_categorical_crossentropy')

Понравилась статья? Поделить с друзьями:
  • Средняя квадратическая ошибка измерений это
  • Средняя квадратичная ошибка формула excel
  • Средняя ошибка выборки зависит от тест
  • Средняя квадратическая ошибка представления функции рядом фурье
  • Средняя квадратическая ошибка измерений формула