Какой метод многомерной интерполяции лучше всего подходит для практического использования?

В статье Питера Альфреда о многовариантной интерполяции рассеянных данных он упомянул, что из множества схем лишь немногие действительно популярны среди практиков. Он назвал, например, метод Шепарда и Hardy Multiquadrics. Но этой статье уже почти 20 лет, и что действительно интересно, так это то, какие методы сейчас широко используются.

Если у вас есть опыт использования каких-либо схем пространственной интерполяции, расскажите об этом.

UPD: Чтобы сделать этот вопрос более конкурентоспособным, я его переформулировал. Это было «Какие методы многомерной интерполяции вы когда-либо использовали?»

Ответов (5)

Решение

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

единственное приложение, которое я видел, это приложение в коде littleCMS (движок управления цветом с открытым исходным кодом).

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

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

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

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

(Это будет долго, если только я не выдохнусь.)

Во-первых, несколько комментариев по поводу нераспространенных данных. (См. Ответ со ссылкой на littleCMS)

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

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

Теперь позвольте мне перейти к вопросу об истинной интерполяции разрозненных данных.

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

Что касается этих проблем, все эти методы, которые я классифицировал как варианты RBF, часто имеют ограниченное количество точек, с которыми они могут комфортно справиться. В зависимости от того, как вы справляетесь с задачами и от объема доступной памяти, этот предел часто может составлять порядка нескольких тысяч баллов.

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

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

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

Здесь должны быть очевидны основные компромиссы. Если вам нужен гладкий интерполянт и у вас всего несколько точек, часто выбирают методы RBF. Они просты, удобны в использовании и т. Д. Фактически выбранный метод часто является просто вопросом удобства или даже привычки. Если бы я использовал один инструмент раньше и был счастлив, я, вероятно, буду счастлив с ним снова. Поскольку вопрос заключался в том, какой метод «лучше всего подходит для практического использования», я отмечу, что слово «лучший» является очень субъективным, когда применяется вне контекста. Каковы ваши цели в задаче интерполяции? Каким набором навыков вы владеете? Какой набор инструментов ты умеешь использовать? В какой среде вы будете работать? Все эти факторы повлияют на ваш выбор лучшего метода.

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

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

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

Я закончу здесь, прежде чем это превратится в книгу.

(Год спустя) см. Inverse-distance-weighted-idw-interpolation-with-python , комбинацию взвешивания обратного расстояния и scipy.spatial.KDTree.