так как старую тему про зигзаги, в момент нового важного обсуждения, бахнули модераторы
часть информации оттуда - в данной заметке. Может существенно пригодится при разметке данных и в МL,NN.
Заодно вместо записной книжки и мысли вслух
Алг. "рекурсивный минимакс", рекурсивная разметка зигзагов Z-Граф.
данные:
- Набор узлов = { }, каждая вершина содержит её ранг,время и данные. Опционально - признак вершина или впадина
- текущий ранг=1
1. во всём диапазоне данных ищется глобальный минимум и максимум (при равенстве значений,предпочтение отдаётся данным слева, более старым).
1.1 Найденные экстремумы добавляются в граф (в "набор узлов"), с текущем рангом, текущий ранг увеличивается
1.2 Они делят весь диапазон данных на 3 отрезка.
2. РЕКУРСИЯ: В каждом отрезке ищется максимальный противоход. (при равенстве предпочтение самому левому противоходу)
2.1 Найденные экстремумы добавляются в граф (в "набор узлов"), с текущем рангом
2.1 Отрезок поделили на 3 меньших отрезка.
2.2 покуда противоход вообще имеется, Повторяем №2 РЕКУРСИВНО С УВЕЛИЧЕНИЕМ РАНГА
3. По выходу из рекурсий, "Набор узлов" сортировать по времени.
3.1 для удобства опционально можно в начало набора добавить "фейковый узел", чтобы вершины получались на чётных позициях, а впадины на нечётных.
Получается довольно любопытная структура, которая содержит все возможные зигзаги.
Очень практичная - её удобно хранить и обрабатывать в базах.
Для практических целей, алгоритм можно дополнить бизнес-логикой "правило выбора противохода", и "критерий увеличения ранга при рекурсии".
Модификации Z-Граф
а) при поступлении новых данных, новые экстремумы добавляются в Z-Граф, при этом у части существующих может измениться (увеличится) ранг. Существующие экстремумы не удаляются.
б) в соответствии с бизнес-логикой можно непротиворечиво корректироваться ранг вершин. Или отдельно вести атрибут "бизнес-ранг" не больший ранга вершины, например чтобы смежные движения схожего размера имели одинаковый ранг.
в) базовый рекурсивный алгоритм ресурсоёмкий, поэтому практичнее им строить начальную часть а потом инкрементно её дополнять. Можно придумать эффективные алгоритмы конкатенации графов (складывать граф с временем от A до B с графом от B C)
Свойства Z-Граф
- во первых - это ориентированный граф без циклов. И очень своеобразный, у него должно быть своё общепринятое научное имя. К сожалению я его не знаю :-(
- во вторых - это дерево разбиения. Если не применяются модификации "б" то бинарное.
- чётность позиций всех вершин (верхних экстремумов) одинакова. И впадин соотв.тоже. Они строго чередуются вершина-впадина-вершина-...
- произвольный набор экстремумов является зигзагом, если они все содержатся в Z-граф и соблюдается правило чётности
- множество всех возможных зигзагов можно сформировать перебором.
- Выборка вершин с рангом N+1 является детализацией (суб-зигзагом) зигзага N. И наоборот, N-1 обобщает зигзаг N
- Z-граф имеет отношение как к графическим разметкам, так и к DSP. Выборка вершин с рангом от N до M это де-факто фильтр НЧ,ВЧ. Если ставить такую цель, то можно упороться и по Z-Граф доказать эквивалентность разных подходов ТА
Возможное практическое применение
Конечно-же алгоритмы поиска. Всякие: Найти первичный/вторичный максимум в диапазоне. Определить сопротивления (разворотные уровни) от уровней впадин с заданными рангами.
удаление шумов - выборка экстремумов с рангами более N
определение "шумности" - от кол-во узлов с максимальным рангом в заданном периоде.
определение "волатильности" - кол-во узлов со средним рангом
оценка и оптимизация торговых стратегий - Buy должен открываться в окрестностях впадин с минимальным рангом, закрываться ближе к вершинам с минимальным рангом.
----
PS/ вот даже и не удивительно что тему заспамили и затем удалили