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


11

Я беру курс по научным вычислениям, и мы только что подошли к приближению наименьших квадратов. Мой вопрос конкретно об аппроксимации с использованием полиномов. Я понимаю, что если у вас n + 1 точек данных, вы можете найти уникальный многочлен степени n, который описывает все эти точки. Но я также понимаю, почему это не всегда идеально. При таком подходе вы можете получить много шума между точками данных. Я полагаю, было бы неплохо получить многочлен более низкой степени, который достаточно хорошо оценивает ваши данные.

Мой вопрос: как вы решаете на практике, какую степень полинома вы собираетесь использовать? Есть ли эмпирическое правило или оно зависит исключительно от проблемы? Должны ли мы принимать во внимание различные компромиссы при выборе между более или менее степенями? Или я что-то здесь неправильно понимаю?

Заранее спасибо.


2
Я думаю, что на практике люди используют такие вещи, как сплайн-интерполяция en.wikipedia.org/wiki/Spline_interpolation, так что используются полисы низкого порядка, но они хорошо сочетаются друг с другом по всему домену. Таким образом, не нужно угадывать общий порядок полиномов.
Насер

Спасибо за ссылку. Мы еще не прошли сплайны, так что это интересное чтение.
Удай Прамод

Что именно вы хотите сделать? Вы пытаетесь интерполировать точки или подгонять данные? Например, бесполезно интерполировать данные, которые состоят из нормального распределения с шумом. Для первых, ответ Насера ​​хорош. В последнем случае функция подбора зависит исключительно от рассматриваемой проблемы и во многих случаях не является полиномиальной.
hauntergeist

Возможно, вас заинтересуют ответы на этот вопрос по перекрестной валидации .
Борт

Ответы:


18

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

Несколько проблем с полиномами высокого порядка:

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

  • Полиномы приближаются к +/- бесконечности со скоростью, равной порядку полиномов, когда x стремится к +/- бесконечности. Это часто не желаемое поведение.

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

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

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

x = 1   2   3   4   5   6   7   8   9  10
y = 1   1 1.1   1   1   1   1   1   1   1

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

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

Наконец, выбор правильной функции для ваших данных так же важен, как и правильное выполнение вычислений интерполяции или наименьших квадратов. Это даже допускает возможность (осторожной) экстраполяции. Рассмотрим следующую ситуацию. Приведенные данные о населении (в миллионах человек) для США за 2000-2010 годы:

Year:  2000   2001   2002   2003   2004   2005   2006   2007   2008   2010
Pop.: 284.97 287.63 290.11 292.81 295.52 298.38 301.23 304.09 306.77 309.35

Использование экспоненциального линеаризованного наименьших квадратов N(t)=A*exp(B*t)или полиномиального интерполятора 10-го порядка дает следующие результаты:
Население

Рост населения США не совсем экспоненциальный, но я позволю вам судить о лучшей форме.


1
Одно замечание, которое я хотел бы сделать с вашим графиком населения США, по памяти - хорошее совпадение с доменом не означает, что оно будет хорошо экстраполироваться. В этом свете может показаться неправильным показывать большие полиномиальные ошибки за пределами региона, в котором у вас есть данные.
Дэрил

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

@DougLipinski Спасибо за проницательный ответ. Можете ли вы объяснить, что вы подразумеваете под линеаризованными наименьшими квадратами против наименьших квадратов?
bela83

@ bela83 Правильный ответ, это было бы слишком долго для комментария. Я думаю, что это был бы очень хороший новый вопрос, если вы хотите задать его.
Дуг Липински

@DougLipinski Я попробую!
bela83

2

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

«Идеальным» полиномом будет тот самый низкий порядок, который представляет бесшумные данные достаточно хорошо для вашей цели.

Если ваши данные достаточно малы, чтобы разрешить это (обычно это так), вы можете просто попробовать подгонять полиномы более высокого порядка, пока не начнете видеть колебания, которые, как правило, являются признаком «переобучения».

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


1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.