Я беру курс по научным вычислениям, и мы только что подошли к приближению наименьших квадратов. Мой вопрос конкретно об аппроксимации с использованием полиномов. Я понимаю, что если у вас n + 1 точек данных, вы можете найти уникальный многочлен степени n, который описывает все эти точки. Но я также понимаю, почему это не всегда идеально. При таком подходе вы можете получить много шума между точками данных. Я полагаю, было бы неплохо получить многочлен более низкой степени, который достаточно хорошо оценивает ваши данные.
Мой вопрос: как вы решаете на практике, какую степень полинома вы собираетесь использовать? Есть ли эмпирическое правило или оно зависит исключительно от проблемы? Должны ли мы принимать во внимание различные компромиссы при выборе между более или менее степенями? Или я что-то здесь неправильно понимаю?
Заранее спасибо.
источник
Ответы:
Наиболее важным аспектом интерполяции и подбора кривой является понимание того, почему полиномиальные соответствия высокого порядка могут быть проблемой, и каковы другие варианты, и тогда вы сможете понять, когда они являются / не являются хорошим выбором.
Несколько проблем с полиномами высокого порядка:
Полиномы - это естественно колебательные функции. По мере увеличения порядка многочлена число колебаний увеличивается, и эти колебания становятся более серьезными. Я упрощаю, возможность множественных и мнимых корней делает его немного более сложным, но суть одна и та же.
Полиномы приближаются к +/- бесконечности со скоростью, равной порядку полиномов, когда x стремится к +/- бесконечности. Это часто не желаемое поведение.
Вычисление полиномиальных коэффициентов для полиномов высокого порядка обычно является плохо обусловленной проблемой. Это означает, что небольшие ошибки (например, округление на вашем компьютере) могут привести к значительным изменениям в ответе. Линейная система, которая должна быть решена, включает Матрицу Вандермонда, которая легко может быть плохо обусловлена.
Я думаю, что, возможно, суть этой проблемы - различие между подгонкой кривой и интерполяцией .
Интерполяция используется, когда вы считаете, что ваши данные очень точны, поэтому вы хотите, чтобы ваша функция точно соответствовала точкам данных. Когда вам нужны значения между точками данных, обычно лучше использовать гладкую функцию, которая соответствует локальной тенденции данных. Кубические или эрмитовы сплайны часто являются хорошим выбором для такого типа проблем, поскольку они гораздо менее чувствительны к нелокальным (то есть в точках данных, удаленных от заданной точки) изменениям или ошибкам в данных и менее колебательны, чем полиномиальные. Рассмотрим следующий набор данных:
Подгонка полинома имеет гораздо большие колебания, особенно вблизи краев набора данных, чем сплайн Эрмита.
С другой стороны, приближение наименьших квадратов - это криваятехника. Подгонка кривой используется, когда у вас есть представление об ожидаемой функциональности ваших данных, но вам не требуется, чтобы ваша функция точно проходила через все точки данных. Это типично, когда данные могут содержать ошибки измерения или другие неточности или когда вы хотите извлечь общую тенденцию данных. Аппроксимация по методу наименьших квадратов чаще всего вводится в курсе с использованием полиномов для подбора кривой, потому что это приводит к линейной системе, которую относительно просто решить, используя методы, которые вы, вероятно, изучили ранее в своем курсе. Однако методы наименьших квадратов являются гораздо более общими, чем просто полиномиальные подгонки, и их можно использовать для подгонки любой желаемой функции к набору данных. Например, если вы ожидаете экспоненциального роста в вашем наборе данных,
Наконец, выбор правильной функции для ваших данных так же важен, как и правильное выполнение вычислений интерполяции или наименьших квадратов. Это даже допускает возможность (осторожной) экстраполяции. Рассмотрим следующую ситуацию. Приведенные данные о населении (в миллионах человек) для США за 2000-2010 годы:
Использование экспоненциального линеаризованного наименьших квадратов
N(t)=A*exp(B*t)
или полиномиального интерполятора 10-го порядка дает следующие результаты:Рост населения США не совсем экспоненциальный, но я позволю вам судить о лучшей форме.
источник
Очень ненаучно, но хорошее эмпирическое правило заключается в том, что полиномы 3-й степени, как правило, являются хорошим началом, и на практике я никогда не видел, чтобы кто-нибудь использовал более 6-й степени, чтобы получить хорошие результаты.
«Идеальным» полиномом будет тот самый низкий порядок, который представляет бесшумные данные достаточно хорошо для вашей цели.
Если ваши данные достаточно малы, чтобы разрешить это (обычно это так), вы можете просто попробовать подгонять полиномы более высокого порядка, пока не начнете видеть колебания, которые, как правило, являются признаком «переобучения».
Альтернативой может быть сглаживающий сплайн , но он очень сильно зависит от приложения. Сплайны и сглаживающие сплайны хороши только для интерполяции. Для зашумленных данных я предпочитаю подгонку полиномов к сглаживанию сплайнов, но данные, с которыми я работаю, обычно хорошо аппроксимируются полиномами.
источник
Прилично-эффективный подход, который я использовал с полиномиальной аппроксимацией, состоит в том, чтобы вычислить полиномы наименьших квадратов для различных степеней (например, от 1 до 10), а затем выбрать кривую, которая минимизирует среднеквадратичную ошибку в точках, находящихся на полпути между последовательными (когда отсортировано по x) точкам в вашем наборе данных. Это помогает исключить кривые со слишком сильными колебаниями.
источник