П М
П М личный блог
30 апреля 2019, 08:37

Как вам выступлене Шумихина Михаила?

Ну вот, обычное дело для смартлаба — прочитал интересный пост, на важную для меня тему. А комментировать нельзя.

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

А тут "Конфа. Мое выступление на тему Машинного обучения. Итоги." — сразу захотелось поучаствовать в обсуждении. Но по какой-то неизвестной причине — в ЧС у автора. 
Так вот у меня вопрос, а кто был на конфе, как вам понравилось выступление, было что-то там из рациональных зёрен? Потому что в самом посте по сути только реклама диплёрнинга и всё. А конкретики нет. Загадочно помахать руками я и сам могу. Только не люблю.
Хочется хотя бы минимально, «вот друзья, смотрите, так — совсем не работает, и так совсем не работает, а в эту сторону уже немного лучше, а если ещё добавить этого — ещё лучше, ну вы поняли в какую сторону копать?»

Опять про меня. Может быть дело в моём подходе. Я пытаюсь обучать робота просто на сделках. Т.е. есть массив сделок, которых я могу нагенерить достаточно много, до 100 000, к примеру. И стоит задача выбрать с рынка те факторы, которые помогают отделить потенциально прибыльные сделки от неприбыльных. Мозгами у меня это сделать не выходит. Поэтому накидываю кучу индикаторов в нейру и пытаюсь её натренировать, а в случае удачи — расковырять и понять как она работает. Пока на всех этапах плохо. Хотя есть подходы, и научить могу нейру и удачи бывают и расковыривал кое что, но в целом задача не решена. Кажется что если решить, это будет новый фонд ренесанс какой-нибудь, хотя мозги у меня не настолько хорошие. Но вдруг у обезьянки получится война и мир.
64 Комментария
  • А. Г.
    30 апреля 2019, 08:50
    Машинное обучение эффективно только тогда, когда мы чётко понимаем какую статистическую взаимосвязь мы ищем с его помощью. В современном виде это инструмент, облегчающий изготовление детали, но не конструктор детали.

    И вообще то, что сейчас называют «машинным обучением» — это просто новые типы самообучающихся алгоритмов в терминологии 70-х годов прошлого века. 
      • А. Г.
        30 апреля 2019, 09:13
        ПBМ,  я имел ввиду чёткое понимание той статистической взаимосвязи, существование  которой мы хотим доказать. А статистическая взаимосвязь всегда «нечёткая»,  в том смысле, что даже при одинаковых входных данных могут получиться разные выходные.

        А искать, лишь бы искать… Ну для любых n точек в координатах (x, y) можно найти многочлен степени n+1 от х, который точно пройдёт через все эти точки.
        • Михаил
          30 апреля 2019, 09:22
          А. Г., а вы может пояснить свой тезис про взаимосвязь на примере картинки и классификации того, что на ней изображено. Стандартный такой пример из DL — картинка тензор 500х500х3 нужно отобразить в один из 1000 классов изображений. Есть ли тут понятная статистическая взаимосвязь между набором из 500х500х3 чисел и тем что на изображении скворец? 
          • А. Г.
            30 апреля 2019, 11:17
            Михаил, нет тут никакой статистической взаимосвязи, потому что нет случайности. Чтобы понять как корректно решить эту задачу, надо задать вероятностное пространство  на  картинке тензор 500х500х3. Причем сложность в том, что при разных вероятностных пространствах правильное решение будет разным. На рынке же нас интересует только одна взаимосвязь: между известным прошлым и будущим приращением цены. И вариативность поиска только в выборе этого прошлого.
            • Михаил
              30 апреля 2019, 13:42
              А. Г., вероятностное пространство обычно следующее — случайный тензор из набора 1-10 млн. тензоров, к которым применена аугументация на основе случайных поворотов, кропов, преобразований гаммы и наложений шума. И нас интересует один вопрос — что изображено на картинке из примерно 1000 предметов. 
              • SergeyJu
                30 апреля 2019, 13:50
                Михаил, Вас это интересует? А меня интересует нечто иное — рынок. Ну при чем тут картинки, это явно техника из другого мира.
                • Михаил
                  30 апреля 2019, 14:02
                  SergeyJu, при том, что аргумент АГ на мой взгляд неверный. А второй важный момент, если повариться в области ML, оказывается, что методы из одних областей часто очень хорошо переносятся на другие, казалось бы не связанные области.
                  • SergeyJu
                    30 апреля 2019, 14:07
                    Михаил, логично. В чем-то Вы оба правы. 
        • Khan Tengri
          30 апреля 2019, 12:42
          А. Г., «Ну для любых n точек в координатах (x, y) можно найти многочлен степени n+1 от х, который точно пройдёт через все эти точки.»

          n-1 сильнее будет.
      • CloseToAlgoTrading
        30 апреля 2019, 14:02
        ПBМ, Тут нужно отделять reinforcement learning и Deep learning/ML. Это совершенно разные области. И все «AI» которые выигрывают в шахматы и рвут чемпионов в доту имееют мало чего общего с ML. 
        По поводу применения нейронных сетей или машинного обучения… тут могу посоветовать прочитать что нить авторства  Marcos Lopez de Prado. Есть у него интересные идеи.
          • Oerlikonium
            30 апреля 2019, 21:03
            ПBМ, в шахматах в любой позиции есть лучший ход. Может быть несколько одинаково хороших. Но не может быть такого, что позиция та же, а ход оказывается не лучший. На рынке же если даже предположить что ситуация идентична какой-то в прошлом, она может развиться совершенно иначе. Нейросетки и на стационарных-то данных непросто учить, а на зашумлённых вероятностных вообще непонятно сколько нужно данных а их столько нет
              • Oerlikonium
                01 мая 2019, 12:08
                ПBМ, я и не считаю нейросетки подходящим способом решения — для рынков. Учить нейросети нужно очень много данных. Те же альфы для го и шахмат как учили — грубо — сажают две нейросети играть друг с другом, и они играют и учатся, пока есть электричество. Данных неограниченное количество. На рынках такого нет
              • Oerlikonium
                01 мая 2019, 13:45
                ПBМ, https://www.youtube.com/watch?v=ba4_M7UINfo
  • Михаил
    30 апреля 2019, 09:10
    Про дипленинг он не рассказывал. Основной инструмент, который использовался докладчиком — градиентный бустинг. 
  • Михаил
    30 апреля 2019, 09:18
     Мне кажется, что вы не очень правильно пытаетесь применить нейросети — нет смысла пихать в нейросеть сделанные руками индикаторы — для такого подхода лучше работает бустинг. Нейросети хорошо работают над сырыми данными (просто картинкой, просто звуком или просто котировками), а не над рукотворными признаками, но данных должно быть много. 
      • Михаил
        30 апреля 2019, 09:41
        ПBМ, на мой взгляд его выступление не очень понятно на кого рассчитано. Для новичков оно не сильно понятное, для продвинутых людей не содержит полезных деталей, для практиков нет ответа сколько на этом можно поднять денег. Вы человек из третей категории:)
      • Михаил
        30 апреля 2019, 13:32
        ПBМ, тут дело практики — не сказать, что это как-то совсем не верно, но в большинстве случаев (близко к 100%) градиентный бустинг даст лучший результат на сгенеренных в ручную фичах, чем нейронные сети, будет быстрее учиться, быстрее применяться после обучения (особенно на небрежных деревьях), может работать на небольших семплах и не нужно будет выдумывать никакую архитектуру — он просто будет работать из коробки (или не будет, но тогда и сети не помогут). Собственно докладчик примерно это и сказал — бустиг с дефолтными настройками на сгенетенных фичах работал гораздо лучше нейронных сетей. И это результат не только докладчика, а известный факт из соревнований по машинному обучению — достаточно немного потусоваться на Kaggle или его аналогах — где есть ручные фичи, там будет бусинг в первую очередь. 
        Ваши уши никакими индикаторами не пользуются — они воспринимают давление (а не слова, буквы и звуки), глаза фотоны (а не образы) и т. д. индикаторы создаются мозгом из сырого сигналы, который вы на уровне сознания не осознаете. Сознание вам пихает образы, которые являются очень не тривиальным преобразованием сырых сигналов. 
        В сети пихают немного преобразованный сигнал, но обычно это самые базовые преобразования сырого сигнала — масштабирование к диапазону (-1, 1) — обычно ускоряет сходимость, преобразование Фурье (последние обычно из-за слабости железа и от этого постепенно отказываются и пихаются сырой звук), для слов эмбединг в низкоразмерное пространство, который по сути является очень простой сетью, работающей с сырым сигналом (номером слова из словаря).
        • SergeyJu
          30 апреля 2019, 14:01
          Михаил, автор, имхо, ничего не показал. То есть, он сказал про 3 библиотеки, не очень адекватную целевую функцию и некий результат с этой функцией. Результат непонятен, потому что никак не соотнесен с тем что нас интересует — возможность зарабатывать деньги на рынке. 
          Наша задача (а) существенно дискретна (б) очень высокий уровень шумов относительно сигнала, при том, что сам сигнал не определен. 
          Идея создавать сильный классификатор из несколькх слабых, имхо, правильная. Сам тут  рою. Но подход автора — просто наскок.

          • Михаил
            30 апреля 2019, 14:12
            SergeyJu, по поводу докладчика согласен. Выше написал — «На мой взгляд его выступление не очень понятно на кого рассчитано. Для новичков оно не сильно понятное, для продвинутых людей не содержит полезных деталей, для практиков нет ответа сколько на этом можно поднять денег.»
            Задача вам только кажется уникальной. Я сейчас принимаю участие в соревнованиях по прогнозу землетрясений: там все сплошной шум — 600 млн. значений акустического шума.
            • SergeyJu
              30 апреля 2019, 14:40
              Михаил, я много лет работал в области обработки акустических сигналов. В том числе сигналов от подводных взрывов. Они похожи на сейсмику. Сейсмику видел, но не обрабатывал. Не знаю, что за соревнование и как предобработан акустический сигнал для соревнований. Вероятно, Вы будете искать предвестники?
              А задача не  уникальна, но сильно отличается от обычных естественно-научных. Давно и не нами было сказано. Природа хитра, но не злонамерена. 
              • Михаил
                30 апреля 2019, 14:48
                SergeyJu, никак не обработан — дискретные значения с 16 битного датчика с частотой записи 4 мегагерц и небольшим паузами после переполнения буфера устройства через каждые 4096 значения. Большинство решает примерно, как делал докладчик — генерятся фичи в большом количестве (один чел сделал аж 800) и пихаются в градиентный бустинг. У меня порядка 10 и градинтный бустинг — был на втором месте потом сместили на 12. Пытался решить сетями на сыром сигнале — сверточными, сетями внимания и LSTM, но результат хуже бустинга.
                • SergeyJu
                  30 апреля 2019, 14:50
                  Михаил, один, что ли датчик, не всепланетный охват?
                  Датчик хотя бы градиентный, или монополь?
                  • Михаил
                    30 апреля 2019, 14:52
                    SergeyJu, это лабораторная установка в Лос-Аламосе — один датчик.
                    • SergeyJu
                      30 апреля 2019, 14:57
                      Михаил, один одноканальный датчик. То есть задача локальная и направления прихода сиглага у Вас нет. А что считается землетрясением, есть критерий? 
                      • Михаил
                        30 апреля 2019, 15:03
                        SergeyJu, направления нет. Данные состоят из пар чисел — уровень сигнала и значение  времени до землятресения. Всего 600 млн. пар значений, которые разбиты на 17 непрерывных серий соответствующих 17 землетрясениям. 

                        Далее дано 2500 рядов по 150000 значений — для каждого ряда нужно с максимальной точностью предсказать, сколько осталось времени до землятресения.  
                        • SergeyJu
                          30 апреля 2019, 15:06
                          Михаил, офигеть, всего 17 событий. 
                          • Михаил
                            30 апреля 2019, 15:14
                            SergeyJu, я честно не знаю практическую ценность этого. Задачу поставили ученые из Лос-Аламоса. Судя по описанию, они сами пользовались обычными для своей области методами предсказания (не знаю что это значит содержательно), а потом применили ML и добились лучшего результата. Потом решили запилить соревнование, чтобы посмотреть, не удасться ли кому-то сделать еще лучше. Там 20Гб данных, хотя с точки зрения ML событий мало и данных мало — все участники на это жалуются. Первые пять мест должны раскрыть решение. 
                            • SergeyJu
                              30 апреля 2019, 18:10
                              Михаил, может это просто кастинг такой? В финансах на 17 случаях тоже «ученые»  делают далеко идущие неверные обобщения. Но в алготорговле такое обычно не прокатывает. 
                              • Михаил
                                30 апреля 2019, 20:05
                                SergeyJu, любой конкурс своеобразный кастинг. Хорошие результаты в подобных конкурсах ценятся у работодателей. Но тут вполне нормальные предсказания по точности получаются. Там скорее народ бурчит из-за того, что некоторые продвинутые методы не работают и финальный результат немного непредсказуем, что портит соревновательную составляющую. Параллельно идет конкурс про предсказание цен бумаг www.kaggle.com/c/two-sigma-financial-news/overview  — оценивается по сути шарп для 10-ти дневного прогноза на основе котировок и новостного фона. В качестве источника идей можно посмотреть публичные кернелы, а как закончится кто-нибудь из лидеров может подвесить свое решение.
  • Oerlikonium
    30 апреля 2019, 11:20
    Опять про меня. Может быть дело в моём подходе. Я пытаюсь обучать робота просто на сделках.

    Да, дело в подходе к выбору целевой переменной, да и фич наверное тоже. Попробуйте как АГ пишет — следующее приращение цены для начала. До сделок вам ещё далеко
      • Oerlikonium
        30 апреля 2019, 20:41
        ПBМ, оно не просто может быть, оно и будет случайным. для вас. ну если конечно вы сами цену рыночным ордером не дёрнете. вы чот не очень понимаете концепцию вообще )
  • А. Г.
    30 апреля 2019, 11:37
    С точки зрения торговли интересно только одно применение машинного обучения:

    1. В качестве выхода нейросетки берем либо относительное, либо абсолютное будущее приращение цены на интересующем нас временном горизонте.
    2. На вход подаем набор предварительно отобранной нами прошлой информации (тут простор для творчества).
    3. Строим нейросеть (выбор конфигурации — это тоже творческий процесс), у которой СКО ошибки на тестирующей и проверочной выборке статистически близки и минимальны.
    4. Сравниваем статистически это СКО с СКО ошибки простейшей линейной регрессии между тем же прошлым и будущим приращением цены. Если первое статистически меньше второго, то УРА!, мы нашли, что машинное обучение — это круто.

    Все остальное о машинном обучении с точки зрения торговли — пустая болтовня.

    Но у него есть и другие применения. Например, робо-эдвайзинг для клиентов. Там другая задача, вполне «земная» и совсем неслучайная: найти взаимосвязь между материальным положением семьи клиента и выбором оптимального портфеля из существующего набора методов торговли.

    Про себя могу сказать, что я проделал пп.1-4 для персептрона, на вход которого подавались относительные приращения цен Лукойла, Газпрома, РАО ЕЭС, SPY за предыдущие 5 дней, а на выходе бралось относительное приращение РАО ЕЭС на следующий день. П. 4  показал, то «тут рыбы нет».
    • Oerlikonium
      30 апреля 2019, 13:38
      А. Г., так персептрон это линейная модель, откуда там бы вообще рыбе взяться? Линейную модель сравнили с линейной и удивились )
      • А. Г.
        30 апреля 2019, 13:50
        oerlikon, персептрон, как функция от входных переменных — это нелинейная регрессия. Да собственно лучший статпрогноз — это неизвестная нам в общем случае нелинейная регрессия. Поэтому и сравнивался частный случай нелинейной регрессии с линейной.
        • Oerlikonium
          30 апреля 2019, 14:51
          А. Г., короче, если у вас был только один скрытый слой, вы попробовали случай чуть-чуть сложнее вырожденного ) но на дворе же не 70-е )
          • А. Г.
            30 апреля 2019, 15:04
            oerlikon, ну это смотря сколько нейронов в слое, да и вообще я перебирал до 3-х слоев.
  • Андрей К
    30 апреля 2019, 11:37
    видосик выйдет, куплю, отвечу =)
  • VladMih
    30 апреля 2019, 17:52
    Мне кажется ошибочным подход в обучении на сделках, тем более нагенеренных. ИМХО обучать надо на поведении цены — взаимосвязях причины и следствия. Предситуация-началоИмпульса-вход-сколькоПрошли. На базе этого получать точки входа/выхода. Плюс допфильтры, конечно, с ними проще.
    Прошу прощения за колхозное описание. Может оно и вовсе не в тему…
    Как торгую, так и пишу ))
  • Prophetic
    30 апреля 2019, 17:55
    Из года в год одна и та же песня.
    Если коротко: Чем раньше переключите свое внимание с НС на поиск своей собственной стратегии торговли, тем раньше и больше пользы получите (применительно к извлечению прибыли на бирже).
  • Ray Badman
    30 апреля 2019, 18:26
    Торговать на рынке вам не шахматы играть, и не образы распознавать. Они отличаются фундаментально, поэтому обычный ML тут не будет работать, как сказал Denis тут только у RL есть шанси. Алгоритм RL биологически похож на человека но сегодняшный RL пока что очень-очень слаб. В любом случае вы получите робота который действует как человек, а вы знаете как действует человек на рынке. Так что все это пустая трата времени и денег. Чтобы знать для каких задач какие алгоритмы применить надо понять фундаментал этих самых задач и алгоритмов.
  • _sg_
    30 апреля 2019, 22:59
    Направление использовать ML стратегически правильное.
    Обратите внимание на бустинг, как правильно Вам тут подсказывают осведомленные товарищи.
  • Михаил
    04 мая 2019, 10:12

      ПBМ, я далеко от компа, чтобы ссылку найти, но алгоритм примерно следующий и состоит из множества итераций:
    — берётся приближении предыдущей итерации (в первый раз обычно простая средняя);
    — находится ошибка этого приближения на всех примерах;
    — строится дерево (обычно не глубокое 6-10 уровней), которое приближает эту ошибку;
    — дерево множится на коэффициент менее 1 (скорость обучения) и прибавляется к приближению предыдущей итерации — это новое приближение.

  • Михаил
    04 мая 2019, 10:22
    То есть по сути это последовательность неглубоких деревьев, каждое следующее из которых пытается исправить ошибку предыдущих. Стандартные реализации используют много ухищрений для ускорения и повышения качества — предразбиения признаков на 256 бинов, оптимизации второго порядка при построение отдельных деревьев, регуляризация листьев, минэнкодинг, параллельный запуск и GPU, поэтому большого смысла делать это самому нет. Есть три библиотеки, каждая со своими нюансами — XGBoost первая и достаточно надежная, LightGBM использует построение деревьев не ярусами, а от отдельных листьев, работает очень быстро, но иногда требует настройки (на ней любят обкатывать идеи из-за скорости), Catboost — самая молодая, использует небрежные деревья, что позволяет быстро применять натренированную модель, дольше учится, но обычно даёт лучший результат без настроек. Тенденция последнего времени, что в соревновательных целях ее используют все больше.  
  • Михаил
    04 мая 2019, 10:29
    Лекцию такого типа не знаю — сам изучал по лекциям Школы Анализа Данных Яндекс. Программисту лучше наверное просто код посмотреть — ванильная реализация, которую на практике никто не использует есть в sklearn http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html
    Там есть ссылка на исходники на GitHub
  • Михаил
    04 мая 2019, 11:01
    medium.com/mlreview/gradient-boosting-from-scratch-1e317ae4587d — совсем простой пример

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

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