Метод наименьших квадратов: линия сквозь облако

Урок про метод наименьших квадратов (МНК) — как провести наилучшую прямую сквозь облако зашумлённых данных.

Метод наименьших квадратов подбирает параметры модели так, чтобы минимизировать сумму квадратов отклонений модели от данных: min Σ (y_i − модель(x_i))².

Интерполяция против аппроксимации

В прошлом разделе кривая проходила точно через узлы. Но реальные данные зашумлены: измерения с погрешностью, разброс эксперимента. Прогонять кривую точно через каждую точку здесь вредно — она будет «гоняться за шумом», теряя общую тенденцию. Нужно другое: провести простую кривую рядом с точками, отражающую закономерность, а не шум. Это и есть аппроксимация. Самый частый случай — провести прямую y = a·x + b сквозь облако точек.

Вопрос: какая прямая «наилучшая»? МНК отвечает: та, для которой сумма квадратов вертикальных отклонений точек от прямой минимальна. Почему квадратов, а не модулей? Квадрат гладко дифференцируем (легко искать минимум), сильнее штрафует крупные промахи и приводит к красивым линейным формулам.

Вывод формул

Ищем a, b, минимизирующие E(a,b) = Σ (y_i − a·x_i − b)². В точке минимума частные производные по a и по b равны нулю. Приравняв их, получаем систему двух линейных уравнений (нормальные уравнения), решение которой — явные формулы:

a = ( n·Σ(x_i·y_i) − Σx_i·Σy_i ) / ( n·Σ(x_i²) − (Σx_i)² )
b = ( Σy_i − a·Σx_i ) / n
def мнк_прямая(xs, ys):
    n = len(xs)
    sx = sum(xs); sy = sum(ys)
    sxx = sum(x*x for x in xs)
    sxy = sum(xs[i]*ys[i] for i in range(n))
    a = (n*sxy - sx*sy) / (n*sxx - sx*sx)
    b = (sy - a*sx) / n
    return a, b

# Зашумлённые данные вокруг прямой y = 2x + 1
xs = [0, 1, 2, 3, 4]
ys = [1.1, 2.9, 5.2, 6.8, 9.1]
a, b = мнк_прямая(xs, ys)
print(f"наилучшая прямая: y = {a:.4f}·x + {b:.4f}")

# Коэффициент детерминации R^2 — доля объяснённой дисперсии
ym = sum(ys) / len(ys)
ss_tot = sum((y - ym)**2 for y in ys)
ss_res = sum((ys[i] - (a*xs[i] + b))**2 for i in range(len(xs)))
print(f"R^2 = {1 - ss_res/ss_tot:.6f}")

Вывод:

наилучшая прямая: y = 1.9900·x + 1.0400
R^2 = 0.997305

МНК нашёл y ≈ 1.99x + 1.04 — почти идеально восстановил скрытую закономерность 2x + 1 из зашумлённых данных. Метрика R² ≈ 0.997 близка к 1: прямая объясняет 99.7% разброса данных.

Связь с линейной регрессией

МНК — это и есть линейная регрессия из статистики и машинного обучения. Когда вы обучаете простейшую модель «предсказать y по x», вы решаете ровно эту задачу минимизации суммы квадратов. Коэффициенты a (наклон) и b (сдвиг) — те же, что в формуле тренда в Excel или в LinearRegression из scikit-learn. Так численный метод XIX века (Гаусс, Лежандр) оказывается фундаментом современного ML.

ОбластьКак называют МНК
Численные методыметод наименьших квадратов
Статистикалинейная регрессия (OLS)
Машинное обучениелинейная модель с MSE-функцией потерь
Excelлиния тренда, ЛИНЕЙН / НАКЛОН

Как работает под капотом

Геометрически МНК — это ортогональная проекция вектора данных y на подпространство, натянутое на столбцы матрицы признаков. Минимум квадратичной функции E — единственный (это парабола-«чаша»), поэтому формулы дают глобальный, а не локальный оптимум. Важная тонкость: МНК минимизирует вертикальные отклонения, считая x точным, а шум — только в y. Если погрешность есть и в x, нужна другая постановка (полная МНК / Деминга). В библиотеке вся задача — одна строка: numpy.polyfit(x, y, 1) или scipy.stats.linregress.

Частые ошибки

  • Применять МНК к нелинейной зависимости как есть. Если данные не на прямой, сначала линеаризуйте (логарифм, замена переменных) или используйте полиномиальную/нелинейную модель.
  • Игнорировать выбросы. Квадрат сильно штрафует крупные промахи, и один выброс может перекосить прямую; иногда нужна робастная регрессия (по модулю, Хьюбер).
  • Путать с «правильностью модели». Высокий не означает, что модель верна — он лишь мера согласия с данными.

Итоги

  • Аппроксимация проводит простую кривую рядом с зашумлёнными точками (в отличие от точной интерполяции).
  • МНК минимизирует сумму квадратов отклонений; для прямой это даёт явные формулы через суммы Σx, Σy, Σx², Σxy.
  • Это и есть линейная регрессия — фундамент статистики и ML.
  • Минимум единствен (квадратичная «чаша»); шум предполагается только в y.
Проверьте себя
1. Что минимизирует метод наименьших квадратов при подборе прямой?
AМаксимальное отклонение точки от прямой
BСумму квадратов вертикальных отклонений точек от прямой
CСумму модулей отклонений
DЧисло точек выше прямой
2. Чем аппроксимация отличается от интерполяции?
AНичем
BИнтерполяция проходит точно через узлы, аппроксимация проводит кривую рядом, сглаживая шум
CАппроксимация всегда точнее
DИнтерполяция работает только для прямых
3. Метод наименьших квадратов для прямой в статистике называется...
Aметодом бисекции
Bлинейной регрессией (OLS)
Cинтерполяцией Лагранжа
Dметодом Ньютона