Немного о Машинном обучении
Машинное обучение (Machine Learning; далее МО), так или иначе является составной частью отрасли Искусственного Интеллекта (Artificial Intelligence; далее ИИ), науки и технологии, которая позволяет “интеллектуальным” компьютерным системам моделировать человеческое поведение. В эту же отрасль входит и понятие Глубокое обучение (Deep Learning), затрагивающее нейронные сети и имитацию человеческого мышления.
Академическая дисциплина ИИ изучает как машине, т.е. компьютеру, решать задачи, которые подвластны лишь человеческому разуму. Это может быть такая задача, как понимание прочитанного текста, или определение ходов в игре в шашки, или решении головоломки. МО же заключается в разработке алгоритмов, которые помогают компьютеру делать вывод на основание полученной информации. Топливом ко всему в этом случае являются данные.
![image](https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/6ffef59f-8495-451c-becb-adb3faf15e7b/File/7e007e67ce118d11faf8e6859f070fe0/7e007e67ce118d11faf8e6859f070fe0.png)
(с)Oracle
В информационном веке, информация и данные являются самым ценным. Всё что мы делаем, оффлайн или онлайн порождает новые данные: будь то текст, аудио, видео данные, сенсорные измерения, “умные” гаджеты и обмен данных между ними. Возможности сбора больших и новых данных стремительно увеличиваются благодаря доступности аппаратных устройств, развитию облачной инфраструктуры и, вытекающему из массового применения этих технологий, падению их стоимости. Знание, или информация, есть сила — аксиома верна но есть “но”.
Обладание огромными объемами информации ещё не приносит пользы её держателю. Но именно через алгоритмы и методы МО, большие данные (Big Data) начинают обретать смысл и пользу. Немного конкретнее, системы МО замечают закономерности и выстраивают заключения на основе множества факторов в системе данных, не будучи запрограммированными на это.
Основные случаи применения МО сегодня — распознавание объектов, компьютерное видение, анализ данных, контроль качества (мониторинг) и предиктивная аналитика.
Итак, мы знаем, что машинное обучение полагается на алгоритмы обработки данных и на сами данные. Про методы МО можно углубиться в отдельный цикл статей. Описывать их было бы сравнимо с перечислением возможных технологий в веб разработке и их применения при наличии у каждой из таких технологий своих плюсов и минусов.
Стоит лишь отметить, что со временем алгоритмы и методы обработки данных улучшаются, а данных становится всё больше, тем самым качество обработки данных становится лучше.
Из типов данных, я хотел бы уделить внимание временным рядам на примере личного проекта — автоматизированного трейдинга криптовалют.
Анализ временных рядов
Временной ряд — вид данных, которые возможно представить в виде последовательностей измерений, упорядоченных в неслучайные моменты времени.
Существуют две основные цели анализа временных рядов:
определение природы ряда и прогнозирование (предсказание будущих значений временного ряда по настоящим и прошлым значениям). Это предполагает идентификацию и описание модели ряда, и интерпретацию данных, что позволяет выводить будущее значение ряда.
Применяя методы МО для таких данных, мы получаем возможность найти более глубокие закономерности в данных. В результате мы получаем более “интеллектуальный” прогноз будущих значений.
В отличие от анализа случайных выборок данных, анализ временных рядов основывается на предположении, что последовательные значения в файле данных наблюдаются через равные промежутки времени. В других же методах нам не важна и часто не интересна привязка наблюдений ко времени.
Другими словами, для проведения анализа важно, что событие X произошло в момент времени Y. На примере курса валют, нам важна выборка, где цена привязана к определённому моменту времени. Если нарушить порядок дат в ряде дата-цена, то он станет бессмысленным.
Например, используя финансовые временные ряды, алгоритм МО может сделать прогноз о росте или упадке доходности. При обработке аудиофайлов, где временные ряды будут выражены изменениями тона в привязке к хронометражу, можно анализировать смысл произносимой речи. Учитывая метеоданные, через МО и временных рядов можно выводить комплексные прогнозы погоды.
Если же алгоритмы МО, анализируют, скажем, изображения котиков, то нам не важна привязка ко времени, или даже порядок, в котором поступают картинки.
Применение на примере трейдинга криптовалют
В своем проекте я пытался ответить на вопрос, возможно ли построение полностью автоматической торговой системы, основанной на методах машинного обучения. Для этого я нашел и собрал исторические данные по ценам биткойна, объёмам сделок, а также выставленным и отозванным ордерам.
Через некоторое время, путем проб и ошибок я пришел к определенному пониманию, как эти данные стоит интерпретировать, какую архитектуру нейронной сети использовать, как размечать данные и т.д. В частности обучение проводится с гранулярностью 10 секунд, а в качестве результирующего значения используется цена в будущем.
Сейчас в алгоритме используются несколько моделей, обученных в разное время, т.к. я постоянно совершенствовал алгоритм обучения и добавлял к нему новые собранные данные. Для реализации использовался язык программирования Python с библиотеками Keras, Scipy, Pandas.
Скрипт для исполнения трейдинговых операций выставляет ордеры на торговой платформе Bitmex в круглосуточном режиме. При возникновении сигнала на открытие позиции и совершении соответствующей сделки, скрипт будет ожидать, пока цена не достигнет уровней Take Profit или Stop Loss, либо пока не истечет время жизни сделки (Time To Live).
![](https://habrastorage.org/webt/uk/7g/bo/uk7gbobthesvwkv-7zmofqxtj60.jpeg)
Главный лог файл, отображающий обработку данных в реальном времени
Алгоритм обработки данных полагается на технический анализ данных, историю торгов, предыдущие ордеры, распоряжения, и новости связанные с криптовалютой (через обработку естественного языка, или Natural Language Processing — NLP).
За основную метрику успеха берётся точность на основе количества ордеров типа Take profit в отношении общего количества ордеров. Итого прогноз считается успешным при достижении ордера Take Profit, в то время как Stop Loss и Time to Live признаются моделью как неуспешные.
Точность = (Кол-во ордеров типа Take profit) / (Общее кол-во ордеров)
Торг считается прибыльным при достижении точности отметкой 67%.
Месяц | Точность |
---|---|
Январь 2020 | 72% |
Февраль 2020 | 70% |
Март 2020 | 60% |
Апрель 2020 | 70% |
Ниже визуально представлены сделки, совершенные с использованием такого программного решения.
![](https://habrastorage.org/webt/fc/b8/g9/fcb8g9xjetorym1p0ux62hvuidk.jpeg)
Зеленые треугольники — это успешные сделки (Take profit достигнут), красные — неуспешные (Stop loss, Time to Live). Треугольники, смотрящие вверх — это сделки на покупку, треугольники, смотрящие вниз — это сделки на продажу.
В заключении
Автоматизированный трейдинг — лишь одно из самых очевидных возможных применений анализа временных рядов. Если говорить о бизнесе, то прогнозирование разных показателей на основе собранных данных может иметь критически важное значение. На основе таких прогнозов уже сейчас можно принимать важные бизнес-решения, и в будущем объем автоматически принимаемых решений будет только расти.
Выполнения таких расчетов довольно ресурсоемкий процесс. К счастью, вычислительные мощности компьютерных систем постоянно увеличиваются. Более того, современная отрасль компьютерных наук, изучающая ИИ, направлена на создание алгоритмов, которые наиболее эффективно используют доступные вычислительные ресурсы для выявления закономерностей в накопленных данных.
Выведение и построение прогнозов невозможно без использования временных рядов. Именно этот вид данных лежит в основе прогнозов, которые помогают руководящим лицам принимать жизненно важные для бизнеса решения. Несомненно, анализ временных рядов и их обработка алгоритмами МО — неотъемлемая часть бизнес процессов будущего.
StasTukalo
Спасибо за статью. Приятно видеть, что я не одинок в своих потугах.
Несколько вопросов:
1. используете бустинг вообще и катбуст в частности?
2. используете гпу?
3. про архитектуру сети можете рассказать?
4. курсы одного инструмента с разных бирж используете?
5. внебиржевую информацию пытаетесь как-то использовать в обучении?
Спасибо и успехов!