Big Data, чтоб их... (2)

Oct 12, 2021 17:24

Вчера получил упоротое уравнение, чтобы найти, с какими весами нужно брать результаты измерений, чтобы получить наименее шумную и при этом несмещённую оценку вектора параметров:



Слева блочная матрица, составленная из ковариационных матриц шума измерений. Для простейшего примера, где N=M=2 (два параметра, измеряются дважды), всё получилось правильно.

Сегодня решил проверить ещё один "примитивный частный случай", когда M=1, то есть мы измеряем одну-единственную величину, но много раз (N раз). Пока ковырял его - нашёл, где ошибся с множителями Лагранжа, решил наконец через них - вышло существенно компактнее...


Сначала всё-таки хочу продемонстрировать, что результат выше тоже приводит к правильным результатам, по крайней мере, в "примитивном частном случае" M=1. Вместо ковариационных матриц получаем просто N дисперсий - значение шума при каждом опыте. Тогда матрица не блочная, а самая обычная, да ещё и можно её вот так представить:





И тогда по формуле Шермана-Мориссона её можно относительно легко обратить...

Получается нечто такое (эту здоровенную матрицу назвал C, не знаю почему, надо было её как-то назвать):



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



И если "увидеть" в единичке дробь DN/DN, получится:



Это хороший знак: сумма обратных дисперсий обязана была там вылезти, обзовём её S:



И после некоторых мучений всё-таки приходим к правильному результату:



То есть, веса берутся обратно пропорционально дисперсии шума при данном измерении. В сумме же они дают единицу.

Но ведь я тот же результат получал ощутимо проще когда-то!

Записывал дисперсию:



Требовал, чтобы сумма весов была единичной, и находил экстремум с помощью множителей Лагранжа:



Занулял все частные производные, что приводило к уравнениям:











Все значения ak выражал через λ подставлял в нижнее уравнение, откуда находил λ, а отсюда и все веса:



В этом "одномерном случае" метод множителей Лагранжа срабатывает на ура!

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

Сейчас, смеху ради, попробовал с этим квадратом посмотреть одномерный случай:



И тогда частные производные выходят такие:



Но выражение в скобках заведомо равно нулю, так что λ из всех выкладок "вылетает", и выходят абсурдные результаты



Вся проблема в том, что функция, которая умножается на λ, имеет ВСЕ частные производные равные нулю в интересующих нас точках! По-моему, ни одного такого дурного примера на матане нам не давали, чтобы ответом было "здесь Лагранж неприменим, надо как-то окольными путями идти", так что я и забыл уже о таком ограничении!

Видимо, вместо скалярного λ надо будет взять векторный, т.е первая компонента вектора разности умножить на λ1, вторая компонента на λ2, и так далее:



Вот теперь, если взять дифференциал и приравнять нулю коэффициенты при всех малых 1-го порядка, получим условия:













И приходим к такому способу решения:
1. Решаем уравнение



(z - индекс, показывающий, который из M параметров мы вообще пытаемся найти)

Сумма обратных матриц будет иметь размер M×M, λ - вектор M×1.

2. Находим:









Да, здесь нужно все ковариационные матрицы обратить, но всё-таки обратить десяток матриц 6×6 - это, пожалуй, не так плохо, как решать уравнение с матрицей 54×54...

Можно одним махом находить веса для всех M параметров, что мы пытаемся оценить. Для этого находим матрицу R (от слова Reciprocal - "обратная"):



И затем нужные веса укладываются в N матриц Ak, каждая размером M×M:



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

Такое меня больше устраивает - не нужно эти жуткие блочные матрицы собирать, всё укладывается в размеры M×M, в моём случае 6×6 (три компоненты параллельного переноса и три угла)

Надо, правда, чтобы матрицы были невырождены, так что первый пример со 100% корреляцией здесь не пройдёт. Но "в реальной жизни" у меня 100% корреляции и не будет никогда, так что пущай!

Вот теперь пора это дело испытать на "модельных" результатах...

моделирование, странные девайсы, математика, Монте-Карло для чайников, работа

Previous post Next post
Up