Art of DS

Вигляд

Палітра
Тема
Доступ $20 одноразово
Увійти або створити акаунт

Вхід до Art of DSСтворіть акаунт Art of DS

Ми надішлемо на пошту посилання й шестизначний код. Увійти можна будь-яким із них; пароля немає.Введіть свою пошту. Ми надішлемо посилання й шестизначний код, щоб її підтвердити, — пароль не потрібен. Акаунт безкоштовний.

  • Ви повернетеся на цю сторінку, туди, де зупинилися.
  • Уже маєте акаунт? З тією самою адресою ви просто ввійдете.

Продовжуючи, ви приймаєте Умови та Політику конфіденційності.

Ваш акаунт

Безкоштовний акаунтДоступ назавжди

складність 1/5 Безкоштовно

MSE

Визначення

Середнє квадратів різниць між передбаченими й фактичними значеннями — стандартний спосіб виміряти, наскільки хибними є прогнози регресійної моделі.

Формула
MSE=1n∑i=1n(yi−y^i)2\text{MSE} = \frac{1}{n}\sum_{i=1}^{n}\left(y_i - \hat{y}_i\right)^2

Інтуїція

Візьміть кожен прогноз, виміряйте, наскільки він схибив, піднесіть цей розрив до квадрата й усередніть результати. Це середнє і є MSE.

Піднесення до квадрата робить дві речі одразу. Воно прибирає знак, тож перестрілити на 3 і недострілити на 3 важать однаково. І воно карає великі промахи куди сильніше за малі — схибити на 10 коштує у сто разів більше, ніж схибити на 1, а не в десять. Модель, налаштована на цю метрику, тяжко працюватиме, щоб уникнути поодинокої катастрофи, навіть ціною бути трохи гіршою в середньому [2, §3.1.1.2].

Формальне визначення

Підсумуйте квадрати залишків по всіх спостереженнях і поділіть на кількість спостережень. Результат завжди невід’ємний і дорівнює нулю лише тоді, коли кожен прогноз точно правильний [1, return value].

Одиниці є квадратом одиниць цілі. Якщо ви передбачаєте ціни в доларах, MSE вимірюється в доларах у квадраті — саме тому натомість часто подають її квадратний корінь, RMSE, коли число має читати людина.

Як це працює

δsquaredabsoluteHuberрозмір помилки →ціна
Та сама помилка, оцінена трьома способами. Квадратична ціна вигинається вгору, тож один великий промах переважує багато малих; абсолютна зростає прямою, тож десять промахів по 1 дорівнюють одному промаху на 10; Huber іде за кривою біля нуля і за прямою далі. Простежте за маркером: три ціни збігаються, доки помилка мала, і різко розходяться, щойно вона перестає бути малою.

MSE вживають у двох окремих ролях, і плутанина між ними спричиняє справжні проблеми:

  • Як функцію втрати, яку мінімізують під час підгонки. Саме це робить лінійна регресія, коли обирає свої коефіцієнти [2, §3.1.1.2].
  • Як метрику оцінювання, обчислену на відкладених даних, щоб оцінити, як модель поводитиметься на даних, яких вона ніколи не бачила [3, §3.6.1].

Формула та сама, але низьке значення на навчанні й низьке значення на тесті означають дуже різні речі. Модель може загнати перше майже до нуля, запам’ятавши навчальну вибірку, тоді як друге погіршується.

Де застосовується

  • Підгонка регресійних моделей — типова ціль для найменших квадратів.
  • Вибір моделі — порівняння моделей-кандидатів на тому самому відкладеному поділі.
  • Рання зупинка — спостереження за тим, як валідаційна MSE росте, щоб вирішити, коли спинити навчання.
  • Пошук гіперпараметрів — як neg_mean_squared_error у scikit-learn, узята з мінусом, щоб більше означало краще, відповідно до угоди, за якою «більші повернені значення кращі за менші» [4, §3.4.3.1].

Чому і коли

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

Беріть щось інше, коли у ваших даних є викиди, за якими ви не хочете, щоб модель гналася. Одна дика точка може запанувати над усією MSE й потягти підгонку до себе. Середня абсолютна похибка ставиться до всіх похибок пропорційно і є звичайною альтернативою; втрата Huber сидить між цими двома.

Практичний приклад

Python 7 рядків Показати код Сховати код
from sklearn.metrics import mean_squared_error

y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]

mean_squared_error(y_true, y_pred)
# 0.375

Варто один раз зробити руками. Похибки становлять 0.5, −0.5, 0 і −1. У квадраті вони дають 0.25, 0.25, 0 і 1, що в сумі 1.5. Поділене на чотири спостереження, це 0.375 [1, examples].

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

Python 39 рядків Показати код Сховати код
import numpy as np
from sklearn.metrics import (
    mean_absolute_error,
    mean_absolute_percentage_error,
    mean_squared_error,
    r2_score,
)

rng = np.random.default_rng(20261021)
N, DELTA = 200, 5.0

y = rng.normal(50, 10, N)
pred = y + rng.normal(0, 3, N)


def huber(t, p, delta=DELTA):
    r = np.abs(t - p)
    return float(np.mean(np.where(r <= delta, 0.5 * r**2, delta * (r - 0.5 * delta))))


outlier = pred.copy()
outlier[0] += 60
shift = y.min() - 0.05  # the smallest target lands at 0.05

cases = {
    "clean": (y, pred),
    "one-outlier": (y, outlier),
    "near-zero": (y - shift, pred - shift),
    "x10-units": (10 * y, 10 * pred),
}

print(f"  {N} targets, the same noise in every row; Huber delta = {DELTA:g}")
print(f"{'case':>13}{'MSE':>10}{'RMSE':>9}{'MAE':>9}{'R²':>8}{'MAPE':>10}{'Huber':>9}")
for name, (t, p) in cases.items():
    mse = mean_squared_error(t, p)
    print(
        f"{name:>13}{mse:>10.2f}{np.sqrt(mse):>9.2f}{mean_absolute_error(t, p):>9.2f}"
        f"{r2_score(t, p):>8.3f}{mean_absolute_percentage_error(t, p):>10.3f}{huber(t, p):>9.2f}"
    )

Вивід

  200 targets, the same noise in every row; Huber delta = 5
         case       MSE     RMSE      MAE      R²      MAPE    Huber
        clean      8.99     3.00     2.42   0.926     0.050     4.40
  one-outlier     27.07     5.20     2.72   0.777     0.059     5.84
    near-zero      8.99     3.00     2.42   0.926     0.215     4.40
    x10-units    898.78    29.98    24.22   0.926     0.050   109.03

Один поганий прогноз потроює MSE і ледве зрушує MAE. Один промах на 60 серед 200 підіймає MSE з 8.99 до 27.07 і знижує R² з 0.926 до 0.777, тоді як MAE змінюється з 2.42 до 2.72. Саме піднесення до квадрата дає одній похибці таку вагу.

Зсуньте ціль до нуля — і рухається лише MAPE. Похибки ті самі до останньої цифри, тож MSE, RMSE, MAE, R² і Huber не змінюються; MAPE зростає з 0.050 до 0.215, майже повністю через одну ціль, що тепер дорівнює 0.05.

Змініть одиниці — і на місці лишаються лише R² і MAPE. Удесятеро більші значення роблять MSE у сто разів більшою, а RMSE і MAE — удесятеро; Huber не росте ні так, ні так, а в 24.8 раза, бо δ лишається 5, а похибки виростають за нього.

Варіанти

МетрикаЗв’язок із MSEНавіщо її брати
RMSEЇї квадратний коріньЧитається у власних одиницях цілі
MAEАбсолютна похибка замість квадратаКуди менш чутлива до викидів
HuberКвадрат для малих похибок, модуль для великихКомпроміс між цими двома
R²MSE, перемасштабована проти прогнозування середньогоБез одиниць: читається як частка дисперсії цілі

Типові помилки

MSE не є порівнянною між наборами даних. Вона несе масштаб цілі [2, §3.1.1.2]. MSE, що дорівнює 4, є чудовою, коли ви передбачаєте ціни на житло в тисячах, і неможливою, коли ви передбачаєте ймовірність, бо там жоден квадрат похибки не перевищує 1.

MSE на навчанні не є оцінкою продуктивності. Вона каже лише те, наскільки добре модель підігналася під дані, які вона вже бачила. Число, яке важить, обчислюють на даних, притримуваних від підгонки [3, §3.6.1].

Піднесення до квадрата — це рішення, а не технічна дрібниця. Обравши MSE, ви оголосили, що одна похибка на 10 гірша за десять похибок на 1. Якщо для вашої задачі це не так, метрика нишком оптимізує не те [2, §3.1.1.2].

Ще не прочитаноДочитайте сторінку до кінця — і вона вважатиметься прочитаною.

Зберігайте свій прогресЗ доступом назавжди кожна дочитана сторінка позначається, і ви продовжуєте з того місця, де зупинилися, на всіх своїх пристроях.

Відкрити доступ

Перевірте себе

3 запитання

Кожну відповідь пояснено: який розділ вона перевіряє і з якого джерела.

На шпаргалці: Regression metrics and losses →

Джерела

  1. scikit-learn — sklearn.metrics.mean_squared_errordocs · звірено 2026-08-29https://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_error.html
  2. Zhang, Lipton, Li, Smola. Dive into Deep Learning — 3.1 Linear Regressionbookhttps://d2l.ai/chapter_linear-regression/linear-regression.html
  3. Zhang, Lipton, Li, Smola. Dive into Deep Learning — 3.6 Generalizationbookhttps://d2l.ai/chapter_linear-regression/generalization.html
  4. scikit-learn User Guide — Metrics and scoringdocs · звірено 2026-10-06https://scikit-learn.org/stable/modules/model_evaluation.html

Маєте промокод?

Код зі знижкою 100% одразу відкриває все. Менша знижка віднімається від ціни у вікні оплати: введіть там той самий код.

Написати в підтримку

Питання, проблема з доступом, повернення коштів? Напишіть нам, і ми відповімо листом.

Про що це?

Адресу використаємо лише для відповіді вам.

Повідомлення надіслано

Дякуємо. Відповімо листом на адресу, яку ви вказали.

Або напишіть нам напряму

support@artofds.com

Повідомлення надіслано Дякуємо. Відповімо листом на адресу, яку ви вказали.

Перевірте адресу пошти: вона потрібна, щоб відповісти.

Це наша адреса. Вкажіть свою, щоб відповідь дійшла до вас.

На цю адресу не можна надіслати лист. Перевірте, чи немає помилки.

Напишіть трохи більше: щонайменше 10 символів.

Забагато повідомлень за короткий час. Спробуйте за кілька хвилин.

Не вдалося надіслати повідомлення. Напишіть нам напряму: support@artofds.com