nabbla (nabbla1) wrote,
nabbla
nabbla1

Categories:

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

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



Слева блочная матрица, составленная из ковариационных матриц шума измерений. Для простейшего примера, где 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% корреляции и не будет никогда, так что пущай!

Вот теперь пора это дело испытать на "модельных" результатах...
Tags: Монте-Карло для чайников, математика, моделирование, работа, странные девайсы
Subscribe

  • Ремонт лыжных мостиков

    Вернулся с сегодняшнего субботника. Очень продуктивно: отремонтировали все ТРИ мостика! Правда, для этого надо было разделиться, благо народу…

  • Гетто-байк

    В субботу во время Великой Октябрьской резни бензопилой умудрился петуха сломать в велосипеде. По счастью, уже на следующий день удалось купить…

  • А всё-таки есть польза от ковариаций

    Вчера опробовал "сценарий", когда варьируем дальность от 1 метра до 11 метров. Получилось, что грамотное усреднение - это взять с огромными весами…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments