Метод наименьших квадратов: алгоритм аппроксимации данных

0
0

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

История возникновения метода наименьших квадратов

История метода наименьших квадратов начинается в конце XVIII - начале XIX века. Одно из первых упоминаний об этом методе встречается в работах немецкого математика Карла Фридриха Гаусса в 1795 году. Независимо от Гаусса метод наименьших квадратов был опубликован в 1805 году французским математиком Адриеном-Мари Лежандром.

Важный вклад в развитие метода наименьших квадратов внесли математики Лаплас, Эдрейн, Энке, Бессель, Ганзен. Они рассмотрели теоретико-вероятностные основы этого метода и применили его для решения астрономических и геодезических задач.

В начале XX века российский математик Андрей Андреевич Марков дал строгое обоснование метода наименьших квадратов и включил его в теорию математической статистики.

Общая постановка задачи

В общем виде задача, которую решает метод наименьших квадратов, формулируется следующим образом:

  • Имеется набор экспериментальных данных (xi, yi), i = 1..n.
  • Требуется подобрать такую функцию y = f(x), чтобы сумма квадратов отклонений значений этой функции от экспериментальных данных была минимальна:

Δ = ∑i=1n(yi - f(xi))2 -> min

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

Линейная регрессионная модель

Рассмотрим применение метода наименьших квадратов для нахождения параметров линейной регрессионной модели вида:

y = a0 + a1x1 + ... + anxn

В матричной форме система уравнений для нахождения неизвестных коэффициентов ai записывается:

............

x11 x12 x1n
x21 x22 x2n
xm1 xm2 xmn

Решение этой системы методом наименьших квадратов дает формулу для нахождения вектора коэффициентов:

a = (XTX)-1XTy

Среди свойств МНК-оценок для линейной модели можно выделить такое важное свойство, как прохождение линии регрессии через центр распределения исходных данных.

Нелинейная регрессия

Метод наименьших квадратов может быть применен и для нахождения параметров нелинейной регрессионной модели вида:

y = f(x, a1, ..., an)

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

Портрет девушки-ученой

Робастные модификации

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

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

Еще одна робастная модификация - метод наименьших модулей, в котором вместо суммы квадратов минимизируется сумма модулей отклонений.

Решение задачи на практике

Для практической реализации метода наименьших квадратов удобно использовать язык Python и такие библиотеки как NumPy, SciPy, Matplotlib. Библиотека scikit-learn также содержит готовые функции для построения линейной и нелинейной регрессии на основе МНК.

Рассмотрим пример построения простой линейной регрессионной модели с использованием библиотеки scikit-learn.

 from sklearn import linear_model X = [[0], [1], [2], [3]] y = [0, 1, 2, 3] reg = linear_model.LinearRegression() reg.fit(X, y) print(reg.coef_) print(reg.intercept_) 

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

Области применения метода наименьших квадратов

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

  • Регрессионный и корреляционный анализ
  • Теория управления и обработка сигналов
  • Астрономия и геодезия
  • Физика и химия
  • Экономика и финансы

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

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

Косвенный метод наименьших квадратов

Помимо обычного («прямого») метода наименьших квадратов, существует и косвенный метод наименьших квадратов. Он применяется в случае, когда зависимость между переменными выражается уравнением в неявном виде:

F(x, y) = 0

В отличие от прямого МНК, где минимизируется невязка по зависимой переменной y, в косвенном МНК минимизируется невязка по функции F(x, y).

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

Ноутбук с графиками

Двухшаговый метод наименьших квадратов

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

Алгоритм состоит из двух шагов:

  1. На первом шаге строится начальная регрессионная модель обычным МНК.
  2. На втором шаге выполняется взвешенный МНК с весами, обратно пропорциональными остаточной дисперсии, оцененной по модели первого шага.

Эта процедура позволяет скорректировать гетероскедастичность и получить более точные оценки коэффициентов регрессии.

Построение нелинейной регрессии

Рассмотрим пример построения нелинейной регрессионной модели с использованием библиотеки scikit-learn. В качестве примера возьмем экспоненциальную зависимость:

 from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression X = [[0], [1], [2], [3]] y = [1, 2, 4, 8] poly = PolynomialFeatures(degree=2) X_poly = poly.fit_transform(X) reg = LinearRegression() reg.fit(X_poly, y) print(reg.coef_) print(reg.intercept_) 

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

Выбор формы регрессии

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

y = a0 + a1*sin(x) + a2*cos(x) + a3*sin(2*x) + ...

Для моделирования сигмоидных кривых подойдут логистическая регрессия, модели Гомперца, Чепмена. Выбор конкретной формы зависит от природы моделируемого процесса и вида данных.

Регуляризация в МНК

Еще одним важным направлением развития метода наименьших квадратов является использование регуляризации. Регуляризация позволяет бороться с переобучением модели и улучшить точность прогнозирования на новых данных.

Популярными регуляризаторами являются Ridge регрессия, Lasso регрессия, эластичная сеть. Они добавляют в целевую функцию МНК дополнительные слагаемые, ограничивающие значения коэффициентов модели.

 from sklearn import linear_model reg = linear_model.Ridge(alpha=0.5) # или Lasso, ElasticNet 

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

Байесовский МНК

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

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

 from scipy import stats # Задаем априорное нормальное распределение prior = stats.norm(loc=0, scale=1) 

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

МНК для больших данных

При работе с большими объемами данных возникает необходимость адаптации классического МНК. Один из подходов - использование онлайн-алгоритмов, оперирующих не всем набором данных, а мини-выборками.

Онлайн МНК позволяет эффективно обновлять модель по мере поступления новых данных. Также актуально распределенное и параллельное построение МНК-моделей на кластерах.

 from sklearn.linear_model import SGDRegressor reg = SGDRegressor(n_iter=10, shuffle=True) 

Другим вариантом является предварительное снижение размерности данных с сохранением информативных признаков - методы отбора признаков, PCA. Это ускоряет обучение МНК-модели.