MSE (от англ. Mean Squared Error, или среднеквадратичная ошибка) — это одна из самых распространённых метрик для оценки точности предсказательных моделей в машинном обучении и статистике. Она показывает, насколько в среднем предсказания модели отклоняются от реальных значений.
Общая формула среднеквадратичной ошибки (MSE):
MSE = (1/n) * Σ(y_i — ŷ_i)²
Где:

Формула MSE заключается в следующем: берётся каждое отклонение (ошибка) между прогнозом и фактом и возводится в квадрат (чтобы избавиться от отрицательных значений и усилить влияние крупных ошибок), суммируется по всем наблюдениям и делится на их количество.
Чем ниже значение MSE, тем точнее модель. Однако сама по себе MSE трудно интерпретируема, так как выражена в квадратах единиц целевой переменной (например, если вы прогнозируете цены в рублях, MSE будет в «рублях²»). Поэтому часто используют RMSE (корень из MSE), который возвращает ошибку в исходных единицах измерения.
MSE особенно чувствительна к выбросам, что делает её полезной, когда крупные ошибки критичны (например, в финансовых или промышленных прогнозах). В то же время, если выбросы не несут смысловой нагрузки, другие метрики (MAE, MAPE) могут быть предпочтительнее.
Рассмотрим задачу прогнозирования ежедневного спроса на товар в розничной сети. Модель машинного обучения предсказывает, сколько единиц товара будет продано в ближайшие дни. Для оценки качества прогнозов используется метрика MSE.
Имеются фактические данные о продажах за три дня и соответствующие прогнозные значения модели:
| День | Прогноз модели (ŷ) | Фактические продажи (y) | Ошибка (y — ŷ) | Квадрат ошибки |
|---|---|---|---|---|
| 1 | 100 шт. | 110 шт. | +10 шт. | 100 |
| 2 | 120 шт. | 115 шт. | –5 шт. | 25 |
| 3 | 90 шт. | 95 шт. | –5 шт. | 25 |
Расчет MSE:
Интерпретация полученного значения:
MSE = 50 представляет собой средний квадрат ошибки прогноза. Данная величина не имеет размерности исходных данных (штуки²), однако позволяет проводить сравнительный анализ различных моделей. Модель с меньшим значением MSE считается более точной, так как демонстрирует меньший разброс ошибок прогнозирования.
H3: Как обозначаются фактические значения (y_i) и предсказания (ŷ_i)
В математике и машинном обучении важно четко разделять реальность и наше предположение о ней. Для этого используются разные символы.
Факт (y_i). Это реальные данные. То, что случилось на самом деле. Индекс *i* означает порядковый номер наблюдения.
Пример: Вы прогнозировали продажи на 5 дней. В первый день продали 100 единиц товара. Это и есть y₁ = 100. Во второй день — 150 единиц (y₂ = 150). Это эталон, с которым мы сравниваем.
Прогноз (ŷ_i). Это значение, которое предсказала наша модель (или просто наше предположение). Символ называется «крышка» (hat) и указывает на то, что это оценка, а не точное значение.
Пример: Вы сказали, что в первый день продажи будут 90 единиц (ŷ₁ = 90). Во второй день — 140 единиц (ŷ₂ = 140).
Зачем нужны индексы? Индексы нужны, чтобы не запутаться. Мы не просто сравниваем «вообще всё со всем». Мы сравниваем прогноз на конкретный момент времени (день, клиента, товар) с тем, что произошло в этот же самый момент. То есть мы всегда работаем с парами (y₁ и ŷ₁), (y₂ и ŷ₂) и так далее.
Чтобы понять, что на самом деле делает MSE, забудьте на минуту про формулы и квадраты. Представьте обычную бытовую ситуацию. Представьте, что вы играете в дартс. Ваша цель — яблочко (центр мишени). Вы делаете три броска.
Вопрос: Какая попытка была «стабильнее» или «точнее» по сумме всех бросков?
Если бы мы считали просто сумму отклонений (не возводя в квадрат), то в попытке Б плюс и минус могли бы скомпенсироваться, и мы бы решили, что всё не так плохо. Но по факту мы знаем: попытка А хоть и не идеальна, но предсказуема, а попытка Б — катастрофа (один отличный бросок не спасает два ужасных).
MSE в этой аналогии работает как «строгий судья».
Он берет расстояние от каждого дротика до центра (ошибку) и... возводит его в квадрат. Маленький промах (дротик в 1 см от центра) превращается в 1² = 1 балл ошибки, это приемлемо. Большой промах (дротик в 10 см от центра) превращается в 10² = 100 баллов ошибки, это катастрофа. Зачем так делать? Чтобы увидеть сильные промахи.
В нашей аналогии с дротиками MSE скажет:
Именно это свойство MSE называется чувствительностью к выбросам. В реальных задачах анализа данных выбросы — это те самые «дротики, улетевшие в стену»: например, одна квартира-пентхаус на фоне типового жилья или одна аномальная транзакция среди обычных платежей. MSE реагирует на такие выбросы непропорционально сильно: даже один крупный промах модели может сделать итоговое значение метрики настолько большим, что оно перестанет отражать реальное качество прогнозов на основной массе данных. Поэтому, выбирая MSE, всегда нужно отдавать себе отчет, что эта метрика заставит модель любой ценой избегать крупных ошибок, даже если ради этого придется немного пожертвовать точностью на типичных случаях.
Прежде чем углубляться в сравнение, зафиксируем формальные определения трех ключевых метрик качества регрессионных моделей.
Определение: MSE показывает средний квадрат разности между фактическими значениями и предсказаниями модели. Поскольку ошибки возводятся в квадрат, метрика особенно чувствительна к крупным промахам.
Общая формула среднеквадратичной ошибки (MSE):
MSE = (1/n) * Σ(y_i — ŷ_i)²
Где:
Определение: MAE вычисляет средний модуль разности между фактами и прогнозами. Она относится ко всем ошибкам линейно, без возведения в квадрат, поэтому крупные выбросы влияют на неё пропорционально их величине.
Формула средней абсолютной ошибки (MAE):
MAE = (1/n) * Σ|y_i — ŷ_i|
Где:
Определение: RMSE — это квадратный корень из MSE. Фактически это та же среднеквадратичная ошибка, но приведенная к исходной размерности данных, что делает её интерпретацию более понятной на практике.
Формула корня из среднеквадратичной ошибки (RMSE):
RMSE = √(MSE) = √( (1/n) * Σ(y_i — ŷ_i)² )
Где:
| Характеристика | MSE | MAE | RMSE |
|---|---|---|---|
| Полное название | Mean Squared Error | Mean Absolute Error | Root Mean Squared Error |
| Русский перевод | Среднеквадратичная ошибка | Средняя абсолютная ошибка | Корень из среднеквадратичной ошибки |
| Единица измерения | Квадрат исходной единицы (руб², кг²) | Исходная единица (рубли, килограммы) | Исходная единица (рубли, килограммы) |
| Чувствительность к выбросам | Высокая (из-за возведения в квадрат) | Низкая (линейный учет) | Средняя (наследует чувствительность MSE, но с коррекцией) |
| Типичное применение | Функция потерь при обучении моделей | Оценка в задачах с шумными данными | Финальная оценка модели для отчетов |
Чтобы лучше понять, где MSE находит применение в реальной жизни, рассмотрим конкретные бизнес-задачи из разных отраслей. В каждом случае выбор MSE обусловлен тем, что компании важнее избежать крупных промахов, чем получить идеальную точность в мелочах.
1. Ритейл: Прогнозирование спроса на товары
Магазинам нужно точно заказывать товар, чтобы не было излишков или дефицита. Ошибка в 10 единиц некритична, но если модель ошибется на 1000 единиц — это пустые полки или горы просрочки. MSE жестко наказывает за такие катастрофические промахи, заставляя модель избегать крупных ошибок даже ценой небольшого снижения точности на массовых позициях.
2. Финансы: Кредитный скоринг
Банки оценивают, вернет ли клиент кредит. Отказать надежному клиенту — недополученная прибыль. Но выдать кредит мошеннику — прямые многомиллионные убытки. MSE штрафует модель за недооценку риска, заставляя консервативно оценивать сомнительных заемщиков.
3. Логистика: оптимизация времени доставки
Курьерские службы прогнозируют время прибытия. Опоздание на 5 минут — клиент подождет. Опоздание на 3 часа — клиент ушел, заказ не получен, репутация испорчена. MSE фокусирует модель на предотвращении именно этих критических опозданий.
4. Промышленность: прогнозирование износа оборудования
На заводах предсказывают износ оборудования, чтобы заменить детали до поломки. Ошибка в пару дней некритична. Но если модель недооценит износ и станок встанет — цех потеряет миллионы. MSE заставляет модель перестраховываться и сигнализировать о замене раньше.
5. Кибербезопасность: обнаружение аномалий
Системы безопасности мониторят сетевой трафик, чтобы выявить взломы. Резкий скачок трафика дает огромную ошибку при сравнении с нормой. MSE превращает аномалию в колоссальное число, которое система не может проигнорировать и обязана отправить сигнал тревоги.
6. Маркетплейсы: динамическое ценообразование
Модели прогнозируют спрос при изменении цен. Ошибка при росте цены на 5% не страшна. Но если модель недооценит падение спроса при повышении цены на 20% — товар перестанут покупать совсем. MSE требует точности именно в этих стрессовых сценариях.
7. Маркетинг: прогнозирование LTV (Lifetime Value)
Маркетологи предсказывают, сколько денег принесет новый клиент. Ошибка в прогнозе для «мелкого» клиента не критична. Но если модель недооценит крупного рекламодателя — его не активируют должным образом, и он уйдет к конкурентам. MSE наказывает за ошибки на ценных клиентах.
На практике MSE редко считают вручную на бумаге — для этого используют электронные таблицы или языки программирования. В Excel и Google Sheets расчет выполняется за несколько простых шагов. Предположим, у нас есть два столбца: с фактическими значениями (диапазон A2:A100) и прогнозными (диапазон B2:B100). Сначала в соседнем столбце мы возводим разности в квадрат с помощью формулы = (A2-B2)^2 и протягиваем ее на все строки. Затем с помощью функции СУММ или СРЗНАЧ находим среднее арифметическое полученных квадратов. Более компактный способ — использовать формулу массива =СРЗНАЧ((A2:A100-B2:B100)^2), которая выполняет расчет за один шаг без создания промежуточных столбцов.
В Python расчет MSE становится еще проще благодаря специализированным библиотекам. Самая популярная реализация — функция mean_squared_error из библиотеки scikit-learn. Для вычисления достаточно одной строки кода:
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_fact, y_pred) Где y_fact и y_pred — это списки или массивы NumPy с фактическими и предсказанными значениями. Функция автоматически возводит разности в квадрат, суммирует их и делит на количество наблюдений. При желании можно реализовать MSE и на чистом Python без библиотек: ((np.array(y_fact) — np.array(y_pred)) ** 2).mean(), но использование scikit-learn предпочтительнее, так как код становится более читаемым и защищен от ошибок с типами данных.
MSE (Mean Squared Error) в машинном обучении выполняет две основные функции. Во-первых, это стандартная метрика качества для регрессионных задач — то есть задач, где модель предсказывает числа (цену, температуру, спрос). Она показывает, насколько сильно предсказанные значения отклоняются от фактических. Во-вторых, MSE часто используется как функция потерь (loss function) при обучении моделей. Благодаря своей гладкости она позволяет эффективно применять градиентные методы оптимизации: алгоритм обучения стремится минимизировать MSE, подстраивая параметры модели так, чтобы крупные ошибки встречались как можно реже.
Да, MSE может быть равна нулю, но это происходит только в одном случае — когда модель предсказывает значения идеально точно, то есть все прогнозы совпадают с фактическими значениями без единой ошибки. На практике такая ситуация встречается крайне редко и обычно свидетельствует не о совершенстве модели, а о проблемах с данными: например, о переобучении (модель просто запомнила обучающую выборку) или о том, что задача слишком простая и не отражает реальной сложности явления. В реальных рабочих задачах MSE всегда больше нуля.
Для расчета MSE в Python используется библиотека scikit-learn, в которой есть готовая функция mean_squared_error. Выглядит это следующим образом:
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_fact, y_pred) Где y_fact — это список или массив с фактическими значениями, а y_pred — список или массив с предсказаниями модели. Функция автоматически вычисляет разности, возводит их в квадрат, суммирует и делит на количество наблюдений. При желании можно реализовать MSE и на чистом Python без библиотек: ((np.array(y_fact) — np.array(y_pred)) ** 2).mean(), но использование scikit-learn предпочтительнее, так как код становится более читаемым и защищенным от ошибок.
MSE измеряется в квадратах единиц измерения исходных данных. Если модель прогнозирует цену в рублях, MSE будет выражаться в рублях в квадрате (руб²). Если прогнозируется температура в градусах Цельсия — MSE будет в градусах². Это создает неудобство при интерпретации результатов, поскольку «квадратные рубли» не имеют физического смысла. Именно поэтому на практике чаще используют родственную метрику RMSE (корень из MSE), которая возвращает ошибку к исходным единицам измерения. Например, если MSE = 25 000 000 руб², то RMSE = √(25 000 000) ≈ 5000 рублей, что уже можно осмысленно интерпретировать как среднюю ошибку прогноза.
Проблема выбросов (outliers) — это главный недостаток MSE, вытекающий из ее основного свойства: возведения ошибок в квадрат. Когда в данных встречаются аномальные значения (например, одна элитная квартира на фоне типового жилья или резкий скачок спроса в праздничный день), ошибка модели на этом наблюдении может быть значительно больше средней. При возведении в квадрат эта ошибка увеличивается непропорционально сильно и начинает доминировать в итоговом значении MSE. В результате метрика может показывать плохое качество модели, даже если на 99% обычных данных она работает отлично. Например, если модель ошиблась на 10 рублей в 99 случаях и на 1000 рублей в одном, вклад этого единственного выброса в MSE будет больше, чем вклад всех остальных наблюдений вместе взятых. Поэтому при работе с данными, содержащими много шума или аномалий, часто выбирают более устойчивые к выбросам метрики, например MAE (средняя абсолютная ошибка), которая относится к крупным промахам линейно, без усиления.
Вам может быть интересно: