Михаил
Михаил личный блог
31 января 2020, 10:37

MVP на нейронных сетях

Наконец дошли руки сделать работающий прототип на нейронных сетях — сразу же получился результат близкий к текущей используемой модели на основе градиентного бустинга. Учитывая, что в нейронные сети подавалась только часть информации по сравнению с той, которая используется для построения признаков для градиентного бустинга, и пара простых архитектур без всякой оптимизации, то есть все шансы в перспективе обойти градиентный бустинг. Из минусов — сетки обучаются в разы медленнее бустинга, но для моей инвестиционной стратегии это не принципиально. 

Сходил недавно на семинар по эволюционному поиску нейросетевых архитектур — очень проникся темой. Пока останусь на градиентном бустинге, но буду двигаться в сторону сетей и эволюционного поиска их архитектур. В какой-то момент столкну бустинг и сети в эволюционном процессе, а там посмотрим, кто победит.

64 Комментария
  • Dmitryy
    31 января 2020, 11:14
    А как результат меряете? На исторических данных? Включаете ли комиссии и прочие расходы? Хотелось бы увидеть графики.
      • Dmitryy
        31 января 2020, 12:03
        Михаил, видимо я изначально не правильно понял смысл. У вас получается попытка строить прогноз поведения актива, а сама торговля здесь и не важна, если прогноз удачный.
      • Dmitryy
        31 января 2020, 12:19
        Михаил, но позвольте Вам тогда высказать соображения о том, что финансовым мир стохастический. Можете ли вы предсказать рандом? Да, 50 на 50, Вы будете видеть успешные кейсы и не успешные, успешные будут заставлять вас думать, что это все реально, осталось только подкрутить не успешные. Я бы советовал вам работать с миром волатильностей, они тоже случайны, но там есть больше пространства для маневра. 
          • Dmitryy
            31 января 2020, 13:56
            Михаил, если не против, хочу еще немного подискутировать. Я вижу, что у Вас огромный опыт за плечами и Вам есть на чем судить. Но позвольте все же усомниться в возможности прогнозирования, т.к. модель, работающая на основе только исторических данных, не учитывает новостной фон. Если завтра что-то уберут из индекса после многолетнего роста, только от того, что вес бумаги сильно вырос? Фонды делают распродажу, все ребалансируют вслед за новостью. И тут модель обученная на многолетнем стабильном росте споткнется.

            Что далеко ходить, может ли модель обыграть вчерашнюю новость с Лукойлом и индексом? http://www.finmarket.ru/news/5162517
              • Dmitryy
                31 января 2020, 15:56
                Михаил, спасибо за столь развернутый ответ, здесь определенно много над чем стоит подумать. 

                Что касается моего подхода, это торговля волатильностью. Мы с большой долей вероятности можем определить движение волатильности, когда она сильно выше своего среднего значения. А учитывая волатильность волатильности можно делать более или менее приближенные прогнозы по ее поведению. ЗЫ, но я только учусь.
      • cybertruck
        31 января 2020, 12:40
        Михаил, а что это за обучающие примеры? типа свечные паттерны или индикаторы какие-то?
          • akuloff
            31 января 2020, 12:59
            Михаил, не мало ли данных для сетки?
          • cybertruck
            31 января 2020, 13:11
            Михаил, а объемы торгов не учитываются?
  • akuloff
    31 января 2020, 11:41
    Интересно. А сейчас какие сети, LSTM применяется?
      • akuloff
        31 января 2020, 13:01
        Михаил, вообще странно, RNN  (lstm, gru) же как раз для временных рядов, а сверточные время не учитывают, вернее не учитывают хронологию -  «что после чего шло»
      • akuloff
        31 января 2020, 13:03
        Михаил, кстати Вы вот писали про исследования, может ткнете где про временные ряды и не LSTM? Спасибо заранее.
    • cybertruck
      31 января 2020, 13:23
      akuloff, пробовал крутить LSTM — на выходе получается скользящая средняя)
        • cybertruck
          31 января 2020, 13:57
          Михаил, да, данных было мало — брал дневки сбера за 6 лет.
            • cybertruck
              31 января 2020, 14:41
              Михаил, согласен, буду пробовать gbm. а какой таймфрейм цены вы используете?
                • SergeyJu
                  31 января 2020, 15:45
                  Михаил, если Вы по дневкам строите прогноз на год вперед, у Вас очень мало независимых испытаний получается, ведь перекрытие прогнозов очень большое. То есть, для 100 акций и 10 лет истории, независимых испытаний, условно 1000. А если учесть взаимозависимость акций, то и того меньше, раз в 10.
            • SergeyJu
              31 января 2020, 15:42
              Михаил, эта эмпирика явно не из  тех областей, где низкое отношение сигнала к помехе. 
            • Kot_Begemot
              31 января 2020, 15:48
              Михаил, очень непонятное деление. GBM и подобные методы — аналог сетей со свободной архитектурой, построенной «жадным алгоритмом». 

              KNN — это обучение без учителя. 

              SVM — работает на линейной разделимости, а не на малых выборках.

              Как вы получили своё правило... 
                • Kot_Begemot
                  31 января 2020, 17:26
                  Михаил, 

                  SVM — работает с линейноразделимыми поверхностями в спремляющем пространстве

                  Это уже «напилинг» -

                  Украли американцы у русских чертежи истребителя. Собрали — паровоз. Разобрали, собрали — паровоз! Что делать, выкрали русского специалиста. Спец берёт чертёж, смотрит, смотрит и говорит: «Там же внизу маленьким шрифтом: после сборки обработать напильником».



                  GBM — это решающие деревья, а не сети. У них мало чего общего с сетями, и их обычно используют на табличных данных (в ручную сделанных фичах), а сети на сырых данных (кусок временного ряда, изображение, текст).   


                  Обычно перед применением нейронных сетей данные предобрабатывают.  Это ядерные свёртки изображений, обработка по градиентам яркости и пр., пр. пр. в голом виде нейронные сети не применяют… обычно. Если, конечно, задача не ставится вытащить заранее известный в подробностях сигнал из под шума. 



                   Предобработка данных перед использованием в свёрточной NN.

                  Разница между GBM и NN в процессе обучения и, соответственно, в размере области градиентного пересмотра параметров.

                  В этом смысле, ваше решение отвязаться от «ручного» построения признаков (фич), остаётся для меня не ясным. 
  • Kot_Begemot
    31 января 2020, 15:43
    Михаил, правильно ли я понимаю, что у вас портфельное инвестирование на основе GBM и NN?

    В качестве прогнозируемой переменной только будущие изменения цен?
      • Kot_Begemot
        31 января 2020, 16:03
        Михаил, а в чём смысл перехода на NN? В нелинейности или регуляризации?
          • Kot_Begemot
            31 января 2020, 16:53
            Михаил, но всё таки «нелинейность» GBM дискретна, а NN — непрерывная, и регуляризации у них тоже немного отличаются.

            В этом смысле, я ещё могу понять замену одних алгоритмов на другие — тонкие эффекты могут играть роль.  А вот на счёт требований к «сырости»… как-то сомнительно, чтобы NN обладали меньшими требованиями, чем GBM.

            В любом случае, интересно было бы увидеть оценку ваших результатов на этом поприще.
              • Kot_Begemot
                31 января 2020, 17:33
                Михаил, 

                NN более требовательны к количеству данных и железу

                Вот из-за этого и все вопросы. Зачем чесать правой ногой правое ухо, если удобнее левой?


                На мой взгляд ключевое отличие в табличности GBM и возможности NN делать фичи из сырых данных

                ммм… можете привести пример, в котором NN построит фичу из сырых данных, да такую, что на это не способно дерево решений или бустинг?

                Я вижу разницу только в непрерывности — если NN  умеет складывать числа, то GBM — нет, он только сравнивает числа в логическом масштабе (Булевы операции). Поэтому и пишу про… «нелинейность» NN.
                  • Kot_Begemot
                    31 января 2020, 22:03
                    Михаил, GBM аналогично NN используется, например, в распознавании спутниковых снимков при составлении карт (топография, геология и пр.).

                    Если бы я занимался распознаванием текста/речи/видео, то мог бы ответить вам профессионально и в цифрах. Но мне известно об этих и подобных задачах лишь постольку, поскольку. 

                    В принципе, если опустить дифференцируемую пороговую функцию активации, то NN от дерева отличается только тем, что NN способна создавать свёртку из входящих переменных x и y с некоторыми весами w (это делает любой слой NN). 

                    То есть, другими словами, помимо X>a производить операцию X+Y>a, и линейно разделять данные. Бустинг, в случае обнаружения линейных зависимостей, нарисует вам ту же линию ступеньками и к классифицирующему нейрону дайет та же информация, что и в случае NN, но, разве что нарезанная «кусками».

                    Это касается «обычных» нейронных сетей также как и «свёрточных», здесь никакого разделение не нужно.
                      • Kot_Begemot
                        01 февраля 2020, 16:45
                        Михаил, пример не могу, а описание можно найти в интернете. 

                        Вот, например, в задачах распознавания лиц

                        habr.com/ru/post/133826/
                          • Kot_Begemot
                            01 февраля 2020, 17:30
                            Михаил, может быть там и что-то придумали...  откуда мне знать? 

                            Но даже если что и придумали, то какое это имеет отношение к делу? Если NN даже теоретически не способна придумывать «фичи» отличные от обычных линейных алгоритмов?
                              • Kot_Begemot
                                01 февраля 2020, 17:44
                                Михаил, вот на теореме Цыбенко и базируется. Бесконечное число классификаторов способны бесконечно приблизить что угодно — хоть непрерывную функцию, хоть разрывную, хоть одной переменной, хоть 10… Если, конечно, эти классификаторы удастся обучить.

                                Я же не зря попросил у вас пример любой простой задачи, с которой может справиться NN и не может, например, RF (или справляется значительно хуже).
                                  • Kot_Begemot
                                    01 февраля 2020, 19:51
                                    Михаил,  

                                     эта теорема только про сети, а не про любой классификатор

                                    эта теорема по любой сложный классификатор, состоящий из множества простых классификторов, работающих в единой композиции, например, нейронной сети.

                                    При этом, заметьте, никакой дополнительной свёртки между классификаторами ансамбля теорема не предусматривает (один скрытый слой), оставляя выход композиции линейным по классификаторам (нейронам). 
                                      • Kot_Begemot
                                        01 февраля 2020, 22:23
                                        Михаил,

                                        Но под действие теоремы не подпадают деревья, или простые линейные модели

                                        Чтобы распространить действие теоремы на другие архитектуры необходимо доказать, что простейший (элементарный) классификатор композиции способен решать задачи линейной разделимости, то есть представим в виде:

                                        Fi ( w'*x +b), где Fi — пороговая функция

                                        тогда композиция из этих классификаторов будет обладать всеми свойствами рассматриваемой сети.

                                        Дерево решений, например, умеет решать задачу линейной разделимости?

                                        В итоге получается, что NN на сырых данных не даст вам никакого преимущества по сравнению с XGBoost или др. используемыми алгоритмами. 
                                          • Kot_Begemot
                                            02 февраля 2020, 14:13
                                            Михаил,  странное деление… картинка, состоящая из пикселей от 0 до 1 это «неструктурированные данные», а такая же табличка тех же размеров с данными от 0 до 1, но определяющими не цвет, а, скажем,  содержание химических элементов уже «структурированные данные». Это как?

                                            И что ещё за «глубокие сети», предполагающие какие-то особые методы тренировки?
                                              • Kot_Begemot
                                                02 февраля 2020, 15:23
                                                Михаил, таким образом «неструктурированные данные» это данные, обладающие некоторой структурой, например непрерывной и, таким образом, позволяющие применить к ним :

                                                1. Неслучайные веса или даже ненастраиваемую предобработку
                                                2. Регуляризацию плавности
                                                3.  и т.д.

                                                Для «неструктурированных данных», не обладающих априорной структурой никакая априорная регуляризация по структуре или априорное задание дерева (веса нейронной сети) — невозможны. 

                                                Наверное так)

                                                И поскольку рынок скорее обладает структурой, нежели  — нет, то нейронные сети к нему должны быть теоретически применимы лучше чем Boosting, в этом смысле я вас поддерживаю и желаю вам всяческих успехов.
          • SergeyJu
            31 января 2020, 17:36
            Михаил, хорошая заявка, если научите NN делать фичи, будет круто. 
              • SergeyJu
                01 февраля 2020, 09:21
                Михаил, прямого переноса на наши задачи ни у кого (насколько я знаю) не получается. И я это отношу именно к низкому соотношению сигнала к шуму и нестационарности данных.
                  • SergeyJu
                    01 февраля 2020, 09:45
                    Михаил, принципиальных и я не вижу… хотя и с людьми не шибко гладко. В основном все придумывают плохо работающие признаки. Или плоховато работающие, но таких людей уже мало. Ни одного хорошо работающего, устойчивого признака я еще не видел. Отсюда все эти портфели, диверсификации и регуляризации. 
                      • SergeyJu
                        01 февраля 2020, 13:13
                        Михаил, будет очень интересно, если продолжите писать о получаемых результатах. 

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн