Всем привет.
Медленно продалжаем копать в строну нейронных сетей. В этом видео я расскажу о некоторых своих неудачах, которые встретились на моем пути :)
Основаная проблема конечно же в том, что мои данные являются мусором и при этом сильно несбалансированны.
Так же выяснилось, что ROC кривая довольно плохо работает с несбалансированными данными.
Не исключаю возможности, что я как то неверно обработал данные, хотя я посторался упростить все насколько это было возможно.
Так же хочется сказать пару слов у качестве TenorFlow. Не могу понять отчего там столько ошибок, многие методы просто не работают друг с другом. Складывается ощущение, что они постоянно обновляют API ломая связи.
По ссылке на github вы можете найти код из видео, я его немного структурировал, и если кому интерсно, можете с ним поиграться.
github.com/CloseToAlgoTrading/CodeFromVideo/tree/master/episode_12
Что за признак Nr?
Так как каждый день у нас начинается с 0, то можно видеть сколько тиков в каждом баре :).
что касается (None, 10, 1) то это для lstm, входной тенсор. У нас 1 фича, ее 10 временных шагов. None обозначает любое количество входных данных. Т.е. один вход у нас имет размерность 10,1 — по простому 10 строк 1 колонка.
зы. я дмаю в ноутбуке *step3* более понятно суть происходящего должна быть.
Ну и третье — у вас сеть слишком примитивная чтобы выучить какие-нибудь зависимости. Посмотрите на стандартные архитектуры для изображений и анализа звука — там десятки слоев, которые постепенно выуживают сигнал из исходных данных, а у вас несколько слоев при этом известно, что сигнала заведомо мало относительно шума. Тут возможно нужно еще больше слоев.
Я лично взял за основу WaveNet и составил сеть с 87 слоями, которая дает приемлемый результат.
По поводу, мало данных и примитивной сети это да, однако приметивная сеть вполне может находить некоторые зависимости. Ну да, архитектура сети вопрос отдельный и более серьезная и сложная вскорее всего будет работать лучше. Правда как вы наверняка знаете, у сложных архитектур много других проблем.
внутредневных данных то на самом деле больше чем дневных, да и если брать только день без привязки к предыдущим, то вполне можно найти одинаковые паттерны, мне так кажется.
Я долгое время пытался всю обработку запихнуть в тенсорфлоу, но я наверное туповат %)) там что не метод надо с бубном работать.
Т.е. Задачу надо бы упрощать.
Сейчас пишу предсказания на основе сетей на основе просто котировок и дивидендов без ручных признаков — есть рабочий прототип, но пока не использую. Пишу тесты, а потом буду писать генетический алгоритм поиска оптимальных параметров. Не знаю сколько времени займет.
Собираюсь стравить GBM и сети в генетическом отборе.
Хмм, интересно, по поводу генетических алгоритмов для поиска параметров, не будет и это своего рода подгонка?