Функция потерь и MSE
Чтобы модель улучшалась, ошибку нужно измерять числом. Это и делает функция потерь.
Функция потерь (loss function) — число, показывающее, насколько предсказания модели расходятся с правильными ответами. Чем меньше — тем лучше.
Зачем измерять ошибку
В прошлом уроке мы подбирали k и b на глаз. Но компьютер «на глаз» не умеет — ему нужен числовой ориентир: одна прямая лучше другой или хуже? Функция потерь даёт ответ числом. Обучение модели — это, по сути, поиск параметров, при которых функция потерь минимальна.
Идея среднеквадратичной ошибки
Для регрессии самая популярная функция потерь — MSE (Mean Squared Error), среднеквадратичная ошибка. Считается в три шага:
- Для каждого объекта берём разницу между правдой и предсказанием:
ошибка = y_правда − y_предсказание. - Возводим каждую ошибку в квадрат (чтобы знак не мешал и большие промахи штрафовались сильнее).
- Усредняем квадраты по всем объектам.
Формула «на пальцах»: MSE = среднее( (правда − предсказание)² ).
Почему квадрат, а не просто модуль разницы? Во-первых, квадрат убирает знак, и ошибки «+2» и «−2» не гасят друг друга. Во-вторых, он сильнее наказывает крупные промахи: ошибка в 10 даёт вклад 100, а ошибка в 1 — всего 1. Модель будет особенно стараться не допускать больших отклонений.
Считаем MSE на чистом Python
Никаких библиотек — обычные списки. Код запускается, можете менять числа и смотреть, как меняется ошибка:
# Правильные ответы и предсказания модели
y_true = [3.0, 5.0, 2.5, 7.0]
y_pred = [2.8, 5.5, 2.0, 6.5]
n = len(y_true)
total = 0.0
for t, p in zip(y_true, y_pred):
error = t - p # разница
total += error ** 2 # квадрат ошибки
print(f"правда={t}, предсказание={p}, ошибка^2={error**2:.2f}")
mse = total / n
print("-----")
print("MSE =", round(mse, 4))
Вывод:
правда=3.0, предсказание=2.8, ошибка^2=0.04 правда=5.0, предсказание=5.5, ошибка^2=0.25 правда=2.5, предсказание=2.0, ошибка^2=0.25 правда=7.0, предсказание=6.5, ошибка^2=0.25 ----- MSE = 0.1975
Меньше MSE — точнее модель. Если бы предсказания совпали с правдой идеально, MSE равнялся бы нулю.
Как это связано с обучением
Теперь у модели есть «компас». Она перебирает (умным способом) разные k и b и выбирает те, при которых MSE минимален. Представьте долину: высота — это MSE, а спуск на дно долины — это поиск лучших коэффициентов. Метод такого спуска называется градиентным спуском; нам сейчас важна сама идея — модель катится туда, где ошибка меньше.
Родственник MSE — RMSE
У MSE есть неудобство: из-за возведения в квадрат единицы измерения тоже в квадрате (рубли²). Чтобы вернуться к привычным единицам, берут корень из MSE — получается RMSE. Эту и другие метрики качества подробно разберём в последнем разделе.
Итог
- Функция потерь измеряет ошибку модели числом; цель обучения — её минимизировать.
- MSE = среднее квадратов разностей между правдой и предсказанием.
- Квадрат убирает знак и сильнее штрафует крупные промахи.
- Обучение = поиск параметров с наименьшей потерей (спуск «на дно долины» ошибки).