All streams
Search
Write a publication
Pull to refresh
9
0
Леонид @Omazz

Разработчик C++

Send message

Вообще да, фиксация коэффицентов вполне может помочь.

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

Давайте попробуем пройтись по пунктам.

1. разброс измеряемой величины примерно равен её значению.

Получается, что у нас очень большие значения шума.

2. Величина изменяется линейно на отрезках, а не на всём протяжении измерений

Получается, что мы знаем, когда эти отрезки начинаются? А Вы гоните фильтр всё время, или только на этих отрезках начинаете инициализацию? Тут нужно смотреть на то, что вы измеряете и как оно себя ведёт.

3. Слишком большое влияние изменений величины на первых шагах исказило результат.

Понятно -- инициализация фильтра по сильно зашумлённым данным задало нам неправильное значение скорости изменения величины, а далее фильтр пытается его выровнять всё время. Тогда может стоит попробовать инициализировать фильтр на тех участках где шумы минимальны?

P.S.: Вообще это может быть из-за откровенно слабой экстраполяции в этом фильтре. Если Вы умеете использовать МНК, я бы предложил Вам попробовать его. Всё хочу написать статью по этому поводу, где разобрал бы метод наименьших квадратов на конкретных примерах. Хочу показать эффективность альфа-бета фильтра с ним и без него, но пока что руки не доходят, хотя различия там колоссальные -- я такое уже и моделировал, и не только.

Фильтрация изображений была у меня в ВУЗе, на практике не использовал.
Разбирали достаточно много алгоритмов, всё с примерами, отчёты по лабораторным были 50+ (иногда 100+) страниц, был очень сильный преподаватель, который работает в этой сфере и это основной его вид деятельности. Сейчас пишу диплом, при первой возможности -- продолжу развивать данную тематику, спасибо Вам за обратную связь!

Про шум в контексте обозначенной темы:
Да, Вы правы, нужно было добавить как минимум следующее:
z = x + w, где
z -- измеренная величина
x -- величина истинная
w -- шумовая добавка
Шум, как минимум, обусловлен погрешностью измерительных приборов, случайными ускорениями модели. (например, если мы фильтруем координаты какого-нибудь летательного аппарата, то это может быть поправка на скорость ветра, погодные условия)
Про экономику:
В экономику также есть случайные ускорения. Я работаю в сфере радиолокации, но очень часто когда мне приходилось искать алгоритмы экстраполяции и фильтрации я натыкался на вполне понятные объяснения, представленные в виде лекций ВШЭ(высшей школы экономики). Эти лекции, соответственно, предназначались для экономики. На всякий случай, приведу СУБЪЕКТИВНЫЙ пример в достаточно свободной форме:
Мы мониторим цену на пиццу в ближайшем кафе по типу месяц--средняя цена за кусок. В мае очень много праздников, пиццу заказывают часто, в связи с этим хитрый хозяин кафе решил уменьшить цену в 2 раза по определённым датам, чтобы пицца была ещё привлекательной. Именно это и является шумом, случайным ускорением. Да, цена действительно уменьшилась в 2 раза, что не соответствовало экстраполяции, но цена уменьшается только в определённые дни.
То есть, для получения адекватной оценки средней цены за кусок, нужно как-то сгладить этот майский скачок вниз, а фильтр как раз таки поможет нам это сделать.
В роли "ошибки измерительного прибора" может выступать то, что человеку, который замерял цену на кусок, в какой-то из дней стало лень идти её смотреть и он просто написал в своей выборке данных цену, которая была в прошлый раз.

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

Спасибо Вам большое за такой развёрнутый комментарий!

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

По поводу шумов: слышал про такое, но что-то серьёзное увидел впервые только сейчас от Вас. Буду разбираться, изучу этот момент. Спасибо Вам.

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

P.S.: Посмотрите внимательно на формулы, экстраполированные значения сами по себе ну никак не могут стремиться к нулю, в общем случае дак точно. Можете прислать мне строчки кода, попробую помочь.

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

Здравствуйте!
Писал код с комментариями, всё делал по вышеописанным мной шагам -- надеялся, что поможет. Согласен, что по-хорошему здесь нужна моделирующая программа, выложенная на гитхаб для демонстрации работы фильтра.
"Либо как-то популярно объяснить общий принцип до формул. Раз уж код не объясняете." -- попробовал это сделать во фрагменте "Идея фильтра".

Достаточно быстро
Добавил маленький фрагмент в статье, где разобрал на примере.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Software Developer, Application Developer
Junior
Git
Linux
C++
Qt
Python
OOP
English
C
Software development
Algorithms and data structures