Информация об изменениях

Сообщение Re: Сплайны и модель двумерной поверхности от 26.03.2019 2:43

Изменено 26.03.2019 4:04 De-Bill

Re: Сплайны и модель двумерной поверхности
K>Имеем набор коэффициентов a,b,c…,g,h… Их можно подогнать для минимизации среднекрадратичного отличия от исходных значений z каждой точки и рассчитанных согласно модели. Эта задача, как я понял, достаточно простая: мы знаем что в минимуме производная МНК-функционала (сумма квадратов различий исходных данных и рассчитанных) по каждому оптимизируемому коэффициенту равна нулю.

Это линейная в параметрах модель и имеет простое решение в матрицах (если матрица full column rank). Единственное, для твоего случая такой подход не работает. Но в нём есть один полезный момент: использование техники basis expansion — входной вектор (x, y) расширяется до (1, x, y, x^2, y^2,...). Сплайны также используют basis expansion, только более навороченный.

K>В моей же программе, в которой взяты формулы из книги “Численные методы”, сплайн не второй, а третьей степени. Значит, коэффициентов, которые нужно найти, в 4/3 раза больше, т.е. надо добавить ещё уравнений. Я тут не очень понимаю – каких именно?


Лучше почитать в литературе (гугли по Natural Cubic Spline и B-spline), но, насколько я помню, ограничения на узлы для кубических сплайнов: равенство значений, равенство первой производной, равенство второй производной (три уравнений на узел), узлов на 1 меньше, чем регионов, 4 параметра на регион. Плюс в Natural Cubic Spline есть ограничение на поведение сплайна за границами крайних узлов (линейное). Но всё это не сильно важно. Важно, что как и в твоём варианте, это basis expansion. Ты входной вектор (x) в одномерном варианте расширяешь до вектора (1, x, h1(x), h2(x), ...). Далее получается линейная в параметрах модель.

K>Может быть, нужно ещё минимизировать интеграл от квадрата второй производной всей функции?


Есть и такой подход. Это smoothing spline. Проблема предыдущего подхода — выбор узловых точке. Не совсем понятно, как и где их расставлять. Подход с интегралом — расставляем точке во всех уникальных значениях x (которые у тебя есть), а чтобы линия не сильно виляла, добавляем регуляризацию: минимизируем квадрат ошибки плюс интеграл второй производной, помноженный на какой-то численный параметр. Для одномерного случая делается несложно, но муторно. Для двухмерного, наверное, всё гораздо сложнее.

K>А когда я буду переходить от одномерной задачи к двумерной, тут вообще получается тёмный лес.


Для многомерных сплайнов есть несколько подходов:
1. Basis expansion без взаимодействия (x, y) -> (1, x, h1(x), h2(x), ..., y, n1(y), n2(y), ...)
2. Basis expansion с тензорным произведением (x, y) -> (1, x, h1(x), h2(x), ..., y, n1(y), n2(y), ..., h1(x)*n1(y), ... всевозможные произведения)
Здесь также получается линейная модель с кучей параметров.

3. Thin-plate spline: с регуляризацией, например, в виде интеграла квадрата второй производной.

Вообще, не уверен, что чем-то тебе помог, гугли по ключевым словам:
1. Linear regression.
2. Linear regression with basis expansion
3. Linear regression with regularization
4. Natural cubic spline
5. B-Spline
6. Multidimensional spline
7. Thin-plate spline

С реализацией некоторых моментов тоже могу подсказать, но только на питоне.
Re: Сплайны и модель двумерной поверхности
K>Имеем набор коэффициентов a,b,c…,g,h… Их можно подогнать для минимизации среднекрадратичного отличия от исходных значений z каждой точки и рассчитанных согласно модели. Эта задача, как я понял, достаточно простая: мы знаем что в минимуме производная МНК-функционала (сумма квадратов различий исходных данных и рассчитанных) по каждому оптимизируемому коэффициенту равна нулю.

Это линейная в параметрах модель и имеет простое решение в матрицах (если матрица full column rank). Единственное, для твоего случая такой подход не работает. Но в нём есть один полезный момент: использование техники basis expansion — входной вектор (x, y) расширяется до (1, x, y, x^2, y^2,...). Сплайны также используют basis expansion, только более навороченный.

K>В моей же программе, в которой взяты формулы из книги “Численные методы”, сплайн не второй, а третьей степени. Значит, коэффициентов, которые нужно найти, в 4/3 раза больше, т.е. надо добавить ещё уравнений. Я тут не очень понимаю – каких именно?


Лучше почитать в литературе (гугли по Natural Cubic Spline и B-spline), но, насколько я помню, ограничения на узлы для кубических сплайнов: равенство значений, равенство первой производной, равенство второй производной (три уравнений на узел), узлов на 1 меньше, чем регионов, 4 параметра на регион. Плюс в Natural Cubic Spline есть ограничение на поведение сплайна за границами крайних узлов (линейное). Но всё это не сильно важно. Важно, что как и в твоём варианте, это basis expansion. Ты входной вектор (x) в одномерном варианте расширяешь до вектора (1, x, h1(x), h2(x), ...). Далее получается линейная в параметрах модель.

K>Может быть, нужно ещё минимизировать интеграл от квадрата второй производной всей функции?


Есть и такой подход. Это smoothing spline. Проблема предыдущего подхода — выбор узловых точек. Не совсем понятно, как и где их расставлять. Подход с интегралом — расставляем точки во всех уникальных значениях x (которые у тебя есть), а чтобы линия не сильно виляла, добавляем регуляризацию: минимизируем квадрат ошибки плюс интеграл второй производной, помноженный на какой-то численный параметр. Для одномерного случая делается несложно, но муторно. Для двухмерного, наверное, всё гораздо сложнее.

K>А когда я буду переходить от одномерной задачи к двумерной, тут вообще получается тёмный лес.


Для многомерных сплайнов есть несколько подходов:
1. Basis expansion без взаимодействия (x, y) -> (1, x, h1(x), h2(x), ..., y, n1(y), n2(y), ...)
2. Basis expansion с тензорным произведением (x, y) -> (1, x, h1(x), h2(x), ..., y, n1(y), n2(y), ..., h1(x)*n1(y), ... всевозможные произведения)
Здесь также получается линейная модель с кучей параметров.

3. Thin-plate spline: с регуляризацией, например, в виде интеграла квадрата второй производной.

Вообще, не уверен, что чем-то тебе помог, гугли по ключевым словам:
1. Linear regression.
2. Linear regression with basis expansion
3. Linear regression with regularization
4. Natural cubic spline
5. B-Spline
6. Multidimensional spline
7. Thin-plate spline

С реализацией некоторых моментов тоже могу подсказать, но только на питоне.