Метод минимизации квадратичной ошибки

Научная библиотека популярных научных изданий

Макеты страниц

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

Вид системы линейных уравнений упрощается, если ввести матричные обозначения. Пусть — матрица размера строка которой является вектором и пусть b — вектор-столбец

Тогда наша задача сводится к определению весового вектора а, удовлетворяющего уравнению

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

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

Задача минимизации суммы квадратичных ошибок является классической. Как будет показано в п. 5.8.4, она может быть решена методом градиентного анализа. Простое решение в замкнутой форме можно также получить, образуя градиент

и полагая его равным нулю. Отсюда получается необходимое условие

и задача решения уравнения сводится к задаче решения уравнения . Большим достоинством этого замечательного уравнения является то, что матрица размера квадратная и часто невырожденная. Если данная матрица невырождена, вектор а может быть определен однозначно:

где матрица размера

называется псевдообращением матрицы У. Заметим, что если матрица У квадратная и невырожденная, псевдообращение совпадаете обычным обращением. Следует также отметить, что но обычно . Если матрица УУ вырождена, решение уравнения (32) не будет единственным. Однако решение, обеспечивающее минимальную квадратичную ошибку, существует всегда. В частности, при определении в более общем виде:

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

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

5.8.2. СВЯЗЬ С ЛИНЕЙНЫМ ДИСКРИМИНАНТОМ ФИШЕРА

В данном пункте будет показано, что при соответствующем выборе вектора b разделяющая функция найденная по методу минимальной квадратичной ошибки, непосредственно связана с линейным дискриминантом Фишера. Для того чтобы показать это, следует вернуться к необобщенным линейным разделяющим функциям. Предположим, что имеется множество -мерных выборок причем из них принадлежат подмножеству помеченному — подмножеству S помеченному Далее положим, что выборка образуется из путем прибавления порогового компонента, равного единице, и умножением полученного вектора на —1 в случае выборки, помеченной . Не нарушая общности, можно положить, что первые выборок помечены а последующие помечены Тогда матрицу X можно представить в следующем виде:

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

и

Можно показать, что при определенном выборе b обнаруживается связь между решением по методу наименьшей квадратичной ошибки и линейным дискриминантом Фишера.

Доказательство начнем, записав соотношение (32) для а с использованием разложенных матриц:

Определяя выборочное среднее и матрицу суммарного выборочного разброса

можно в результате перемножения матриц, входящих в (36), получить следующее выражение:

Полученное выражение может рассматриваться как пара уравнений, причем из первого можно выразить через

где является средним по всем выборкам. Подставив данное выражение во второе уравнение и выполнив некоторые алгебраические преобразования, получим

Поскольку направление вектора при любом w совпадает с направлением вектора то можно записать

следующее выражение:

где a — некоторая скалярная величина. В этом случае соотношение (40) дает

что, за исключением скалярного коэффициента, идентично решению для случая линейного дискриминанта Фишера. Помимо этого, получаем величину порога и следующее решающее правило: принять решение если иначе принять решение

5.8.3. АСИМПТОТИЧЕСКОЕ ПРИБЛИЖЕНИЕ К ОПТИМАЛЬНОМУ ДИСКРИМИНАНТУ

Другое свойство решения по методу наименьшей квадратичной ошибки, говорящее в его пользу, состоит в том, что при условии и при оно в пределе приближается в смысле минимума среднеквадратичной ошибки к разделяющей функции Байеса

Чтобы продемонстрировать данное утверждение, следует предположить, что выборки взяты независимо в соответствии с вероятностным законом

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

то нашей задачей будет показать, что величина минимизируется посредством решения

Доказательство упростится при условии сохранения различия между выборками класса 1 и класса 2. Исходя из ненормированных данных, функцию критерия можно записать в виде

Таким образом, в соответствии с законом больших чисел при стремлении к бесконечности приближается с вероятностью 1 к

функции J (а), имеющей вид

где

и

Теперь, если мы из соотношения (42) определим

то получим

Второй член данной суммы не зависит от весового вектора а. Отсюда следует, что а, которое минимизирует , также минимизирует и — среднеквадратичную ошибку между .

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

1

Оглавление

  • ОТ РЕДАКТОРА ПЕРЕВОДА
  • ПРЕДИСЛОВИЕ
  • Часть I. КЛАССИФИКАЦИЯ ОБРАЗОВ
  • 1.2. ПРИМЕР
  • 1.3. МОДЕЛЬ КЛАССИФИКАЦИИ
  • 1.4. ОПИСАТЕЛЬНЫЙ ПОДХОД
  • 1.5. ОБЗОР СОДЕРЖАНИЯ КНИГИ ПО ГЛАВАМ
  • 1.6. БИБЛИОГРАФИЧЕСКИЕ СВЕДЕНИЯ
  • Глава 2. БАЙЕСОВСКАЯ ТЕОРИЯ РЕШЕНИЙ
  • 2.2. БАЙЕСОВСКАЯ ТЕОРИЯ РЕШЕНИЙ — НЕПРЕРЫВНЫЙ СЛУЧАЙ
  • 2.3. КЛАССИФИКАЦИЯ В СЛУЧАЕ ДВУХ КЛАССОВ
  • 2.4. КЛАССИФИКАЦИЯ С МИНИМАЛЬНЫМ УРОВНЕМ ОШИБКИ
  • 2.5. КЛАССИФИКАТОРЫ, РАЗДЕЛЯЮЩИЕ ФУНКЦИИ И ПОВЕРХНОСТИ РЕШЕНИЙ
  • 2.6. ВЕРОЯТНОСТИ ОШИБОК И ИНТЕГРАЛЫ ОШИБОК
  • 2.7. НОРМАЛЬНАЯ ПЛОТНОСТЬ
  • 2.8. РАЗДЕЛЯЮЩИЕ ФУНКЦИИ ДЛЯ СЛУЧАЯ НОРМАЛЬНОЙ ПЛОТНОСТИ
  • 2.9. БАЙЕСОВСКАЯ ТЕОРИЯ РЕШЕНИЙ — ДИСКРЕТНЫЙ СЛУЧАЙ
  • 2.10. НЕЗАВИСИМЫЕ БИНАРНЫЕ ПРИЗНАКИ
  • 2.11. СОСТАВНАЯ БАЙЕСОВСКАЯ ЗАДАЧА ПРИНЯТИЯ РЕШЕНИЙ И КОНТЕКСТ
  • 2.12. ПРИМЕЧАНИЯ
  • 2.13. БИБЛИОГРАФИЧЕСКИЕ И ИСТОРИЧЕСКИЕ СВЕДЕНИЯ
  • СПИСОК ЛИТЕРАТУРЫ
  • Задачи
  • Глава 3. ОЦЕНКА ПАРАМЕТРОВ И ОБУЧЕНИЕ С УЧИТЕЛЕМ
  • 3.2. ОЦЕНКА ПО МАКСИМУМУ ПРАВДОПОДОБИЯ
  • 3.3. БАЙЕСОВСКИЙ КЛАССИФИКАТОР
  • 3.4. ОБУЧЕНИЕ ПРИ ВОССТАНОВЛЕНИИ СРЕДНЕГО ЗНАЧЕНИЯ НОРМАЛЬНОЙ ПЛОТНОСТИ
  • 3.5. БАЙЕСОВСКОЕ ОБУЧЕНИЕ В ОБЩЕМ СЛУЧАЕ
  • 3.6. ДОСТАТОЧНЫЕ СТАТИСТИКИ
  • 3.7. ДОСТАТОЧНЫЕ СТАТИСТИКИ И СЕМЕЙСТВО ЭКСПОНЕНЦИАЛЬНЫХ ФУНКЦИЙ
  • 3.8. ПРОБЛЕМЫ РАЗМЕРНОСТИ
  • 3.9. ОЦЕНКА УРОВНЯ ОШИБКИ
  • 3.10. БИБЛИОГРАФИЧЕСКИЕ И ИСТОРИЧЕСКИЕ СВЕДЕНИЯ
  • СПИСОК ЛИТЕРАТУРЫ
  • Задачи
  • Глава 4. НЕПАРАМЕТРИЧЕСКИЕ МЕТОДЫ
  • 4.2. ОЦЕНКА ПЛОТНОСТИ РАСПРЕДЕЛЕНИЯ
  • 4.3. ПАРЗЕНОВСКИЕ ОКНА
  • 4.4. ОЦЕНКА МЕТОДОМ БЛИЖАЙШИХ СОСЕДЕЙ
  • 4.5. ОЦЕНКА АПОСТЕРИОРНЫХ ВЕРОЯТНОСТЕЙ
  • 4.6. ПРАВИЛО БЛИЖАЙШЕГО СОСЕДА
  • 4.7. ПРАВИЛО k БЛИЖАЙШИХ СОСЕДЕЙ
  • 4.8. АППРОКСИМАЦИИ ПУТЕМ РАЗЛОЖЕНИЯ В РЯД
  • 4.9. АППРОКСИМАЦИЯ ДЛЯ БИНАРНОГО СЛУЧАЯ
  • 4.10. ЛИНЕЙНЫЙ ДИСКРИМИНАНТ ФИШЕРА
  • 4.11. МНОЖЕСТВЕННЫЙ ДИСКРИМИНАНТНЫЙ АНАЛИЗ
  • 4.12. БИБЛИОГРАФИЧЕСКИЕ И ИСТОРИЧЕСКИЕ СВЕДЕНИЯ
  • СПИСОК ЛИТЕРАТУРЫ
  • Задача
  • Глава 5. ЛИНЕЙНЫЕ РАЗДЕЛЯЮЩИЕ ФУНКЦИИ
  • 5.2. ЛИНЕЙНЫЕ РАЗДЕЛЯЮЩИЕ ФУНКЦИИ И ПОВЕРХНОСТИ РЕШЕНИЙ
  • 5.3. ОБОБЩЕННЫЕ ЛИНЕЙНЫЕ РАЗДЕЛЯЮЩИЕ ФУНКЦИИ
  • 5.4. СЛУЧАЙ ДВУХ ЛИНЕЙНО РАЗДЕЛИМЫХ КЛАССОВ
  • 5.5. МИНИМИЗАЦИЯ ПЕРСЕПТРОННОЙ ФУНКЦИИ КРИТЕРИЯ
  • 5.6. ПРОЦЕДУРЫ РЕЛАКСАЦИЙ
  • 5.7. ПОВЕДЕНИЕ ПРОЦЕДУР В СЛУЧАЕ НЕРАЗДЕЛЯЕМЫХ МНОЖЕСТВ
  • 5.8. ПРОЦЕДУРЫ МИНИМИЗАЦИИ КВАДРАТИЧНОЙ ОШИБКИ
  • 5.8.4. ПРОЦЕДУРА ВИДРОУ — ХОФФА
  • 5.9. ПРОЦЕДУРЫ ХО—КАШЬЯПА
  • 5.10. ПРОЦЕДУРЫ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
  • 5.11. МЕТОД ПОТЕНЦИАЛЬНЫХ ФУНКЦИЙ
  • 5.12. ОБОБЩЕНИЯ ДЛЯ СЛУЧАЯ МНОГИХ КЛАССОВ
  • 5.13. БИБЛИОГРАФИЧЕСКИЕ И ИСТОРИЧЕСКИЕ СВЕДЕНИЯ
  • СПИСОК ЛИТЕРАТУРЫ
  • Задачи
  • Глава 6. ОБУЧЕНИЕ БЕЗ УЧИТЕЛЯ И ГРУППИРОВКА
  • 6.2. ПЛОТНОСТЬ СМЕСИ И ИДЕНТИФИЦИРУЕМОСТЬ
  • 6.3. ОЦЕНКИ ПО МАКСИМУМУ ПРАВДОПОДОБИЯ
  • 6.4. ПРИЛОЖЕНИЕ К СЛУЧАЮ НОРМАЛЬНЫХ СМЕСЕЙ
  • 6.5. БАЙЕСОВСКОЕ ОБУЧЕНИЕ БЕЗ УЧИТЕЛЯ
  • 6.6. ОПИСАНИЕ ДАННЫХ И ГРУППИРОВКА
  • 6.7. МЕРЫ ПОДОБИЯ
  • 6.8. ФУНКЦИИ КРИТЕРИЕВ ДЛЯ ГРУППИРОВКИ
  • 6.9. ИТЕРАТИВНАЯ ОПТИМИЗАЦИЯ
  • 6.10. ИЕРАРХИЧЕСКАЯ ГРУППИРОВКА
  • 6.11. МЕТОДЫ, ИСПОЛЬЗУЮЩИЕ ТЕОРИЮ ГРАФОВ
  • 6.12. ПРОБЛЕМА ОБОСНОВАННОСТИ
  • 6.13. ПРЕДСТАВЛЕНИЕ ДАННЫХ В ПРОСТРАНСТВЕ МЕНЬШЕЙ РАЗМЕРНОСТИ И МНОГОМЕРНОЕ МАСШТАБИРОВАНИЕ
  • 6.14. ГРУППИРОВКА И УМЕНЬШЕНИЕ РАЗМЕРНОСТИ
  • 6.15. БИБЛИОГРАФИЧЕСКИЕ И ИСТОРИЧЕСКИЕ СВЕДЕНИЯ
  • СПИСОК ЛИТЕРАТУРЫ
  • Задачи
  • Часть II. АНАЛИЗ СЦЕН
  • Глава 7. ПРЕДСТАВЛЕНИЕ ИЗОБРАЖЕНИЙ И ИХ ПЕРВОНАЧАЛЬНЫЕ УПРОЩЕНИЯ
  • 7.2. ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ
  • 7.3. ПРОСТРАНСТВЕННОЕ ДИФФЕРЕНЦИРОВАНИЕ
  • 7.4. ПРОСТРАНСТВЕННОЕ СГЛАЖИВАНИЕ
  • 7.5. СРАВНЕНИЕ С ЭТАЛОНОМ
  • 7.6. АНАЛИЗ ОБЛАСТЕЙ
  • 7.7. ПРОСЛЕЖИВАНИЕ КОНТУРОВ
  • 7.8. БИБЛИОГРАФИЧЕСКИЕ И ИСТОРИЧЕСКИЕ СВЕДЕНИЯ
  • Задачи
  • Глава 8. АНАЛИЗ ПРОСТРАНСТВЕННЫХ ЧАСТОТ
  • 8.2. ТЕОРЕМА ОТСЧЕТОВ
  • 8.3. СРАВНЕНИЕ С ЭТАЛОНОМ И ТЕОРЕМА О СВЕРТКЕ
  • 8.4. ПРОСТРАНСТВЕННАЯ ФИЛЬТРАЦИЯ
  • 8.5. СРЕДНЕКВАДРАТИЧНАЯ ОЦЕНКА
  • 8.6. БИБЛИОГРАФИЧЕСКИЕ И ИСТОРИЧЕСКИЕ СВЕДЕНИЯ
  • Задачи
  • Глава 9. ОПИСАНИЯ ЛИНИИ И ФОРМЫ
  • 9.2. ОПИСАНИЕ ЛИНИИ
  • 9.3. ОПИСАНИЕ ФОРМЫ
  • 9.3.2. ЛИНЕЙНЫЕ СВОЙСТВА
  • 9.3.3. МЕТРИЧЕСКИЕ СВОЙСТВА
  • 9.3.4. ОПИСАНИЯ, ОСНОВАННЫЕ НА НЕРЕГУЛЯРНОСТЯХ
  • 9.3.5. СКЕЛЕТ ОБЪЕКТА
  • 9.3.6. АНАЛИТИЧЕСКИЕ ОПИСАНИЯ ФОРМЫ
  • 9.3.7. ИНТЕГРАЛЬНЫЕ ГЕОМЕТРИЧЕСКИЕ ОПИСАНИЯ
  • 9.4. БИБЛИОГРАФИЧЕСКИЕ И ИСТОРИЧЕСКИЕ СВЕДЕНИЯ
  • Задачи
  • Глава 10. ПЕРСПЕКТИВНЫЕ ПРЕОБРАЗОВАНИЯ
  • 10.2. МОДЕЛИРОВАНИЕ ПРОЦЕССА СЪЕМКИ ИЗОБРАЖЕНИЯ
  • 10.3. ПЕРСПЕКТИВНОЕ ПРЕОБРАЗОВАНИЕ В ОДНОРОДНЫХ КООРДИНАТАХ
  • 10.3.2. ОБРАТНОЕ ПЕРСПЕКТИВНОЕ ПРЕОБРАЗОВАНИЕ
  • 10.4. ПЕРСПЕКТИВНЫЕ ПРЕОБРАЗОВАНИЯ С ДВУМЯ СИСТЕМАМИ ОТСЧЕТА
  • 10.5. ПРИМЕРЫ ПРИМЕНЕНИЯ
  • 10.5.2. ОПРЕДЕЛЕНИЕ ПОЛОЖЕНИЯ ОБЪЕКТА
  • 10.5.3. ВЕРТИКАЛЬНЫЕ ЛИНИИ: ПЕРСПЕКТИВНОЕ ИСКАЖЕНИЕ
  • 10.6. СТЕРЕОСКОПИЧЕСКОЕ ВОСПРИЯТИЕ
  • 10.7. БИБЛИОГРАФИЧЕСКИЕ И ИСТОРИЧЕСКИЕ СВЕДЕНИЯ
  • Задачи
  • Глава 11. ПРОЕКТИВНЫЕ ИНВАРИАНТЫ
  • 11.2. СЛОЖНОЕ ОТНОШЕНИЕ
  • 11.3. ДВУМЕРНЫЕ ПРОЕКТИВНЫЕ КООРДИНАТЫ
  • 11.4. ЛИНИЯ, СОЕДИНЯЮЩАЯ ОБЪЕКТИВЫ
  • 11.5. АППРОКСИМАЦИЯ ОРТОГОНАЛЬНЫМ ПРОЕКТИРОВАНИЕМ
  • 11.6. ВОССТАНОВЛЕНИЕ ОБЪЕКТА
  • 11.7. БИБЛИОГРАФИЧЕСКИЕ И ИСТОРИЧЕСКИЕ СВЕДЕНИЯ
  • Задачи
  • Глава 12. МЕТОДЫ СОСТАВЛЕНИЯ И ОБРАБОТКИ ОПИСАНИЙ В АНАЛИЗЕ СЦЕН
  • 12.2. ФОРМАЛЬНОЕ ПРЕДСТАВЛЕНИЕ ОПИСАНИЙ
  • 12.2.2. ГРАФЫ ОТНОШЕНИЙ
  • 12.3. ТРЕХМЕРНЫЕ МОДЕЛИ
  • 12.4. АНАЛИЗ МНОГОГРАННИКОВ
  • 12.4.2. ОБЪЕДИНЕНИЕ ОБЛАСТЕЙ В ОБЪЕКТЫ
  • 12.4.3. МОНОКУЛЯРНОЕ ОПРЕДЕЛЕНИЕ ТРЕХМЕРНОЙ СТРУКТУРЫ
  • 12.5. БИБЛИОГРАФИЧЕСКИЕ И ИСТОРИЧЕСКИЕ СВЕДЕНИЯ

Прогнозирование временных рядов методом рядов Фурье

Время прочтения
10 мин

Просмотры 17K

image
Привет, Хабр.

Эта статья посвящена методу долгосрочного прогнозирования временных рядов с помощью рядов Фурье [1-2]. Особенность подхода в том, что в отличие от классических методов прогнозирования и машинного обучения прогнозируется не сама неизвестная функция, а ее коэффициенты разложения в ряд Фурье. Далее по спрогнозированным коэффициентам Фурье восстанавливается неизвестная функция и делается прогноз ее значений на следующий период.

Внимание! Статья содержит множество формул.

Схематично данный метод можно проиллюстрировать следующей анимацией

image

План статьи

  • Временные ряды
  • Задача прогнозирования временных рядов
  • Ряды Фурье
  • Матрица задержек. Прогнозирование временных рядов на один шаг
  • Долгосрочное прогнозирование временных рядов с помощью рядов Фурье
  • Немного кода

Тем, кто

с мехмата/матфака

хорошо знаком с такими понятиями, как временные ряды и ряды Фурье, можно пропустить первые три раздела данной статьи.

Временной ряд

Временной ряд – значения некоторой величины, измеренные через равные промежутки времени $Delta t.$ Если принять $Delta t = 1,$ начальное значение $t_{1} = 1, ; t_{i}=i,$где $i = 1, 2, ... n,$ тогда временной ряд можно записать в виде последовательности

$y_1, y_2, …, y_n, ;;;;(1)$

где $y_k in R.$ Примеры временных рядов: стоимость акции, температура воздуха, курс доллара и т.д.

Задача прогнозирования временных рядов

Задача прогнозирования временных рядов заключается в нахождении функции F:

$y_{n+d}=F(y_1, y_2, …, y_n, d), ;;;;(2)$

где $d in {1, 2, ..., D}$ – отсрочка прогноза, $D$ – горизонт прогнозирования.
Т.е. по известным значениям ряда из прошлого необходимо найти его значения в будущем.

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

Ряды Фурье

Пусть функция $f(x)$ непрерывна на отрезке $[a, b],$ последовательность функций

$φ_1(x), φ_2 (x), ldots , φ_k(x), ldots ;;;(3)$

является ортонормальной на $[a, b],$ т.е.

$int_a^b φ_i(x) φ_j (x)dx= δ_{ik} = begin{cases} 1 &text{$i = k$}\ 0 &text{$i neq k$} end{cases}. ;;;(4)$

Обозначим

$a_k = int_a^b f(x)varphi_k(x)dx, k=1, 2, ... , ;;;(5)$

тогда ряд

$a_1φ_1 (x)+a_2φ_2 (x)+⋯+a_kφ_k (x)+⋯ ;;; (6)$

называется рядом Фурье. Коэффициенты (5) этого ряда называются коэффициентами Фурье функции f(x) по системе (3).
Ряд Фурье – разложение некоторой функции по полной системе ортонормированных функций (по некоторому базису).

Тригонометрические ряды Фурье
Если в качестве системы (3) взять ортонормированную на отрезке $[-pi,pi]$ систему функций

$frac{1}{sqrt{pi}}, frac{1}{sqrt{pi}}cos(x), frac{1}{sqrt{pi}}sin (x), ..., frac{1}{sqrt{pi}}cos (kx), frac{1}{sqrt{pi}}sin (kx), ...,;;;(7)$

то разложение произвольной функции f(x) по системе (7) в ряд Фурье на отрезке $[-pi,pi]$ имеет вид

$frac{a_0}{2}+sum_{k=1}^{infty}a_k cos⁡(kx)+b_k sin⁡(kx), ;;; (8)$

где коэффициентыи $a_k, ; b_k$ имеют вид

$begin{aligned} &a_{0} = frac{1}{pi} int_{-pi}^{pi} f(x)dx; \&a_{k} = frac{1}{pi} int_{-pi}^{pi} f(x)cos(kx)dx; \ &b_{k} = frac{1}{pi} int_{-pi}^{pi} f(x)sin(kx)dx.end{aligned} ;;;(9)$

Ряд (8) называется тригонометрическим рядом Фурье. Ряды Фурье по другим системам называют обобщенными рядами Фурье. Далее для краткости под рядом Фурье будем понимать именно тригонометрический ряд Фурье, т.к. в данной статье мы будем иметь дело только с ним.

Теорема Дирихлe: Если функция f(x) задана на отрезке $[-pi,pi]$ и является на нем кусочно-непрерывной, кусочно-монотонной и ограниченной, то ее тригонометрический ряд Фурье сходится во всех точках отрезка. Если s(x) – сумма тригонометрического ряда Фурье функции f(x), то во всех точках непрерывности этой функции

$s(x) = f(x),$

А во всех точках разрыва

$s(x)=frac{1}{2} (f(x-0)+f(x+0)).$

Кроме этого,

$s(pi) = s(-pi) = frac{1}{2}(f(pi-0) + f(-pi+0)).$

Среди всех тригонометрических многочленов

$frac{α_0}{2}+sum_{k=1}^{N}α_kcos⁡(kx)+β_ksin⁡(kx)$

с заданным N частичная сумма ряда Фурье

$S_N(x) = frac{a_0}{2}+sum_{k=1}^{N}a_kcos⁡(kx)+b_ksin⁡(kx)$

дает наилучшую (в метрике  пространства функций с интегрируемым квадратом на отрезке $[-pi,pi]$) аппроксимацию функции f(x) [3]. Именно это утверждение является основой для представления функции, значения которой являются исследуемым временным рядом с некоторой периодичностью, в виде частной суммы тригонометрического ряда Фурье.
Пусть f(t) – функция с интегрируемым квадратом на отрезке $[-l, l].$ Замена $x = frac{pi t}{l}, ; x in [-pi, pi], ; t = frac{lx}{pi}$ переводит функцию в

$widetilde{f}(x) = fBigr(frac{lx}{pi}Bigl), ;; xin[-pi, pi]$

Для этой функции, заданной на отрезке $[-l, l],$ ряд Фурье имеет вид

$frac{a_0}{2}+sum_{k=1}^{N}a_kcos⁡Bigl(frac{pi kt}{l}Bigr)+b_ksin⁡Bigl(frac{pi kt}{l}Bigr), ;;; (10)$

где

$begin{aligned} &a_{k} = frac{1}{l} int_{-l}^{l} f(t)cosBigl(frac{pi kt}{l}Bigr)dt; ;; k=0,1,2...,, \ &b_{k} = frac{1}{l} int_{-l}^{l} f(t)sinBigl(frac{pi kt}{l}Bigr)dt, ;; k=1, 2, 3..., .end{aligned}$

Матрица задержек. Прогнозирование временных рядов на один шаг

Дан временной ряд, содержащий m значений:

$x_1, x_2,…, x_m.$

Нужно спрогнозировать значение $x_{m+1}.$
Одним из методов прогнозирования на один шаг является метод построения матрицы задержек. Суть метода заключается в следующем [4-5]: выбирается некоторое число p – величина задержек, подбирается зависимость значения $x_{m+1}$ ряда от p предыдущих значений:

$x_{k+1}=f(x_{k-p+1}, ldots, x_{k-1}, x_k).$

Вид зависимости, как правило, выбирается линейный

$x_{k+1}=A_p+A_{p-1} x_{k-p+1}+⋯+A_1 x_{k-1}+A_0x_k. ;;;(11)$

Для определения коэффициентов $A_0, A_1, ..., A_{p-1}$ строится матрица задержек:

$quad begin{pmatrix} x_1 & x_{p+1} & ... &x_{m-p+1} \ x_2 & x_{p+2} & ... &x_{m-p+2} \ ... & ... & ... &... \ x_p & x_{2p} & ... &x_{m} end{pmatrix} quad ;;;(12)$

Если m не кратно p то можно отбросить несколько первых членов ряда. В последней строке выбирается множество S – так называемое множество «ближайших соседей» к значению $x_m.$ Количество элементов

$|S| = w = 2p+1.$

Коэффициенты $A_0, A_1, ldots, A_p$ можно найти методом наименьших квадратов или каким-либо другим способом.

$Phi(A_0, A_1, ldots, A_{p}) = sum_{k in I}(x_k-A_p-A_{p-1}x_{k-p}-ldots-A_1x_{k-2}-A_0x_{k-1})^2rightarrow min ;;; (13)$

где

$I={i_1+1,i_{2}+1,…,i_{w}+1}.$

Из необходимого условия минимума

$frac{partial Phi}{partial A_i}=0, ;;;i=1,2,ldots,p$

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

$A_0, A_1, ldots, A_p.$

Величина p выбирается эмпирически.
Можно воспользоваться матричной записью выражения (13)

$parallel x - XA parallel rightarrow min$

и вспомнить аналитическое решение данной задачи:

$A^{*} = (X^{T}X)^{-1}X^Tx$

Подставляя полученный вектор $A^*$ в выражение (11), получаем прогноз для значения ряда $x_{m+1}.$
Далее метод прогнозирования на один шаг будет использоваться для прогнозирования коэффициентов Фурье на следующий период.

Долгосрочное прогнозирование временных рядов с помощью рядов Фурье

Постоянная длина периода

Пусть дан временной ряд значений некоторого показателя

$f_1,f_2,….,f_s ;;;(14)$

при этом для значений последовательности (14) наблюдается определенная периодичность. Для исследования временного ряда (14) с постоянной периодичностью (например, продажи какого-либо товара по неделям) предлагается [1-2] использовать тригонометрические ряды Фурье. В этом случае весь набор наблюдений s можно разбить на m периодов длины l+1, а массив измерений (14) можно представить в виде матрицы

$quad begin{pmatrix} f_{10} & f_{11} & ... &f_{1l-1} &f_{1l} \ ... & ... & ... &... &... \ f_{m0} & f_{m1} & ... &f_{ml-1} &f_{ml} end{pmatrix} quad;;; (15)$

размерности $(l+1) times m,$ в которой каждая строка $(f_{i0}, f_{i1}, ldots, f_{il-1},f_{il})$ является значениями показателя i-го периода (например, i-й недели).
Значения $f_{it}, ; t=0,1,ldots, l$ объявляются значениями некоторой функции $f_i(t),$ где аргумент $t in [0; l].$ Функцию $f_i(t)$ предлагается заменить частной суммой тригонометрического ряда Фурье по косинусам [6].

$begin{aligned} &f_{i}(t)approx y_i(t), \ y_i(t) = frac{a_0^i}{2}+&sum_{k=1}^{N}a_k^icos⁡Bigl(frac{pi kt}{l}Bigr). end{aligned} ;;;(16)$

Таким образом, получаем для каждого i-го периода частичную сумму ряда Фурье со своими коэффициентами $a_0^i, a_1^i, ldots, a_N^i,$ для нахождения которых можно воспользоваться несколькими способами.

1 метод. Минимизация квадратичной ошибки

$Phi( a_0^i, a_1^i, ldots,a_N^i )=sum_{t=0}^{l}(f_{it}-y_{it} )^2→min$

где $y_{it}= y_{i}(t), ;i=1, ldots, m.$ Из условия минимума

$frac{partial Phi}{partial a_k^i}=0, ;;;k=0,1,ldots,N$

получаем систему уравнений для нахождения коэффициентов $a_0^i, a_1^i, ldots, a_N^i.$
Количество слагаемых N в этом случае нужно выбирать не более длины периода l.

2 метод. Непосредственно из формулы
Если выбрать N = l, то из формул (16) для определения коэффициентов $a_0^i, a_1^i, ldots, a_N^i$ получаем систему уравнений

$frac{a_0^i}{2}+sum_{k=1}^{N}a_k^icos⁡Bigl(frac{pi kt}{l}Bigr) = f_{it}, ;;t=0,1,ldots,l. ;;;(17)$

3 метод. Численное интегрирование
Вспомним, что

$a_k^i=frac{2}{l}int_{-l}^{l}f_i(t)cos Bigl(frac{k pi t}{l} Bigr)dt; ;; k=0,1,2,...,.$

Если длина периода l>20, то для нахождения коэффициентов $a_0^i, a_1^i, ldots, a_N^i$ можно воспользоваться формулами численного интегрирования, при этом достаточно формулы трапеций.

После того, как коэффициенты найдены, строится прогноз для следующего периода по формуле

$begin{aligned} y_{m+1}(t) = &frac{a_0^{m+1}}{2}+sum_{k=1}^{N}a_k^{m+1}cos Bigl(frac{pi kt}{l}Bigr), \ &t=1,2,...,l. end{aligned};;; (18) $

Переменная длина периода

Пусть теперь длина периода не является постоянной (например, количество дней в месяце). Пусть l – длина i-го периода, i=1, 2, …, m. Для каждого периода i имеем последовательность значений

$f_{i0},f_{i1},….,f_{il_i}$

Пусть вновь $f_{it} = f_i(t), ; t in [0,l_i].$ Выполним замену переменной

$x=frac{2pi t}{l_i}-pi, ;; x in [-pi, pi].$

Обозначим

$begin{aligned} widetilde{f}_i(x)&=f_iBigl(frac{l_i}{2pi}(x+pi)Bigr), ;;xin [-pi, pi], \ &x_t=frac{2pi t}{l_i}-pi, ;; t=1,2,...,l_i. end{aligned}$

Тогда $widetilde{f}_i(x_t) = f_i(t)=f_{it}.$ Заменим $widetilde{f}_i(x_t)$ на стандартном промежутке $[-pi, pi]$ частной суммой тригонометрического ряда Фурье

$begin{aligned} &widetilde{f}_{i}(x)approx y_i(x), \ y_i(t) = frac{a_0^i}{2}+sum_{k=1}^{N}&a_k^icos⁡(kx)+b_k^isin⁡(kx), end{aligned} ;;;(19)$

где

$begin{aligned} &a_{0}^i = frac{1}{pi} int_{-pi}^{pi} widetilde{f}_i(x)dx; \&a_{k}^i = frac{1}{pi} int_{-pi}^{pi} widetilde{f}_i(x)cos(kx)dx; \ &b_{k}^i = frac{1}{pi} int_{-pi}^{pi} widetilde{f}_i(x)sin(kx)dx.end{aligned}$

Коэффициенты $a_0^i, a_1^i, ldots, a_N^i, b_0^i, b_1^i, ldots, b_N^i$ так же, как и для случая постоянных значений длин периодов, можно найти из условия минимизации квадратичной ошибки

$Phi( a_0^i, a_1^i, ldots,a_N^i, b_0^i, b_1^i, ldots, b_N^i)=sum_{t=0}^{l}(f_{it}-y_{it} )^2→min ;;;(20)$

где $y_{it} = y_{i}(t), ; i=1,ldots, m.$ Количество слагаемых N в этом случае нужно выбирать не более половины длины периода l. Также можно посчитать коэффициенты непосредственно из формул (19), либо, при больших длинах периода, можно воспользоваться формулами трапеций.
Таким образом, способ нахождения коэффициентов Фурье для каждого периода зависит от постоянства длин периодов и от их длины. Значения найденных коэффициентов в зависимости от номера периода рассматриваем как временные ряды, которые нужно спрогнозировать на один следующий шаг.

Коэффициенты ряда Фурье

$a_{0}^{m+1},a_1^{m+1}, ldots,a_N^{m+1},b_{0}^{m+1},b_1^{m+1}, ldots,b_N^{m+1}$

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

$begin{aligned} y_{m+1}(t) = &frac{a_0^{m+1}}{2}+sum_{k=1}^{N}a_k^{m+1}cos⁡(kx)+b_k^{m+1}sin⁡(kx), \ &x_t=frac{2pi t}{l_{m+1}}-pi, ;; t=1,2,...,l_{m+1}. end{aligned};;; (21)$

Резюмируем: для долгосрочного прогнозирования временных рядов

  1. Наблюдения каждого периода (каждой недели или каждого месяца) $ f_{it}, ; t=0,1,ldots,l$ объявляются значениями некоторой функции $f_{i}(t)$
  2. Функция $f_{i}(t)$ заменяется частной суммой ряда Фурье
  3. Из условия минимума квадратичной ошибки (20) или каким-либо другим способом находятся коэффициенты ряда Фурье для известных периодов
  4. Найденные коэффициенты рассматриваются как временные ряды в зависимости от номера периода
  5. Для каждого коэффициента строится своя матрица задержек и делается прогноз этого коэффициента на следующий период
  6. По спрогнозированным коэффициентам Фурье по формуле (21) находятся значения неизвестной функции (временного ряда) для следующего периода

Немного кода

Попробуем применить данный алгоритм на реальных данных. Возьмем с сайта Росстата среднюю зарплату в России по месяцам за период с 2013-го по 2018-й г.

Код

import math
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics import mean_absolute_error, mean_absolute_percentage_error
sns.set()

data = pd.read_excel('mean_salary.xlsx')
data

image

Преобразуем данные в удобный формат в виде ряда и построим график

Код

#сюда положим ряд, составленный из средних зп
salary_series = pd.Series()

for _, row in data.drop('year', axis=1).iterrows():
    salary_series = salary_series.append(pd.Series(row.values))

#используем даты в качестве индексов
salary_series.index = pd.date_range('2013-01-01', freq='M', periods=6*12)

#построим график
salary_series.plot(figsize=(12, 6), linewidth=2, fontsize=13)
plt.title('Среднемесячная ЗП в России', fontsize=15)
plt.xlabel('Дата', fontsize=14)
plt.ylabel('Среднемесячная ЗП, руб.', fontsize=14)
plt.show()

image

Разделим данные на тренировочный (2013 — 2017 гг.) и тестовый (2018 г.) наборы.

train_series = salary_series[salary_series.index.year<2018]
test_series = salary_series[salary_series.index.year==2018]

Перейдем к реализации алгоритма. Наш временной ряд состоит из 5-ти периодов одинаковой длины (12 месяцев), поэтому будем представлять неизвестную функцию в виде формулы (16). Для поиска коэффициентов $a^i_k$ из формул (17) получаются системы уравнений

$quad begin{pmatrix} frac{1}{2} & 1 & 1 & ... & 1 \ frac{1}{2} & cosBigl( frac{pi}{l} Bigr) & cosBigl( frac{2pi}{l} Bigr) & ... &cosBigl( frac{Npi}{l} Bigr) \ frac{1}{2} & cosBigl(frac{2pi}{l} Bigr) & cosBigl(frac{4pi}{l} Bigr) & ... &cosBigl( frac{2Npi}{l} Bigr) \ ... & ... & ... &... \ frac{1}{2}& cos(pi) & cos(2 pi)& ... &cos(N pi) end{pmatrix} quad begin{pmatrix} a^i_0 \ a^i_1 \ a^i_2\... \ a^i_N end{pmatrix} = begin{pmatrix} f^i_0 \ f^i_1 \ f^i_2\... \ f^i_N end{pmatrix}$

Код

def cos(k, t, l):
    """
    Вспомогательная функция косинуса
    """
    return math.cos(math.pi*k*t/l)


def get_matrix_and_vector(period_i: np.ndarray) -> (np.ndarray, np.ndarray):
    
    """
    Возвращает матрицу и вектор свободных членов для нахождения коэффициентов Фурье для i-го периода.
    
    period_i - наблюдения i-го периода
    """
    
    l = len(period_i) - 1
    N = l
        
    y = np.empty((0,))
    matrix = np.empty((0, N+1))
    
    for t in range(0, l+1):
        #первое значение в каждой строке 1/2 -- множитель перед коэффициентом a_0
        row = np.array([.5])
        
        for k in range(1, N+1):
            row = np.append(row, cos(k, t, l))

        row = np.reshape(row, (1, N+1))
        matrix = np.append(matrix, row, axis=0)
        y = np.append(y, period_i[t])
 
    return matrix, y


def solve_system(M: np.ndarray, 
                 b: np.ndarray) -> np.ndarray:
    
    """
    Решает систему линейных уравнений
    M - основная матрица системы
    b - столбец свободных членов
    """
    
    assert np.linalg.det(M) != 0
    return np.linalg.solve(M, b)

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

Код

def get_matrix_from_series(input_series: pd.Series, 
                           m: int, 
                           l: int):
    """
    Преобразует входной ряд в матрицу, 
    где каждая i-я строка -- наблюдения для i-го периода
    
    input_series -- входной ряд
    m -- количество периодов
    l - длина периода
    """
    
    return input_series.values.reshape(m, l)


def get_delay_matrix(input_vector: np.ndarray, 
                     p: int = 1) -> np.ndarray:
    """
    Строит матрицу задержек по входному вектору и величине задержек
    input_vector - входной вектор
    p - величина задержек
    """
    
    input_vector_copy = np.copy(input_vector)
    
    m = input_vector_copy.shape[0] % p
    
    #если длина ряда не кратна p, то удаляем несколько первых значений ряда
    if m != 0:
        input_vector_copy = np.delete(input_vector_copy, range(m))
    
    #определяем размерность матрицы зарежек
    row_dim = input_vector_copy.shape[0] // p
    col_dim = p
    
    #строим матрицу
    delay_matrix = np.resize(input_vector_copy, 
                             new_shape=(row_dim, col_dim)).T    
    
    return delay_matrix


def find_nearest(row: np.ndarray, 
                 p: int) -> set:
    """
    Возвращает индексы ближайших соседей для последнего элемента строки
    row - входная строка
    p - величина задержек
    """
    
    #количество соседей
    neighbors_cnt = 2 * p + 1
    
    last_element = row[-1]
    all_neighbors = row[:-1]

    #находим индексы ближайших соседей
    idx = set(np.argsort(np.abs(all_neighbors-last_element))[:neighbors_cnt])
        
    return idx


def predict_by_one_step(input_vector: np.ndarray, 
                        p: int = 1) -> float :
    """
    Прогнозирование на один шаг с помощью аналитического решения
    input_vector - входной вектор
    p - величина задержек
    """
    
    delay_matrix = get_delay_matrix(input_vector, p)
    last_row = delay_matrix[-1,:]
    nearest_neighbors_indexes = find_nearest(last_row, p)
    
    y = np.empty((0,))
    X = np.empty((0, p+1))
    for index in nearest_neighbors_indexes:
        y = np.append(y, delay_matrix[0, index+1])
        row = np.append(np.array([1]), delay_matrix[:, index])
        row = np.reshape(row, (1, p+1))
        X = np.append(X, row, axis=0)
    
    coef = np.dot(np.dot(np.linalg.inv(np.dot(X.T, X)), X.T), y)
    prediction = sum(np.append(np.array([1]), delay_matrix[:, -1]) * coef)
    
    return prediction

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

Код

def get_new_fourier_coefs(periods: np.ndarray, 
                          p: int = 1) -> list:
    
    """
    Возвращает коэффициенты Фурье для неизвестного периода
    periods - матрица наблюдений для известных периодов, где i-я строчка -- наблюдения i-го периода
    p - величина задержек
    
    """
    
    #список с предсказанными на след. период коэффициентами
    new_coefs = []
    
    #матрица с коэффициентами Фурье за все периоды. Строки -- коэфициенты за период
    coefs_for_all_periods = []
    
    for period in periods:
        
        X, y = get_matrix_and_vector(period)
        
        #находим коэффициенты Фурье, как решение системы линейных уравнений
        fourier_coef_for_period = solve_system(X, y)
        
        coefs_for_all_periods.append(fourier_coef_for_period)
    
    coefs_for_all_periods = np.array(coefs_for_all_periods)
    
    #Прогноз каждого коэффициента Фурье a_k для неизвестного периода
    #Каждый коэф. Фурье рассматривается как временной ряд, который прогнозируется на один шаг
    for i in range(coefs_for_all_periods.shape[1]):
        coef_for_next_period = predict_by_one_step(coefs_for_all_periods[:, i], p=p)
        new_coefs.append(coef_for_next_period)

    return new_coefs


def predict_next_period(new_coefs: list, 
                        l: int):
    """
    Прогнозирует временной ряд на неизвестный период
    
    new_coefs - коэффициенты Фурье для следующего периода
    l - длина периода
    """
    
    new_period = []
    for t in range(0, l):
        s = new_coefs[0] / 2
        for k in range(1, len(new_coefs)):
            s += new_coefs[k]*cos(k, t, l=l-1)

        new_period.append(s)
    
    return new_period

Предскажем тестовый период и сравним с реальными результатами.

Код

m = 5 #количество периодов в train выборке
l = 12 #длина периода
p = 1 #величина задержек

matrix = get_matrix_from_series(train_series, m, l)
new_coefs = get_new_fourier_coefs(matrix, p)
test_pred = predict_next_period(new_coefs, l)
test_pred = pd.Series(test_pred, index=test_series.index)

#ошибка прогноза
mae = round(mean_absolute_error(test_pred, test_series), 2)
mape = round(mean_absolute_percentage_error(test_series, test_pred), 3)


#построим график
test_pred.plot(figsize=(12, 6), linewidth=3, 
               fontsize=13, label='Прогноз')

test_series.plot(figsize=(12, 6), linewidth=3, 
                 fontsize=13, label='Факт')

plt.legend(fontsize=15)
plt.text(test_series.index[4], 55000, f'Mean absolute error = {mae}', fontsize=15)
plt.text(test_series.index[4], 54000, f'Mean absolute percentage error = {mape}', fontsize=15)
plt.title('Сравнение прогноза и факта среднемесячной ЗП в РФ на 2018-й год', fontsize=15)
plt.xlabel('Дата', fontsize=14)
plt.ylabel('Среднемесячная ЗП, руб.', fontsize=14)
plt.show()

image

Весь код и данные доступны по ссылке на гитхабе.

Благодарю авторов статей [1, 2] за помощь и консультацию при подготовке данной статьи.

Список литературы

  1. П.А. Гатин,  В.Н. Семенова, Исследование циклических временных рядов с переменной цикличностью методом рядов Фурье, Вестник ДИТИ, 2018. – № 1(15). – С.91-96
  2. П.А. Гатин,  В.Н. Семенова, Об одном подходе к исследованию временных рядов с постоянной цикличностью, ДИТИ НИЯУ МИФИ, 2017. – С. 48-51
  3. А.Н. Колмогоров, С.В. Фомин – Элементы теории функций и функционального анализа
  4. В.Н. Афанасьев, М.М. Юзбашев, Анализ временных рядов и прогнозирование – М.: Финансы и статистика, Инфра-М, 2010. – 320 c.
  5. А.Ю. Лоскутов, О.Л. Котляров, И.А. Истомин, Д.И. Журавлев. Проблемы нелинейной динамики. III. Локальные методы прогнозирования временных рядов. Вестн. Моск. ун-та, сеp. Физ.-астр., 2002, No6, c.3–21.
  6. О.С. Амосов, О.С., Муллер Н.В. Исследование временных рядов с применением методов фрактального и вейвлет анализа, Интернет-журнал «НАУКОВЕДЕНИЕ», Выпуск 3

As an alternative explanation, consider the following intuition:

When minimizing an error, we must decide how to penalize these errors. Indeed, the most straightforward approach to penalizing errors would be to use a linearly proportional penalty function. With such a function, each deviation from the mean is given a proportional corresponding error. Twice as far from the mean would therefore result in twice the penalty.

The more common approach is to consider a squared proportional relationship between deviations from the mean and the corresponding penalty. This will make sure that the further you are away from the mean, the proportionally more you will be penalized. Using this penalty function, outliers (far away from the mean) are deemed proportionally more informative than observations near the mean.

To give a visualisation of this, you can simply plot the penalty functions:

Comparison of MAD and MSE penalty functions

Now especially when considering the estimation of regressions (e.g. OLS), different penalty functions will yield different results. Using the linearly proportional penalty function, the regression will assign less weight to outliers than when using the squared proportional penalty function. The Median Absolute Deviation (MAD) is therefore known to be a more robust estimator. In general, it is therefore the case that a robust estimator fits most of the data points well but ‘ignores’ outliers. A least squares fit, in comparison, is pulled more towards the outliers. Here is a visualisation for comparison:

Comparison of OLS vs a robust estimator

Now even though OLS is pretty much the standard, different penalty functions are most certainly in use as well. As an example, you can take a look at Matlab’s robustfit function which allows you to choose a different penalty (also called ‘weight’) function for your regression. The penalty functions include andrews, bisquare, cauchy, fair, huber, logistic, ols, talwar and welsch. Their corresponding expressions can be found on the website as well.

I hope that helps you in getting a bit more intuition for penalty functions :)

Update

If you have Matlab, I can recommend playing with Matlab’s robustdemo, which was built specifically for the comparison of ordinary least squares to robust regression:

robustdemo

The demo allows you to drag individual points and immediately see the impact on both ordinary least squares and robust regression (which is perfect for teaching purposes!).

As an alternative explanation, consider the following intuition:

When minimizing an error, we must decide how to penalize these errors. Indeed, the most straightforward approach to penalizing errors would be to use a linearly proportional penalty function. With such a function, each deviation from the mean is given a proportional corresponding error. Twice as far from the mean would therefore result in twice the penalty.

The more common approach is to consider a squared proportional relationship between deviations from the mean and the corresponding penalty. This will make sure that the further you are away from the mean, the proportionally more you will be penalized. Using this penalty function, outliers (far away from the mean) are deemed proportionally more informative than observations near the mean.

To give a visualisation of this, you can simply plot the penalty functions:

Comparison of MAD and MSE penalty functions

Now especially when considering the estimation of regressions (e.g. OLS), different penalty functions will yield different results. Using the linearly proportional penalty function, the regression will assign less weight to outliers than when using the squared proportional penalty function. The Median Absolute Deviation (MAD) is therefore known to be a more robust estimator. In general, it is therefore the case that a robust estimator fits most of the data points well but ‘ignores’ outliers. A least squares fit, in comparison, is pulled more towards the outliers. Here is a visualisation for comparison:

Comparison of OLS vs a robust estimator

Now even though OLS is pretty much the standard, different penalty functions are most certainly in use as well. As an example, you can take a look at Matlab’s robustfit function which allows you to choose a different penalty (also called ‘weight’) function for your regression. The penalty functions include andrews, bisquare, cauchy, fair, huber, logistic, ols, talwar and welsch. Their corresponding expressions can be found on the website as well.

I hope that helps you in getting a bit more intuition for penalty functions :)

Update

If you have Matlab, I can recommend playing with Matlab’s robustdemo, which was built specifically for the comparison of ordinary least squares to robust regression:

robustdemo

The demo allows you to drag individual points and immediately see the impact on both ordinary least squares and robust regression (which is perfect for teaching purposes!).

Понравилась статья? Поделить с друзьями:
  • Место встречи изменить нельзя как понять
  • Мерседес ошибка с1140
  • Мерседес 210 ошибка p1570
  • Меррит vast error
  • Меркурий 231 ошибка е01 что значит