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
Не думаю, что правильно использовать фильтр без фиксации коэффициентов. Я в статье прям пример привёл, почему так делать не стоит. (Возможно, он был дописан уже после Вашего комментария)
Давайте попробуем пройтись по пунктам.
Получается, что у нас очень большие значения шума.
Получается, что мы знаем, когда эти отрезки начинаются? А Вы гоните фильтр всё время, или только на этих отрезках начинаете инициализацию? Тут нужно смотреть на то, что вы измеряете и как оно себя ведёт.
Понятно -- инициализация фильтра по сильно зашумлённым данным задало нам неправильное значение скорости изменения величины, а далее фильтр пытается его выровнять всё время. Тогда может стоит попробовать инициализировать фильтр на тех участках где шумы минимальны?
P.S.: Вообще это может быть из-за откровенно слабой экстраполяции в этом фильтре. Если Вы умеете использовать МНК, я бы предложил Вам попробовать его. Всё хочу написать статью по этому поводу, где разобрал бы метод наименьших квадратов на конкретных примерах. Хочу показать эффективность альфа-бета фильтра с ним и без него, но пока что руки не доходят, хотя различия там колоссальные -- я такое уже и моделировал, и не только.
Фильтрация изображений была у меня в ВУЗе, на практике не использовал.
Разбирали достаточно много алгоритмов, всё с примерами, отчёты по лабораторным были 50+ (иногда 100+) страниц, был очень сильный преподаватель, который работает в этой сфере и это основной его вид деятельности. Сейчас пишу диплом, при первой возможности -- продолжу развивать данную тематику, спасибо Вам за обратную связь!
Про шум в контексте обозначенной темы:
Да, Вы правы, нужно было добавить как минимум следующее:
z = x + w, где
z -- измеренная величина
x -- величина истинная
w -- шумовая добавка
Шум, как минимум, обусловлен погрешностью измерительных приборов, случайными ускорениями модели. (например, если мы фильтруем координаты какого-нибудь летательного аппарата, то это может быть поправка на скорость ветра, погодные условия)
Про экономику:
В экономику также есть случайные ускорения. Я работаю в сфере радиолокации, но очень часто когда мне приходилось искать алгоритмы экстраполяции и фильтрации я натыкался на вполне понятные объяснения, представленные в виде лекций ВШЭ(высшей школы экономики). Эти лекции, соответственно, предназначались для экономики. На всякий случай, приведу СУБЪЕКТИВНЫЙ пример в достаточно свободной форме:
Мы мониторим цену на пиццу в ближайшем кафе по типу месяц--средняя цена за кусок. В мае очень много праздников, пиццу заказывают часто, в связи с этим хитрый хозяин кафе решил уменьшить цену в 2 раза по определённым датам, чтобы пицца была ещё привлекательной. Именно это и является шумом, случайным ускорением. Да, цена действительно уменьшилась в 2 раза, что не соответствовало экстраполяции, но цена уменьшается только в определённые дни.
То есть, для получения адекватной оценки средней цены за кусок, нужно как-то сгладить этот майский скачок вниз, а фильтр как раз таки поможет нам это сделать.
В роли "ошибки измерительного прибора" может выступать то, что человеку, который замерял цену на кусок, в какой-то из дней стало лень идти её смотреть и он просто написал в своей выборке данных цену, которая была в прошлый раз.
Степень фильтрации зависит от параметров фильтра и от его "вида", я ни в коем случае не агитирую пихать везде альфа-бета фильтр, но почему бы не попробовать хотя бы промоделировать такую систему и посмотреть на результат.
P.S.: Вечером постараюсь отредактировать статью в соответствии с Вашим замечанием, чтобы внести ясность для читателей. Спасибо за дельный совет. Прошу отнестись с пониманием и снисхождением к примеру выше -- он придумывался прямо во время написания комментария, очень хочется быть хорошим специалистом и свободно общаться на эту тему, а для этого нужно прежде всего пробовать, на мой взгляд.
Спасибо Вам большое за такой развёрнутый комментарий!
По поводу пропущенных наблюдений: они есть во многих системах, но ведь экстраполяция может спасти? Не претендую на правду, но могу предложить Вам попробовать МНК, а позже и взвешенный МНК(например последнему наблюдения давать больше веса, чем тем что были раннее). На самом деле, экстраполяция, которая представлена в статье, является очень слабой, но она содержится в оригинальном описании фильтра, поэтому я решил ничего не менять.
По поводу шумов: слышал про такое, но что-то серьёзное увидел впервые только сейчас от Вас. Буду разбираться, изучу этот момент. Спасибо Вам.
Доброго времени суток! Приведённый мной алгоритм используется во вполне рабочих проектах ровно в том виде, в котором я его здесь описал. Вы точно перестаёте пересчитывать коэффициенты альфа и бета? На каком шаге Вы это делаете? Как часто обновляются данные? Давайте вместе искать решение. Попробуйте фиксировать значения альфа и бета при k=10, а позже при k=15 и так по-тихоньку увеличивайте значение, если результат будет улучшаться.
P.S.: Посмотрите внимательно на формулы, экстраполированные значения сами по себе ну никак не могут стремиться к нулю, в общем случае дак точно. Можете прислать мне строчки кода, попробую помочь.
Здравствуйте! Согласен с Вами, моя вина -- не указал область применения и обстоятельства, которые обеспечивают необходимость фильтра. Поправил Disclaimer.
Здравствуйте!
Писал код с комментариями, всё делал по вышеописанным мной шагам -- надеялся, что поможет. Согласен, что по-хорошему здесь нужна моделирующая программа, выложенная на гитхаб для демонстрации работы фильтра.
"Либо как-то популярно объяснить общий принцип до формул. Раз уж код не объясняете." -- попробовал это сделать во фрагменте "Идея фильтра".
Достаточно быстро
Добавил маленький фрагмент в статье, где разобрал на примере.