Результаты машинного обучения не должны быть просто призывом к действию. Не менее важно использовать его в качестве входных данных для того, чтобы не предпринимать никаких действий.
В этой истории будет использоваться алгоритм машинного обучения Robust Random Cut Forest для определения того, когда финансовый инструмент находится в периоде аномального поведения, что предполагает, что открытие любых позиций в данный момент времени может быть неразумным, поскольку его движение крайне непредсказуемо.
Полный код, использованный в этой истории, с рабочими примерами можно найти в связанном репозитории GitHub.
github.com/martinkarlssonio/timeseries-anomaly-detection
Что такое надежный лес случайной вырубки (RRCF)?
Robust Random Cut Forest - это комплексное машинное обучение, что означает, что существует группа алгоритмов, которые используют демократию для голосования за результат.
RRCF сочетает в себе как неконтролируемые, так и контролируемые алгоритмы.
Что, черт возьми, такое неконтролируемые алгоритмы?
Правильный вопрос. Алгоритм пытается найти закономерности в данных, что полезно для немаркированных наборов данных, в которых мы, люди, не знаем, что искать.
Когда образец нормального поведения обнаружен, он будет передан контролируемому алгоритму (алгоритму, которому нужны помеченные данные во время обучения), который устанавливает аномалию для новых данных.
Что в этом хорошего?
Нам не нужно маркировать набор данных при возникновении аномалий, неконтролируемый алгоритм найдет нормальный шаблон и передаст его контролируемым алгоритмам. Это лучшее из двух миров!
С учетом сказанного, нам нужны данные ... Тонны данных! Это необходимо, чтобы гарантировать, что неконтролируемый алгоритм найдет надежный шаблон.
Так что же тут случайного в RRCF? Набор данных случайным образом разрезается и распределяется между множеством деревьев решений, в результате чего получается лес.
- Произвольно вырезать набор данных
- Распределите по лесу деревьев решений
- Демократическое голосование решает исход
Для получения полной научной информации я настоятельно рекомендую приведенный ниже технический документ.
Надежное обнаружение аномалий на основе случайных вырубок в лесах на ручьях, С. Гуха, Н. Мишра, Дж. Рой, О. Шрайверс
Shingle - это вектор данных, а не отдельная точка данных. В этой истории мы укажем его на 15, что означает, что у модели будет скользящее окно с 15-минутными данными каждый раз.
Что такое многопроцессорность в Python?
При использовании многопроцессорного пакета код порождает отдельные подпроцессы для каждого измерения данных временного ряда, уменьшая время выполнения. Выходные данные аномалии от каждого подпроцесса фиксируются, и средний балл будет сгенерирован и визуализирован.
Как это можно использовать?
Полный код, использованный в этой истории, с рабочими примерами можно найти в связанном репозитории GitHub.
github.com/martinkarlssonio/timeseries-anomaly-detection
Набор данных в этом примере состоит из многих измерений для инструмента валютной пары (EURUSD) с 3 днями реальных данных для этого инструмента.
- Цена открытия
- Самая высокая цена
- Низшая цена
- Цена закрытия
- Объем
- MACD (расхождение сходимости скользящих средних)
- RSI (Индекс относительной силы)
- SMA10 (простая скользящая средняя, 10 мин.)
- SMA20 (простая скользящая средняя, 20 мин.)
Код будет запускать девять подпроцессов, по одному для каждого измерения (список выше) набора данных, каждый со своим индивидуальным обучением RRCF на соответствующих данных временного ряда.
Оценка аномалии одинаково взвешивается в один вывод данных за каждую минуту (оценивается в 15-минутном окне черепицы, чтобы уловить необычные модели движения).
«Это не обязательно должно рассматриваться как спусковой крючок к действию, это ограничение, позволяющее не предпринимать никаких действий в периоды необычного поведения, которое, как правило, не соответствует прогнозируемым образцам».
Мы можем выделить шесть высоких показателей аномалий на графике результатов, где впоследствии движения действительно были довольно значительными. После 5-й выделенной аномалии мы можем наблюдать движение на 15% (включая кредитное плечо инструмента в 30 раз) в течение нескольких минут.
Мартин Карлссон
martinkarlsson.io
LinkedIn martin-karlsson
Twitter @HelloKarlsson
GitHub martinkarlssonio
Средний @martinkarlsson. io