Pull to refresh

Comments 11

Prophet я видел, но не стал в обзор, поскольку как я понял, у них больше прогнозирование. В целом, если хочется учитывать праздничную составляющую из коробки, то да, можно им воспользоваться. Тут вопрос насколько это будет быстро.
Большая, интересная тема. Спасибо за статью. Да, в блоге anomaly.io неплохо написано про статистические методы. Кстати, если кому будет интересно посмотреть видео по похожей теме (хотя там больше про machine learning) — есть канал на ютуб www.youtube.com/user/numenta/videos, grokstream.com использует эти разработки в своем решении.

У меня пару вопросов на понимание.

1. Про совместные аномалии
Хороший термин, раньше не встречал русского обозначения, но все-таки надо как-то обзывать эти многомерные аномалии, почему бы и не так. Он где-то использовался в русскоязычной литературе?
Из возможных интуитивных подходов — использование сворачивания этой 2d-функции в одномерную и искать уже аномалии в значениях f(x,y). Например, как это делается в регрессионном анализе при поиске зависимостей.

2. «Алгоритм нахождения сдвига в данных»
Нахождение среднего тут неявно заложено в алгоритме аппроксимации. А как аппроксимировали? Своим методом, который «Алгоритм кусочно-линейной аппроксимации временного ряда»? Или метод наименьших квадратов?
В этом смысле очень похоже на алгоритм, который используется в R-пакете твиттера, но подход с другой стороны. В математическом смысле суть похожа: «находим локальное среднее значение, сравниваем с соседними»
А часто бывает когда результат апроксимации совпадает с «сырой» исходной ломаной?
Мне правда это интересно с той точки зрения, насколько могут быть похожи или различаться решения одной и той же задачи. Может быть решение вообще только единственное верное в идеальном случае. Но это вопрос больше философский.

P.S. Вашу статью, кстати, вполне можно как шпаргалку использовать для первичной навигации по теме :)
С наступающим!
1. В русскоязычных материалах термин «совместные» вроде не встречал (да и в целом не так её и много просмотрел). Да, наверно можно и свертку сделать, у меня просто проблема в нехватке знаний :(

2. Аппроксимировал своим методом. Аппроксимация мои методом близка к исходному ряду, если будет аппроксимироваться не достаточно сглаженный ряд. Возможно можно использовать какой то параметр гладкости внутри метода, чтобы так не промахиваться.
Метод наверняка так себе, поскольку мне оказалось проще придумать своё, нежели использовать готовое. Через язык статей, тому кто в этой теме не постоянно, прорываться очень сложно.
1. Честно говоря, русскоязычной литературы по этой теме не так много находил — в основном все-таки англоязычная. Поэтому подумалось «а вдруг».
2. Интересно, что в математике в этом смысле есть сходство с программированием. Готовые исследованные решения типа методов Эйлера как фреймворки, а самостоятельно придуманные методы — это что-то вроде своих самописных решений в программировании. Преимущества и недостатки очень похожи.
… что наталкивает на мысль использовать нейронную сеть на отрендеренные графики.

По идее можно не рендерить, а просто использовать тот же персептрон. Входные данные просто нужно будет преобразовать: привести количество точек по x к количеству нейронов входного слоя, а значения y нормировать от [0, 1] либо [-1, 1].
Я пока только присматриваюсь к нейронным сетям, которые показывают впечатляющие результаты, так что не очень представляю как и что там работает. Сейчас книгу начал читать по азам, вдохновившись вот этой статьей.
Еще про совместные аномалии и нейронные сети — обратите внимание на Нейронную Сеть Кохонена. Очень простая по структуре (два слоя). Легко реализуема. Обучение без учителя для этой сети тоже легче реализовать чем тот же самый алгоритм обратного распространения ошибки. Дает неплохие результаты по классификации. Правда иногда нужно поиграться с начальными весами.
Благодарю вас, очень увлекательная статья. Если позволите, пара вопросов: на каком объеме данных (примерно) вы проводите вычисления, с какой частотой поступают метрики на анализ, к-примеру, «150k значений/sec, 300GB данных в час»? Спасибо.
Объема данных у меня никакого нет — несколько простых железок, опрашиваемых раз в две минуты и всё. Разрабатываемая система мониторинга уровня Cacti, а не Zabbix/Prometheus/Influx.

Задачу выделения аномалий хорошо можно распараллелить, если использовать численные/статистические методы, но чтобы анализировать скажем 150К/с это уже надо делать балансировщики и сопутствующую архитектуру. Но даже в этом случае придется переписать все расчеты на низкоуровневые языки. R, Python и, используемый мной, Java Script — слишком медленные для такого.

Ваш алгоритм аппроксимации — это фактически дерево решений. Только с модификацией. В вашем случае в каждом узле вы строите регрессию по ax+b. А в классике — выбирается просто b


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

Sign up to leave a comment.

Articles