Применение фильтра Калмана для обработки последовательности GPS-координат. Калмановская фильтрация Оптимальная матрица коэффициентов усиления

Транскрипт

1 # 09, сентябрь 2015 УДК Применение фильтра Калмана для обработки последовательности GPS-координат Листеренко Р.Р., бакалавр Россия, г. Москва, МГТУ им. Н.Э. Баумана, кафедра «Программное обеспечение ЭВМ и информационные технологии» Научный руководитель: Бекасов Д.Е., ассистент Россия, г. Москва, МГТУ им. Н.Э. Баумана, кафедра «Программное обеспечение ЭВМ и информационные технологии» Задача фильтрации GPS-координат В настоящее время широко используются сервисы GPS-трекинга, задачей которых является отслеживание маршрутов наблюдаемых объектов с целью их сохранения и дальнейшего воспроизведения и анализа. Однако из-за погрешности GPS-датчика, обусловленной рядом причин , таких как потеря сигнала от спутника, изменение геометрии расположения спутников, отражение сигналов, вычислительные ошибки и ошибки округления, итоговый результат не соответствует в точности маршруту объекта. Наблюдаются как незначительные отклонения (в пределах 100 м), не затрудняющие восприятие визуальной информации о маршруте и его анализ, так и весьма значительные (до 1 км, в случае потери сигнала спутников и использования базовых станций до нескольких десятков км). Для демонстрации результата приведенного в статье алгоритма используется маршрут, содержащий отклонения от действительного местоположения, превышающие несколько километров. С целью коррекции таких погрешностей разрабатывается алгоритм, выполняющий преобразование последовательности координат. Входными данными для алгоритма служит последовательность GPS-координат. В каждой координате содержится следующая информация, полученная от датчика: Широта Долгота Азимут в градусах Мгновенная скорость объекта в данной точке в м/с

2 Возможное отклонение координат объекта от истинного значения в метрах Время получения координаты датчиком Результатом работы алгоритма является последовательность координат с скорректированной широтой и долготой. В качестве основы для построения алгоритма решено использовать фильтр Калмана, так как он позволяет отдельно учитывать погрешности измерений и погрешности случайного процесса, а также использовать получаемую от датчика скорость движения объекта . Построение математической модели с использованием фильтра Калмана Для использования фильтра Калмана необходимо, чтобы исследуемый процесс описывался следующим образом : = + + (1) = + (2) В формуле (1) - вектор состояния процесса, A - матрица размерностью n n, описывающая переход наблюдаемого процесса из состояния в состояние. Вектор описывает управляющие воздействия на процесс. Матрица B размерностью n l отображает вектор управляющих воздействий u в изменение состояния s. является случайной величиной, описывающей погрешности исследуемого процесса, причем ~0, где Q - ковариационная матрица погрешностей процесса. Формула (2) описывает измерения случайного процесса. - вектор измеряемого состояния процесса, матрица H размерностью m n отображает состояние процесса в измерение процесса. - случайная величина, характеризующая погрешности измерений, причем ~0, где P - ковариационная матрица погрешностей измерений. Так как исследуется процесс движения объекта, уравнение состояния составляется исходя из уравнения движения тела = + +!" #$ % & ". Кроме того, отсутствует дополнительная информация о процессе движения, поэтому считается, что управляющее воздействие равно 0. За состояние процесса принят вектор = + () *, -. +, где x, y - координаты объекта, - проекции скорости объекта. Таким образом, для рассматриваемого процесса уравнение (1) принимает следующий вид: = + /!, (3) Молодежный научно-технический вестник ФС, ISSN

3 где = ! = 3! + 7 " 0 ; 6 2: 6 " / = : 6 0: 6 2: 6 0: , (4)!,4, (5) (6) В данной модели ускорение объекта рассматривается как случайная погрешность процесса. Принимаются следующие допущения: а) Ускорения по разным осям являются независимыми случайными величинами.),* б)

4 = AB = C. C E. = C/!!. /. = / C!!. /. Так как компоненты вектора ak (5) являются независимыми случайными величинами, то C!!. = " 0 " G. Следовательно, формула (7) принимает следующий вид: = / " (8) Вектор измерения zk для данной задачи представляется следующим образом: H I = 0 + J, J (7) 2, (9) где H, I - координаты объекта, полученные от датчика, J +,J, - скорость объекта, полученная от датчика. Матрица H в формуле (2) принимается равной единичной матрице размерностью 4 4, так как в рамках данной задачи считается, что измерение есть линейная комбинация вектора состояния и некоторых случайных погрешностей. Ковариационная матрица погрешности измерений R считается заданной. Один из возможных вариантов ее вычисления - использование данных о предполагаемой точности измерения, получаемых от датчика. Применение фильтра Калмана к построенной модели Для применения фильтра необходимо ввести следующие понятия: - апостериорная оценка состояния объекта в момент k, полученная по результатам наблюдений вплоть до момента k включительно. L - нескорректированная апостериорная оценка состояния объекта в момент времени k. - апостериорная ковариационная матрица ошибок, задающая оценку точности полученной оценки вектора состояния и включающая в себя оценку дисперсий погрешности вычисленного состояния и ковариации, показывающие выявленные взаимосвязи между параметрами состояния системы. L - нескорректированная апостериорная ковариационная матрица ошибок. Матрица P0 задается как нулевая, так как считается, что известно начальное положение объекта. Молодежный научно-технический вестник ФС, ISSN

5 Одна итерация фильтра Калмана состоит из двух этапов: экстраполяция и коррекция. а) На этапе экстраполяции вычисляется оценка L по оценке вектора состояния L и ковариационная матрица ошибок L по следующим формулам: L =, (10) L =. +, (11) где матрица Ak известна из формулы (4), матрица Qk вычисляется по формуле (8). б) На этапе коррекции вычисляется матрица коэффициентов усиления Kk по следующей формуле: M = L. L. + (12) где R, H считаются известными. Kk используется для коррекции оценки состояния объекта L и ковариационной матрицы ошибок L следующим образом: = L + M L, (13) = N M L, (14) где I - единичная матрица. Следует заметить, что для использования указанных выше соотношений, необходимо, чтобы для параметров объекта, участвующих в вычислениях, единицы измерений были согласованы. Однако в исходных данных широта и долгота приводятся в угловых координатах, а скорость в метрических. Кроме того, ускорение для расчета ошибки процесса также удобнее задавать в метрических единицах. Для перевода скорости и ускорения в угловые единицы используются формулы Винченти . Результат работы фильтра На рис. 1 приведен пример маршрута до обработки. Можно заметить, что в данном примере присутствуют несколько координат с высокой степенью погрешности, что выражается в наличии «пиков» координат, значительно удаленных от основного маршрута. На рис. 2 приведен результат работы фильтра с данным маршрутом.

6 Рис. 1. Маршрут объекта Рис. 2. Маршрут объекта после применения фильтра В результате практически отсутствуют «пики», за исключением самого крупного, который был заметно уменьшен, и сглажена остальная часть маршрута. Таким образом, с помощью приведенного алгоритма удалось снизить степень искажений маршрута и повысить его визуальное качество. Заключение В данной работе был рассмотрен подход к коррекции GPS-координат с помощью фильтра Калмана. С помощью приведенного алгоритма удалось устранить наиболее заметные искажения маршрута, что демонстрирует применимость данного метода к задаче сглаживания маршрута и устранения пиков. Однако для дальнейшего повышения качества алгоритма необходима дополнительная обработка последовательности координат с целью Молодежный научно-технический вестник ФС, ISSN

7 устранения избыточных точек, возникающих при отсутствии движения наблюдаемого объекта. Список литературы 1. Yadav J., Giri R., Meena L. Error handling in GPS data processing // Mausam Vol. 62. No. 1. P Kalman R. E. A New Approach to Linear Filtering and Prediction Problems // Transactions of the ASME Journal of Basic Engineering Vol. 82. No. Series D. PP Welch G., Bishop G. An Introduction to the Kalman Filter: Tech. Rep. TR Available at: accessed Vincenty T. Direct and Inverse Solutions of Geodesics on the Ellipsoid with application of nested equations // Survey Review apr. Vol. 23. No PP


УДК 519.711.2 Алгоритм оценки параметров ориентации космического аппарата с использованием фильтра Калмана Д. И. Галкин 1 1 МГТУ им. Н.Э. Баумана, Москва, 155, Россия Дано описание построения фильтра Калмана

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ТЕХНИЧЕСКОМУ РЕГУЛИРОВАНИЮ И МЕТРОЛОГИИ НАЦИОНАЛЬНЫЙ СТАНДАРТ российской ФЕДЕРАЦИИ ГОСТ Р 53608-2009 Глобальная навигационная спутниковая система МЕТОДЫ И ТЕХНОЛОГИИ ВЫПОЛНЕНИЯ

БАЙЕСОВСКОЕ ПРОГНОЗИРОВАНИЕ ВРЕМЕННЫХ РЯДОВ НА ОСНОВЕ МОДЕЛЕЙ В ПРОСТРАНСТВЕ СОСТОЯНИЙ В И Лобач Белорусский государственный университет Минск Беларусь E-mail: lobach@bsub Рассматривается метод прогнозирования

УДК 681.5(07) ИДЕНТИФИКАЦИЯ НЕЛИНЕЙНЫХ ДИНАМИЧЕСКИХ ОБЪЕКТОВ ВО ВРЕМЕННОЙ ОБЛАСТИ Д.Н. Вятченников, В.В. Кособуцкий, А.А. Носенко, Н.В. Плотникова Недостаточная информация об объектах при разработке их

Сер. 0. 200. Вып. 4 ВЕСТНИК САНКТ-ПЕТЕРБУРГСКОГО УНИВЕРСИТЕТА ПРОЦЕССЫ УПРАВЛЕНИЯ УДК 539.3 В. В. Карелин ШТРАФНЫЕ ФУНКЦИИ В ЗАДАЧЕ УПРАВЛЕНИЯ ПРОЦЕССОМ НАБЛЮДЕНИЯ. Введение. Статья посвящена проблеме

УДК 63.1/.7 АЛГОРИТМЫ ВТОРИЧНОЙ ОБРАБОТКИ ИНФОРМАЦИИ В РАДИОЛОКАЦИОННОЙ СТАНЦИИ С РАЗЛИЧНЫМИ ВИДАМИ МАТРИЦЫ ДИНАМИЧЕСКОГО ПЕРЕСЧЕТА ПРИ ОПРЕДЕЛЕНИИ КООРДИНАТЫ УГЛА МЕСТА Яницкий А.А. научный руководитель

УДК 5979 + 5933 Г А Омарова Èíñòèòóò âû èñëèòåëüíîé ìàòåìàòèêè è ìàòåìàòè åñêîé ãåîôèçèêè ÑÎ ÐÀÍ ïð Àêàä Ëàâðåíòüåâà, 6, Íîâîñèáèðñê, 630090, Ðîññèÿ E-mail: gulzira@ravccru Статистическая модель движения

Введение в робототехнику Лекция 12. Часть 2. Навигация и картографирование. SLAM SLAM Simultaneous Localization And Mapping (одновременная локализация и картографирование) Задача SLAM является одной из

Конспект лекции «Линейные динамические системы. Фильтр Калмана.» по спецкурсу «Структурные методы анализа изображений и сигналов» 211 Ликбез: некоторые свойства нормального распределения. Пусть x R d распределен

Система локализации робота на основе полусферической камеры Александр Овчинников, Хоа Фан Кафедра Радиоэлектронники Тульский Государственный Университет, Тула, Россия [email protected], [email protected]

Труды МАИ Выпуск 84 УДК 57:5198 wwwmairu/science/trudy/ Определение погрешностей бескарданной инерциальной навигационной системы в режиме рулежки и разгона Вавилова НБ* Голован АА Кальченко АО** Московский

# 08, август 2016 УДК 004.93"1 Нормализация данных 3D камеры с использованием метода главных компонент для решения задачи распознавания поз и поведения пользователей Умного дома Малых Д.А., студент Россия,

Национальный технический университет Украины «Киевский политехнический институт» Кафедра приборов и систем ориентации и навигации Методические указания к лабораторным работам по дисциплине «Навигационные

УДК 629.78.018:621.397.13 МЕТОД ПАРНЫХ РАССТОЯНИИ В ЗАДАЧЕ ПОЛЕТНОЙ ЮСТИРОВКИ АСТРОДАТЧИКОВ СИСТЕМЫ ОРИЕНТАЦИИ КОСМИЧЕСКИХ АППАРАТОВ Б.М. Суховилов По мере улучшения точности и надежности астрономических

УДК 629.05 Решение задачи навигации с помощью бесплатформенной инерциальной системы навигации и системы воздушных сигналов Мкртчян В.И., студент, кафедра «Приборы и системы ориентации, стабилизации и навигации»

МОДЕЛЬ ЗРИТЕЛЬНОЙ СИСТЕМЫ ЧЕЛОВЕКА- ОПЕРАТОРА ПРИ РАСПОЗНАВАНИИ ОБРАЗОВ ОБЪЕКТОВ Ю.С. Гулина, В.Я. Колючкин Московский государственный технический университет им. Н.Э. Баумана, Изложена математическая

РАКЕТНО-КОСМИЧЕСКОЕ ПРИБОРОСТРОЕНИЕ И ИНФОРМАЦИОННЫЕ СИСТЕМЫ 2015, том 2, выпуск 3, c. 79 83 УДК 681.3.06 СИСТЕМНЫЙ АНАЛИЗ, УПРАВЛЕНИЕ КОСМИЧЕСКИМИ АППАРАТАМИ, ОБРАБОТКА ИНФОРМАЦИИ И СИСТЕМЫ ТЕЛЕМЕТРИИ

Линейные динамические системы. Фильтр Калмана. Ликбез: некоторые свойства нормального распределения Плотность распределения.4.3.. -4 x b.5 x b =.7 5 p(x a x b =.7) - x p(x a,x b) p(x a) 4 3 - - -3 x.5

УДК 621.396.671 О. С. Л и т в и н о в, А. А. Г и л я з о в а ОЦЕНКА С ПОМОЩЬЮ МЕТОДА СОБСТВЕННЫХ ДИАГРАММ ВОЗДЕЙСТВИЯ ГРУПП ПОМЕХ НА ПРИЕМ ПОЛЕЗНОГО СИГНАЛА ЛИНЕЙНОЙ ЭКВИДИСТАНТНОЙ АДАПТИВНОЙ АНТЕННОЙ

УДК 681.5.15.44 ПРОНОЗИРОВАНИЕ КУСОЧНО-СТАЦИОНАРНЫХ ПРОЦЕССОВ Е.Ю. Алексеева Рассматриваются дискретные случайные процессы содержащие параметры меняющиеся скачкообразно в случайные моменты времени. Для

УДК 63966 ЛИНЕЙНАЯ ОПТИМАЛЬНАЯ ФИЛЬТРАЦИЯ ПРИ НЕ БЕЛЫХ ШУМАХ Г Ф Савинов В работе получен алгоритм оптимального фильтра для случая когда входные воздействия и шумы представляют собой случайные гауссовы

Определение колебательных движений нежёстких элементов спутника с помощью обработки видеоизображения Д.О. Лазарев Московский физико-технический институт Научный руководитель, к.ф.-м.н.: Д.С. Иванов, Институт

УДК 004 О МЕТОДАХ ОТСЛЕЖИВАНИЯ И ТРЕКИНГА ОБЪЕКТА НА ВИДЕОПОТОКЕ ПРИМЕНИТЕЛЬНО К СИСТЕМЕ ВИДЕОАНАЛИТИКИ ДЛЯ СБОРА И АНАЛИЗА МАРКЕТИНГОВЫХ ДАННЫХ Чезганов Д.А., Сериков О.Н. Южно-Российский государственный

Электронный журнал «Труды МАИ». Выпуск 66 www.ma.u/scence/tud/ УДК 69.78 Модифицированный навигационный алгоритм для определения положения ИСЗ по сигналам GS/ГЛОНАСС Куршин А. В. Московский авиационный

УДК 621.396.96 Исследование алгоритма завязки и подтверждения траекторий по критерию M из N Чернова Т.С., студент кафедры «Радиоэлектронные системы и устройства», Россия, 105005, г. Москва, МГТУ им. Н.Э.

ТЕОРІЯ ТА ПРАКТИКА НАВІГАЦІЙНИХ ПРИЛАДІВ І СИСТЕМ УДК 531.383 ВЛИЯНИЕ ПОГРЕШНОСТИ ПОВОРОТА СТЕНДА НА ТОЧНОСТЬ КА- ЛИБРОВКИ БЛОКА ГИРОСКОПОВ И АКСЕЛЕРОМЕТРОВ Аврутов В. В., Мазепа Т. Ю. Национальный технический

Лекция 6 Характеристики портфелей В предыдущих лекциях неоднократно употреблялся термин «портфель» Для математической постановки задачи о выборе оптимального портфеля необходимо строгое определение этого

ИДЕНТИФИКАЦИЯ ВРЕМЕННЫХ РЯДОВ С ПРОПУСКАМИ НА ОСНОВЕ МОДЕЛЕЙ В ПРОСТРАНСТВЕ СОСТОЯНИЙ Р. И. Меркулов В. И. Лобач Белорусский государственный университет Минск Беларусь e-mail: [email protected] [email protected]

ПРИБОРЫ И СИСТЕМЫ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ УДК 51971 В Н АРСЕНЬЕВ, А Г КОХАНОВСКИЙ, А С ФАДЕЕВ МАТЕМАТИЧЕСКАЯ МОДЕЛЬ СВЯЗИ ИЗОХРОННЫХ ВАРИАЦИЙ ПЕРЕМЕННЫХ СОСТОЯНИЯ СИСТЕМЫ УПРАВЛЕНИЯ С ВОЗМУЩЕНИЯМИ ПАРАМЕТРОВ

Труды МАИ. Выпуск 89 УДК 629.051 www.mai.ru/science/trudy/ Калибровка бесплатформенной инерциальной навигационной системы при повороте вокруг вертикальной оси Матасов А.И.*, Тихомиров В.В.** Московский

Аналитическая геометрия Модуль 1 Матричная алгебра Векторная алгебра Текст 4 (самостоятельное изучение) Аннотация Линейная зависимость векторов Критерии линейной зависимости двух, трех и четырех векторов

УДК 62.396.26 Л.А. Подколзина, К.. Другов АЛГОРИТЫ ОБРАБОТКИ ИНФОРАЦИИ В НАВИГАЦИОННЫХ СИСТЕАХ НАЗЕНЫХ ПОДВИЖНЫХ ОБЪЕКТОВ ДЛЯ КАНАЛА ОПРЕДЕЛЕНИЯ КООРДИНАТ ЕСТОПОЛОЖЕНИЯ Для определения координат и параметров

СТАТИСТИЧЕСКИЙ АНАЛИЗ ПАРАМЕТРИЧЕСКИХ ВРЕМЕННЫХ РЯДОВ С ПРОПУСКАМИ НА ОСНОВЕ МОДЕЛЕЙ В ПРОСТРАНСТВЕ СОСТОЯНИЙ С. В. Лобач Белорусский государственный университет Минск, Беларусь е-mail: [email protected]

Математичні методи обробки даних УДК 6.39 С. Я. Жук.. Кожешкурт.. Юзефович Национальный технический университет Украины «КП» просп. Победы 37 356 Киев Украина нститут проблем регистрации информации НАН

Построение ММ статики технологических объектов При исследовании статики технологических объектов наиболее часто встречаются объекты со следующими типами структурных схем (рис: О с одной входной х и одной

Оценка параметров ориентации космического аппарата с использованием фильтра Калмана Студент, кафедра «Системы автоматического управления»: Д.И. Галкин Научный руководитель: А.А. Карпунин, к.т.н., доцент

5. Мелешко В.В. Бесплатформенные инерциальные навигационные системы: Учебн. пособ. / В.В. Мелешко, О.И. Нестеренко. Кировоград: ПОЛИМЕД-Сервис, 211. 172 с. Надійшла до редакції 17 квітня 212 року ÓКостюк

УДК 004.896 Применение геометрических преобразований для анаморфирования изображений Канев А.И., специалист Россия, 105005, г. Москва, МГТУ им. Н.Э. Баумана, кафедра «Системы обработки информации и управления»

4. Методы Монте-Карло 1 4. Методы Монте-Карло Для моделирования различных физических, экономических и прочих эффектов широко распространены методы, называемые методами Монте-Карло. Они обязаны своим названием

Полосовая фильтрация 1 Полосовая фильтрация В предыдущих разделах была рассмотрена фильтрация быстрых вариаций сигнала (сглаживание) и его медленных вариаций (устранение тренда). Иногда требуется выделить

[ЗАМЕТКИ] Пояснение Основ фильтра Калмана С помощью Простого и интуитивно понятного Выведения Рэмси Фарахер та статья предоставляет Э простой и интуитивный вывод фильтра Калмана, с целью обучения этому

УДК 004.932 Алгоритм классификации отпечатков пальцев Ломов Д.С., студент Россия, 105005, г. Москва, МГТУ им. Н.Э. Баумана, кафедра «Программное обеспечение ЭВМ и информационные технологии» Научный руководитель:

Лекция ЧИСЛОВЫЕ ХАРАКТЕРИСТИКИ СИСТЕМЫ ДВУХ СЛУЧАЙНЫХ ВЕЛИЧИН -МЕРНЫЙ СЛУЧАЙНЫЙ ВЕКТОР ЦЕЛЬ ЛЕКЦИИ: определить числовые характеристики системы двух случайных величин: начальные и центральные моменты ковариацию

Динамика рождаемости по Чувашской республике Содержание Введение 1. Общая тенденция рождаемости населения Чувашской республики 2. Основная тенденция рождаемости 3. Динамика рождаемости городского и сельского

IN 1990-5548 Електроніка та системи управління. 2011. 4(30) 73 УДК656.7.052.002.5:681.32(045) В. М. Синеглазов, д-р техн. наук, проф., Ш. И. Аскеров ОПТИМАЛЬНАЯ КОМПЛЕКСНАЯ ОБРАБОТКА ДАННЫХ В НАВИГАЦИОННЫХ

УДК 004.896 Особенности реализации алгоритма для отображения результатов анаморфирования Канев А.И., специалист Россия, 105005, г. Москва, МГТУ им. Н.Э. Баумана, кафедра «Системы обработки информации и

177 УДК 658.310.8: 519.876.2 ИСПОЛЬЗОВАНИЕ ТОЧНОСТИ ОЦЕНИВАНИЯ ПРИ РЕЗЕРВИРОВАНИИ ДАТЧИКОВ Л.И. Лузина В статье рассматривается возможный подход для получения новой схемы резервирования датчиков. Традиционная

СБОРНИК НАУЧНЫХ ТРУДОВ НГТУ. 28. 4(54). 37 44 УДК 59.24 О КОМПЛЕКСЕ ПРОГРАММ ДЛЯ РЕШЕНИЯ ЗАДАЧИ ИДЕНТИФИКАЦИИ ЛИНЕЙНЫХ ДИНАМИЧЕСКИХ ДИСКРЕТНЫХ СТАЦИОНАРНЫХ ОБЪЕКТОВ Г.В. ТРОШИНА Рассмотрен комплекс программ

УДК 625.1:519.222:528.4 С.И. Долганюк С.И. Долганюк, 2010 ПОВЫШЕНИЕ ТОЧНОСТИ НАВИГАЦИОННОГО РЕШЕНИЯ ПРИ ПОЗИЦИОНИРОВАНИИ МАНЕВРОВЫХ ЛОКОМОТИВОВ ЗА СЧЕТ ИСПОЛЬЗОВАНИЯ ЦИФРОВЫХ МОДЕЛЕЙ ПУТЕВОГО РАЗВИТИЯ

УДК 531.1 АДАПТАЦИЯ ФИЛЬТРА КАЛМАНА ДЛЯ ИСПОЛЬЗОВАНИЯ С ЛОКАЛЬНОЙ И ГЛОБАЛЬНОЙ СИСТЕМАМИ НАВИГАЦИИ А.Н.Забегаев ([email protected]) В.Е.Павловский ([email protected]) Институт прикладной математики им.

АВТОМАТИЗАЦИЯ И УПРАВЛЕНИЕ УДК 68.58.3 А. Г. Шпекторов, В. Т. Фам Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В. И. Ульянова (Ленина) Анализ применения микромеханических

ОСНОВЫ РЕГРЕССИОННОГО АНАЛИЗА ПОНЯТИЕ КОРРЕЛЯЦИОННОГО И РЕГРЕССИОННОГО АНАЛИЗА Для решения задач экономического анализа и прогнозирования очень часто используются статистические, отчетные или наблюдаемые

Лекция 4. Решение систем линейных уравнений методом простых итераций. Если система имеет большую размерность (6 уравнений) или матрица системы разрежена, более эффективны для решения непрямые итерационные

58-я научная конференция МФТИ Секция динамики и управления движением космических аппаратов Система определения движения макетов системы управления на аэродинамическом столе с использованием видеокамеры

Лекция 3 5. МЕТОДЫ ПРИБЛИЖЕНИЯ ФУНКЦИЙ ПОСТАНОВКА ЗАДАЧИ Рассматриваются сеточные табличные функции [ a b] y 5. определенные в узлах сетки Ω. Каждая сетка характеризуется шагами h неравномерного или h

1. Численные методы решения уравнений 1. Системы линейных уравнений. 1.1. Прямые методы. 1.2. Итерационные методы. 2. Нелинейные уравнения. 2.1. Уравнения с одним неизвестным. 2.2. Системы уравнений. 1.

УДК 621.396 ИССЛЕДОВАНИЕ АЛГОРИТМОВ ВТОРИЧНОЙ ОБРАБОТКИ ИНФОРМАЦИИ МНОГОПОЗИЦИОННОЙ РАДИОЛОКАЦИОНОЙ СИСТЕМЫ ДЛЯ КАНАЛА УГЛА МЕСТА Борисов А.Н., Глинченко В.А., Назаров А.А., Исламов Р.В., Сучков П.В. Научный

Тема Численные методы линейной алгебры - - Тема Численные методы линейной алгебры Классификация Выделяют четыре основных раздела линейной алгебры: Решение систем линейных алгебраических уравнений (СЛАУ)

УДК 004.352.242 Восстановление смазанных изображений путем решения интегрального уравнения типа свертки Иванникова И.А., студент Россия, 105005, г. Москва, МГТУ им. Н.Э. Баумана, кафедра «Системы автоматизированного

АЭРОГРАВИМЕТРИЧЕСКАЯ СЪЕМКА ПРИ СТАНДАРТНОМ РЕЖИМЕ РАБОТЫ GPS Могилевский В.Е. АО «ГНПП «Аэрогеофизика» Важнейшим элементом, определяющим успех аэрогеофизических исследований, является качественное навигационное

АНАЛИЗ АКУСТИЧЕСКИХ СИГНАЛОВ НА ОСНОВЕ МЕТОДА ФИЛЬТРАЦИИ КАЛМАНА И.П. Гуров, П.Г. Жиганов, А.М. Озерский Рассматриваются особенности динамической обработки стохастических сигналов с использованием дискретных

УДК АА Минко ИДЕНТИФИКАЦИЯ ЛИНЕЙНОГО ОБЪЕКТА ПО РЕАКЦИИ НА ГАРМОНИЧЕСКИЙ СИГНАЛ Предложен алгоритм обобщенной идентификации на основе интегральных двупараметрических преобразований Гаусса линейного стационарного

ЛЕКЦИЯ. Оценка комплексной амплитуды сигнала. Оценка времени запаздывания сигнала. Оценка частоты сигнала со случайной фазой. Совместная оценка времени запаздывания и частоты сигнала со случайной фазой.

Вычислительные технологии Том 18, 1, 2013 Идентификация параметров процесса аномальной диффузии на основе разностных уравнений А. С. Овсиенко Самарский государственный технический университет, Россия e-mail:

1 ПРОГНОЗИРОВАНИЕ КОНЪЮНКТУРЫ РЫНКА НЕФТЕХИМИЧЕКСИХ ПРЕДПРИЯТИЙ Кордунов Д.Ю., Битюцкий С.Я. Введение. В современных условиях хозяйствования, которые характеризуются быстрым развитием мировых интеграционных

Задача одновременной локализации и построения карты (SLAM) Робошкола-2014 Андрей Антонов robotosha.ru 10 октября 2014 г. План 1 Основы SLAM 2 RGB-D SLAM 3 Робот Андрей Антонов (robotosha.ru) Задача SLAM

УДК 004.021 Т. Н. Р о м а н о в а, А. В. С и д о р и н, В. Н. С о л я к о в, К. В. К о з л о в СИНТЕЗ МОНОХРОМНОГО ИЗОБРАЖЕНИЯ ИЗ МНОГОДИАПАЗОННОГО ПОСТРОЕНИЕМ ПАЛИТРЫ С ПОМОЩЬЮ РЕШЕНИЯ УРАВНЕНИЯ ПУАССОНА

Национальный технический университет Украины «Киевский политехнический институт» Кафедра приборов и систем ориентации и навигации Методические указания к лабораторным работам по дисциплине «Навигационные

Цифровая Обработка Сигналов /9 УДК 69.78 АНАЛИТИЧЕСКИЙ МЕТОД РАСЧЕТА ПОГРЕШНОСТЕЙ ОПРЕДЕЛЕНИЯ УГЛОВОЙ ОРИЕНТАЦИИ ПО СИГНАЛАМ СПУТНИКОВЫХ РАДИОНАВИГАЦИОННЫХ СИСТЕМ Алешечкин А.М. Введение Режим определения

ОСОБЕННОСТИ ФОРМИРОВАНИЯ КОМПЬЮТЕРНОЙ МОДЕЛИ ДИНАМИЧЕСКОЙ ОПТИКО-ЭЛЕКТРОННОЙ СИСТЕМЫ Позднякова Н.С., Торшина И.П. Московский государственный университет геодезии и картографии Факультет оптико-информационных

Труды ИСА РАН 009. Т. 46 III. ПРИКЛАДНЫЕ ЗАДАЧИ РАСПРЕДЕЛЕННЫХ ВЫЧИСЛЕНИЙ Стационарные состояния в нелинейной модели переноса заряда в ДНК * Стационарные состояния в нелинейной модели переноса заряда в

Фильтр Калмана - это, наверное, самый популярный алгоритм фильтрации, используемый во многих областях науки и техники. Благодаря своей простоте и эффективности его можно встретить в GPS-приемниках, обработчиках показаний датчиков, при реализации систем управления и т.д.

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

Для чего он нужен?

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

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

Рассмотрим простейший пример - предположим нам необходимо контролировать уровень топлива в баке. Для этого в бак устанавливается емкостный датчик, он очень прост в обслуживании, но обладает некоторыми недостатками - например, зависимость от заправляемого топлива (диэлектрическая проницаемость топлива зависит от многих факторов, например, от температуры), большое влияние «болтанки» в баке. В итоге, информация с него представляет типичную «пилу» с приличной амплитудой. Такого рода датчики часто устанавливаются на тяжелой карьерной технике (не смущайтесь объемам бака):

Фильтр Калмана

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

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

Разберемся сначала в обозначениях: подстрочный индекс обозначает момент времени: k - текущий, (k-1) - предыдущий, знак «минус» в верхнем индексе обозначает, что это предсказанное промежуточное значение.

Описание переменных представлены на следующих изображениях:

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

Опробуем в деле

Вернемся к примеру с датчиком уровня топлива, так как состояние системы представлено одной переменной (объем топлива в баке), то матрицы вырождаются в обычные уравнения:
Определение модели процесса
Для того, чтобы применить фильтр, необходимо определить матрицы/значения переменных определяющих динамику системы и измерений F, B и H:

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

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

H - матрица определяющая отношение между измерениями и состоянием системы, пока без объяснений примем эту переменную также равную 1.

Определение сглаживающих свойств
R - ошибка измерения может быть определена испытанием измерительных приборов и определением погрешности их измерения.

Q - определение шума процесса является более сложной задачей, так как требуется определить дисперсию процесса, что не всегда возможно. В любом случае, можно подобрать этот параметр для обеспечения требуемого уровня фильтрации.

Реализуем в коде
Чтобы развеять оставшиеся непонятности реализуем упрощенный алгоритм на C# (без матриц и управляющего воздействия):

class KalmanFilterSimple1D
{
public double X0 {get; private set;} // predicted state
public double P0 { get; private set; } // predicted covariance

Public double F { get; private set; } // factor of real value to previous real value
public double Q { get; private set; } // measurement noise
public double H { get; private set; } // factor of measured value to real value
public double R { get; private set; } // environment noise

Public double State { get; private set; }
public double Covariance { get; private set; }

Public KalmanFilterSimple1D(double q, double r, double f = 1, double h = 1)
{
Q = q;
R = r;
F = f;
H = h;
}

Public void SetState(double state, double covariance)
{
State = state;
Covariance = covariance;
}

Public void Correct(double data)
{
//time update - prediction
X0 = F*State;
P0 = F*Covariance*F + Q;

//measurement update - correction
var K = H*P0/(H*P0*H + R);
State = X0 + K*(data - H*X0);
Covariance = (1 - K*H)*F;
}
}

// Применение...

Var fuelData = GetData();
var filtered = new List();

Var kalman = new KalmanFilterSimple1D(f: 1, h: 1, q: 2, r: 15); // задаем F, H, Q и R
kalman.SetState(fuelData, 0.1); // Задаем начальные значение State и Covariance
foreach(var d in fuelData)
{
kalman.Correct(d); // Применяем алгоритм

Filtered.Add(kalman.State); // Сохраняем текущее состояние
}

Результат фильтрации с данными параметрами представлен на рисунке (для настройки степени сглаживания - можно изменять параметры Q и R):

За рамками статьи осталось самое интересное - применение фильтра Калмана для нескольких переменных, задание взаимосвязи между ними и автоматический вывод значений для ненаблюдаемых переменных. Постараюсь продолжить тему как только появится время.

Надеюсь описание получилось не сильно утомительным и сложным, если остались вопросы и уточнения - добро пожаловать в комментарии)

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

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

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

Одна из основных задач, требующих своего решения в практике нейронных вычислений, – получение быстрых и надежных алгоритмов обучения НС. В этой связи может оказаться полезным использование в контуре обратной связи обучающего алгоритма линейных фильтров. Так как обучающие алгоритмы имеют итеративную природу, такой фильтр должен представлять собой последовательное рекурсивное устройство оценки.

Задача оценки параметров

Одной из задач теории статистических решений, имеющих большое практическое значение, является задача оценки векторов состояния и параметров систем, которая формулируется следующим образом. Предположим, необходимо оценить значение векторного параметра $X$, недоступного непосредственному измерению. Вместо этого измеряется другой параметр $Z$, зависящий от $X$. Задача оценивания состоит в ответе на вопрос: что можно сказать об $X$, зная $Z$. В общем случае, процедура оптимальной оценки вектора $X$ зависит от принятого критерия качества оценки.

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

Рассмотрим применения МНК для случая, когда вектор наблюдения $Z$ связан с вектором оценки параметров $X$ линейной моделью, и в наблюдении присутствует помеха $V$, некоррелированная с оцениваемым параметром:

$Z = HX + V$, (1)

где $H$ – матрица преобразования, описывающая связь наблюдаемых величин с оцениваемыми параметрами.

Оценка $X$, минимизирующая квадрат ошибки, записывается следующим образом:

$X_{оц}=(H^TR_V^{-1}H)^{-1}H^TR_V^{-1}Z$, (2)

Пусть помеха $V$ не коррелирована, в этом случае матрица $R_V$ есть просто единичная матрица, и уравнение для оценки становится проще:

$X_{оц}=(H^TH)^{-1}H^TZ$, (3)

Запись в матричной форме сильно экономит бумагу, но может быть для кого то непривычна. Следующий пример, взятый из монографии Коршунова Ю. М. "Математические основы кибернетики", все это иллюстрирует.
Имеется следующая электрическая цепь:

Наблюдаемые величины в данном случае – показания приборов $A_1 = 1 A, A_2 = 2 A, V = 20 B$.

Кроме того, известно сопротивление $R = 5$ Ом. Требуется оценить наилучшим образом, с точки зрения критерия минимума среднего квадрата ошибки значения токов $I_1$ и $I_2$. Самое важное здесь заключается в том, что между наблюдаемыми величинами (показаниями приборов) и оцениваемыми параметрами существует некоторая связь. И эта информация привносится извне.

В данном случае, это законы Кирхгофа, в случае фильтрации (о чем речь пойдет дальше) – авторегрессионная модель временного ряда, предполагающая зависимость текущего значения от предшествующих.

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

$$z_1 = A_1 = I_1 + \xi_1 = 1$$

$$z_2 = A_2 = I_1 + I_2 + \xi_2 = 2$$

$$z_2 = V/R = I_1 + 2 * I_2 + \xi_3 = 4$$

Это же в векторной форме:

$$\begin{vmatrix} z_1\\ z_2\\ z_3 \end{vmatrix} = \begin{vmatrix} 1 & 0\\ 1 & 1\\ 1 & 2 \end{vmatrix} \begin{vmatrix} I_1\\ I_2 \end{vmatrix} + \begin{vmatrix} \xi_1\\ \xi_2\\ \xi_3 \end{vmatrix}$$

Или $Z = HX + V$, где

$$Z= \begin{vmatrix} z_1\\ z_2\\ z_3 \end{vmatrix} = \begin{vmatrix} 1\\ 2\\ 4 \end{vmatrix} ; H= \begin{vmatrix} 1 & 0\\ 1 & 1\\ 1 & 2 \end{vmatrix} ; X= \begin{vmatrix} I_1\\ I_2 \end{vmatrix} ; V= \begin{vmatrix} \xi_1\\ \xi_2\\ \xi_3 \end{vmatrix}$$

Считая значения помехи некоррелированными между собой, найдем оценку I 1 и I 2 по методу наименьших квадратов в соответствии с формулой 3:

$H^TH= \begin{vmatrix} 1 & 1& 1\\ 0 & 1& 2 \end{vmatrix} \begin{vmatrix} 1 & 0\\ 1 & 1\\ 1 & 2 \end{vmatrix} = \begin{vmatrix} 3 & 3\\ 3 & 5 \end{vmatrix} ; (H^TH)^{-1}= \frac{1}{6} \begin{vmatrix} 5 & -3\\ -3 & 3 \end{vmatrix} $;

$H^TZ= \begin{vmatrix} 1 & 1& 1\\ 0 & 1& 2 \end{vmatrix} \begin{vmatrix} 1 \\ 2\\ 4 \end{vmatrix} = \begin{vmatrix} 7\\ 10 \end{vmatrix} ; X{оц}= \frac{1}{6} \begin{vmatrix} 5 & -3\\ -3 & 3 \end{vmatrix} \begin{vmatrix} 7\\ 10 \end{vmatrix} = \frac{1}{6} \begin{vmatrix} 5\\ 9 \end{vmatrix}$;

Итак $I_1 = 5/6 = 0,833 A$; $I_2 = 9/6 = 1,5 A$.

Задача фильтрации

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

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

Вначале получим оценку текущего значения $x_n$ по имеющимся $k$ последним значениям временного ряда $z_n, z_{n-1},z_{n-2}\dots z_{n-(k-1)}$. Модель наблюдения та же, что и в задаче оценки параметров:

Понятно, что $Z$ – это вектор–столбец, состоящий из наблюдаемых значений временного ряда $z_n, z_{n-1},z_{n-2}\dots z_{n-(k-1)}$, $V$ – вектор–столбец помехи $\xi _n, \xi _{n-1},\xi_{n-2}\dots \xi_{n-(k-1)}$, искажающий истинный сигнал. А что означают символы $H$ и $X$? О каком, например, векторе–столбце $X$ может идти речь, если все, что необходимо, – это дать оценку текущего значения временного ряда? А что понимать под матрицей преобразований $H$, вообще непонятно.

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

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

Таким образом, существование рядов Тейлора означает, что аналитическая функция обладает внутренней структурой с очень сильной связью. Если, например, ограничиться тремя членами ряда Тейлора, то модель генерации сигнала будет выглядеть так:

$x_{n-i} = F_{-i}x_n$, (4)

$$X_n= \begin{vmatrix} x_n\\ x"_n\\ x""_n \end{vmatrix} ; F_{-i}= \begin{vmatrix} 1 & -i & i^2/2\\ 0 & 1 & -i\\ 0 & 0 & 1 \end{vmatrix} $$

То есть формула 4, при заданном порядке полинома (в примере он равен 2) устанавливает связь между $n$-ым значением сигнала во временной последовательности и $(n-i)$–ым. Таким образом, оцениваемый вектор состояния в данном случае включает в себя, помимо собственно оцениваемого значения, первую и вторую производную сигнала.

В теории автоматического управления такой фильтр назвали бы фильтром с астатизмом 2-го порядка. Матрица преобразования $H$ для данного случая (оценка осуществляется по текущему и $k-1$ предшествующим выборкам) выглядит так:

$$H= \begin{vmatrix} 1 & -k & k^2/2\\ - & - & -\\ 1 & -2 & 2\\ 1 & -1 & 0.5\\ 1 & 0 & 0 \end{vmatrix}$$

Все эти числа получаются из ряда Тейлора в предположении, что временной интервал между соседними наблюдаемыми значениями постоянный и равен 1.

Итак, задача фильтрации при принятых нами предположениях свелась к задаче оценки параметров; в данном случае оцениваются параметры принятой нами модели генерации сигнала. И оценка значений вектора состояния $X$ осуществляется по той же формуле 3:

$$X_{оц}=(H^TH)^{-1}H^TZ$$

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

Формула 3 легко реализуется программно, для этого нужно заполнить матрицу $H$ и вектор столбец наблюдений $Z$. Такие фильтры называются фильтры с конечной памятью , так как для получения текущей оценки $X_{nоц}$ они используют последние $k$ наблюдений. На каждом новом такте наблюдения к текущей совокупности наблюдений прибавляется новое и отбрасывается старое. Такой процесс получения оценок получил название скользящего окна .

Фильтры с растущей памятью

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

Чтобы бороться с этим недостатком, необходимо перейти от фильтра с постоянной памятью к фильтру с растущей памятью . В таком фильтре число наблюдаемых значений, по которым производится оценка, должна совпадать с номером n текущего наблюдения. Это позволяет получать оценки, начиная с числа наблюдений, равного числу компонент оцениваемого вектора $X$. А это определяется порядком принятой модели, то есть сколько членов из ряда Тейлора используется в модели.

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

Дело в том, что к моменту n мы уже имеем оценку $X_{(n-1)оц}$, в которой содержится информация обо всех предыдущих наблюдениях $z_n, z_{n-1}, z_{n-2} \dots z_{n-(k-1)}$. Оценку $X_{nоц}$ получаем по очередному наблюдению $z_n$ с использованием информации, хранящейся в оценке $X_{(n-1)}{\mbox {оц}}$. Такая процедура получила название рекуррентной фильтрации и состоит в следующем:

  • по оценке $X_{(n-1)}{\mbox {оц}}$ прогнозируют оценку $X_n$ по формуле 4 при $i = 1$: $X_{\mbox {nоцаприори}} = F_1X_{(n-1)оц}$. Это априорная оценка;
  • по результатам текущего наблюдения $z_n$, эту априорную оценку превращают в истинную, то есть апостериорную;
  • эта процедура повторяется на каждом шаге, начиная с $r+1$, где $r$ – порядок фильтра.

Окончательная формула рекуррентной фильтрации выглядит так:

$X_{(n-1)оц} = X_{\mbox {nоцаприори}} + (H^T_nH_n)^{-1}h^T_0(z_n - h_0 X_{\mbox {nоцаприори}})$, (6)

где для нашего фильтра второго порядка:

Фильтр с растущей памятью, работающий в соответствии с формулой 6 – частный случай алгоритма фильтрации, известного под названием фильтра Калмана.

При практической реализации этой формулы необходимо помнить, что входящая в него априорная оценка определяется по формуле 4, а величина $h_0 X_{\mbox {nоцаприори}}$ представляет собой первую компоненту вектора $X_{\mbox {nоцаприори}}$.

У фильтра с растущей памятью имеется одна важная особенность. Если посмотреть на формулу 6, то окончательная оценка есть сумма прогнозируемого вектора оценки и корректирующего члена. Эта поправка велика при малых $n$ и уменьшается при увеличении $n$, стремясь к нулю при $n \rightarrow \infty$. То есть с ростом n сглаживающие свойства фильтра растут и начинает доминировать модель, заложенная в нем. Но реальный сигнал может соответствовать модели лишь на отдельных участках, поэтому точность прогноза ухудшается.

Чтобы с этим бороться, начиная с некоторого $n$, накладывают запрет на дальнейшее уменьшение поправочного члена. Это эквивалентно изменению полосы фильтра, то есть при малых n фильтр более широкополосен (менее инерционен), при больших – он становится более инерционен.

Сравните рисунок 1 и рисунок 2. На первом рисунке фильтр имеет большую память, при этом он хорошо сглаживает, но в силу узкополосности оцениваемая траектория отстает от реальной. На втором рисунке память фильтра меньше, он хуже сглаживает, но лучше отслеживает реальную траекторию.

Литература

  1. Ю.М.Коршунов "Математические основы кибернетики"
  2. А.В.Балакришнан "Теория фильтрации Калмана"
  3. В.Н.Фомин "Рекуррентное оценивание и адаптивная фильтрация"
  4. К.Ф.Н.Коуэн, П.М. Грант "Адаптивные фильтры"

Random Forest - один из моих любимых алгоритмов data mining. Во-первых он невероятно универсален, с его помощью можно решать как задачи регрессии так и классификации. Проводить поиск аномалий и отбор предикторов. Во-вторых это тот алгоритм, который действительно сложно применить неправильно. Просто потому, что в отличии от других алгоритмов у него мало настраиваемых параметров. И еще он удивительно прост по своей сути. И в то же время он отличается удивительной точностью.

В чем же идея такого замечательного алгоритма? Идея проста: допустим у нас есть какой-то очень слабый алгоритм, скажем, . Если мы сделаем очень много разных моделей с использованием этого слабого алгоритма и усредним результат их предсказаний, то итоговый результат будет существенно лучше. Это, так называемое, обучение ансамбля в действии. Алгоритм Random Forest потому и называется "Случайный Лес", для полученных данных он создает множество деревьев приятия решений и потом усредняет результат их предсказаний. Важным моментом тут является элемент случайности в создании каждого дерева. Ведь понятно, что если мы создадим много одинаковых деревьев, то результат их усреднения будет обладать точностью одного дерева.

Как он работает? Предположим, у нас есть некие данные на входе. Каждая колонка соответствует некоторому параметру, каждая строка соответствует некоторому элементу данных.

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


Thursday, May 10, 2012

Thursday, January 12, 2012


Вот собственно и всё. 17-ти часовой перелет позади, Россия осталась за океаном. А в окно уютной 2-ух спальной квартиры на нас смотрит Сан-Франциско, знаменитая Кремниевая долина, Калифорния, США. Да, это и есть та самая причина, по которой я практически не писал последнее время. Мы переехали.

Всё это началось еще в апреле 2011 года, когда я проходил телефонное интервью в компании Zynga. Тогда это все казалось какой-то игрой не имеющей отношения к реальности и я и представить себе не мог, во что это выльется. В июне 2011 года Zynga приехали в Москву и провели серию собеседований, рассматривалось около 60 кандидатов прошедших телефонное интервью и из них было отобрано около 15 человек (точное число не знаю, кто-то потом передумал, кто-то сразу отказался). Интервью оказалось неожиданно простым. Ни тебе задачек на программирование, ни заковыристых вопросов про форму люков, в основном проверялись способности болтать. А знания, на мой взгляд, оценивались лишь поверхностно.

А дальше началась канитель. Сначала мы ждали результатов, потом офера, потом одобрение LCA, потом одобрения петиции на визу, потом документы из США, потом очередь в посольстве, потом дополнительную проверку, потом визу. Временами мне казалось, что я готов все бросить и забить. Временами я сомневался, а нужна ли нам эта Америка ведь и в России не плохо. Весь процесс занял где-то около полугода, в итоге, в середине декабря мы получили визы и начали готовиться к отъезду.

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

Надеюсь, однако, что несмотря на количество работы, в обозримом будущем смогу возобновить ведение блога и, может быть, расскажу что-нибудь о американской жизни и работе программистом в Америке. Поживем - увидим. А пока, поздравляю всех с наступившим новым годом и рождеством и до новых встреч!


Для примера использования, распечатаем дивидендную доходность российских компаний. В качестве базовой цены, берем цену закрытия акции в день закрытия реестра. Почему-то на сайте тройки этой информации нет, а она ведь гораздо интересней чем абсолютные величины дивидендов.
Внимание! Код выполняется довольно долго, т.к. для каждой акции требуется сделать запрос на сервера finam и получить её стоимость.

Result <- NULL for(i in (1:length(divs[,1]))){ d <- divs if (d$Divs>0){ try({ quotes <- getSymbols(d$Symbol, src="Finam", from="2010-01-01", auto.assign=FALSE) if (!is.nan(quotes)){ price <- Cl(quotes) if (length(price)>0){ dd <- d$Divs result <- rbind(result, data.frame(d$Symbol, d$Name, d$RegistryDate, as.numeric(dd)/as.numeric(price), stringsAsFactors=FALSE)) } } }, silent=TRUE) } } colnames(result) <- c("Symbol", "Name", "RegistryDate", "Divs") result


Аналогично можно построить статистику для прошлых лет.

Этот фильтр применяют в разных областях – от радиотехники до экономики. Здесь мы обсудим основную идею, смысл, суть данного фильтра. Излагаться она будет максимально простым языком.
Предположим, что у нас есть необходимость в измерениях некоторых величин некоего объекта. В радиотехнике чаще всего имеют дело с измерениями напряжений на выходе некоего устройства (датчика, антенны и т.д.). В примере с электрокардиографом (см. ) мы имеем дело с измерениями биопотенциалов на теле человека. В экономике, например, измеряемой величиной могут быть курсы валют. Каждыё день курс валют разный, т.е. каждый день “его измерения” дают нам разную величину. А если обобщать, то можно сказать, что большая часть деятельности человека (если не вся) сводится именно к постоянным измерениям-сравнениям тех или иных величин (см. книгу).
Итак, предположим, что мы что-то постоянно измеряем. Так же предположим, что наши измерения всегда идут с некоторой ошибкой – оно и понятно, ведь нет идеальных измерительных приборов, и каждый выдаёт результат с ошибкой. В простейшем случае описанное можно свести к следующему выражению: z=x+y, где x – истинное значение, которое мы хотим измерить и которое измерили бы если бы у нас был идеальный измерительный прибор, y – ошибка измерения, вносимая измерительным прибором, а z – измеренная нами величина. Так вот задача фильтра Калмана состоит в том, чтобы по измеренной нами z всё-таки догадаться (определить), а какое же истинное значение x было, когда мы получали нашу z (в которой "сидит" истинное значение и ошибка измерения). Необходимо отфильтровать (отсеять) из z истинное значение x – убрать из z искажающий шум y. То есть, имея на руках только лишь сумму нам необходимо догадаться о том, какие слагаемые дали эту сумму.
В свете вышеописанного сформулируем теперь всё следующим образом. Пусть есть всего лишь два случайных числа. Нам даётся только их сумма и от нас требуется по этой сумме определить, какими являются слагаемые. Например, нам дали число 12 и говорят: 12 – это сумма чисел x и y, вопрос – чему равны x и y. Чтобы ответить на этот вопрос, составляем уравнение: x+y=12. Мы получили одно уравнение с двумя неизвестными, поэтому, строго говоря, найти два числа которые и дали эту сумму не возможно. Но кое-что об этих числах мы всё-таки можем сказать. Мы можем сказать, что это были либо числа 1 и 11, либо 2 и 10, либо 3 и 9, либо 4 и 8 и т.д., также это либо 13 и -1, либо 14 и -2, либо 15 и -3 и т.д. То есть мы можем по сумме (в нашем примере 12) определить множество возможных вариантов, которые дают в сумме именно 12. Один из этих вариантов – это искомая нами пара, которая на самом деле прямо сейчас и дала 12. Нелишне так же отметить, что все варианты пар чисел дающих в сумме 12 образуют прямую, изображённую на рис.1, которая и задаётся уравнением x+y=12 (y=-x+12).

Рис.1

Таким образом, искомая нами пара лежит где-то на этой прямой. Повторюсь, выбрать из всех этих вариантов ту пару, которая была на самом деле – которая дала число 12, не владея какими-либо дополнительными подсказками, невозможно. Однако, в ситуации, для которой изобретён фильтр Калмана, такие подсказки есть . Там заранее о случайных числах кое-что известно. В частности там известна так называемая гистограмма распределения для каждой пары чисел. Она обычно бывает получена после достаточно длительных наблюдений за выпадениями этих самых случайных чисел. То есть, например, из опыта известно, что в 5% случаев обычно выпадает пара x=1, y=8 (обозначим эту пару так: (1,8)), в 2% случаев пара x=2, y=3 (2,3), в 1% случаев пара (3,1), в 0.024% случаев пара (11,1) и т.д. Повторюсь, эта гистограмма задана для всех пар чисел, в том числе и для тех, что образуют в сумме 12. Таким образом, для каждой пары, что даёт в сумме 12, мы можем сказать, что, например, пара (1, 11) выпадает в 0.8% случаев, пара (2, 10) – в 1% случаев, пара (3, 9) – в 1.5% случаев и т.д. Таким образом, мы можем по гистограмме определить, в скольких процентах случаев сумма слагаемых пары равна 12. Пусть, например, в 30% случаев сумма даёт 12. А в остальных 70% выпадают остальные пары – это (1,8), (2,3), (3,1) и т.д. – те, что в сумме дают числа отличные от 12. Причём пусть, например, пара (7,5) выпадает в 27% случаев в то время, как все остальные пары, что дают в сумме 12, выпадают в 0.024%+0.8%+1%+1.5%+…=3% случаев. Итак, по гистограмме мы выяснили, что числа дающие в сумме 12 выпадают в 30% случаев. При этом мы знаем, что если выпало 12, то чаще всего (в 27% из 30%) причиной этого является пара (7,5). То есть если уже выпало 12, то мы можем сказать, что в 90% (27% из 30% – или, что то же самое 27 раз из каждых 30-ти) причиной выпадения 12 является пара (7,5). Зная, что чаще всего причиной получения суммы равной 12 является пара (7,5) логично предположить, что, скорее всего, она выпала и сейчас. Конечно, всё-таки не факт, что на самом деле сейчас число 12 образовано именно этой парой, однако, в следующие разы, если нам попадётся 12, и мы опять предположим пару (7,5), то где-то в 90% случаев из 100% окажемся правы. А вот если мы будем предполагать пару (2, 10), то окажемся правы лишь в 1% из 30% случаев, что равно 3.33% правильных догадок по сравнению с 90% при предположении пары (7,5). Вот и всё – в этом и состоит смысл алгоритма фильтра Калмана. То есть фильтр Калмана не гарантирует, что не ошибётся в определении слагаемого по сумме, однако он гарантирует, что ошибётся минимальное количество раз (вероятность ошибки будет минимальна), так как использует статистику – гистограмму выпадения пар чисел. Так же необходимо подчеркнуть, что часто в алгоритме фильтрации Калмана используется так называемая плотность распределения вероятности (ПРВ). Однако необходимо понимать, что смысл там тот же, что и у гистограммы. Более того, гистограмма – это функция, построенная на основе ПРВ и являющаяся её приближением (см., например, ).
В принципе мы эту гистограмму можем изобразить в виде функции двух переменных – то есть в виде некоей поверхности над плоскостью xy. Там, где поверхность выше, там выше и вероятность выпадения соответствующей пары. На рис.2 изображена такая поверхность.


рис.2

Как видно над прямой x+y=12 (которая есть варианты пар дающих в сумме 12) расположены точки поверхности на разной высоте и наибольшая высота у варианта с координатами (7,5). И когда нам встречается сумма равная 12, в 90% случаев причиной появления этой суммы является именно пара (7,5). Т.е. именно эта пара, дающая в сумме 12, имеет наибольшую вероятность появления при условии, что сумма равна 12.
Таким образом, здесь описана идея лежащая в основе фильтра Калмана. Именно на ней и построены всевозможные его модификации – одношаговые, многошаговые рекуррентные и т.д. Для более глубокого изучения фильтра Калмана рекомендую книгу: Ван Трис Г. Теория обнаружения, оценок и модуляции.

p.s. Для того, кто интересуется объяснениями понятий математики что называется "на пальцах" можно посоветовать вот эту книгу и в частности главы из её раздела "Математика" (саму книгу или отдельные главы из неё вы можете приобрести ).