Ну вот, обычное дело для смартлаба — прочитал интересный пост, на важную для меня тему. А комментировать нельзя.
Всё никак концептуально не могу отказаться от нейро. Но вижу что мои результаты в нём слабые, когда она работает как фильтр — часто пропускаются целые прекрасные месяцы и результат даже хуже чем был бы с ней.
В лучшем случае хорошо уменьшается просадка, но потери при этом хороших сделок погружают робота в долгие боковики. Или другая болячка, работает скажем нейра месяца, даже отлично работает. А потом бац и всё. Как будто совсем сломалась и некоторое время «не работает», полгода, год. Потом опять снова всё хорошо. Вобщем, много проблем. Настолько что переодически пытаюсь работать совсем без нейро. Как и сейчас возникло такое желание. Буквально вчера перед сном такие мысли обдумывал. Потому что нужна надёжность.
А тут "
Конфа. Мое выступление на тему Машинного обучения. Итоги." — сразу захотелось поучаствовать в обсуждении. Но по какой-то неизвестной причине — в ЧС у автора.
Так вот у меня вопрос, а кто был на конфе, как вам понравилось выступление, было что-то там из рациональных зёрен? Потому что в самом посте по сути только реклама диплёрнинга и всё. А конкретики нет. Загадочно помахать руками я и сам могу. Только не люблю.
Хочется хотя бы минимально, «вот друзья, смотрите, так — совсем не работает, и так совсем не работает, а в эту сторону уже немного лучше, а если ещё добавить этого — ещё лучше, ну вы поняли в какую сторону копать?»
Опять про меня. Может быть дело в моём подходе. Я пытаюсь обучать робота просто на сделках. Т.е. есть массив сделок, которых я могу нагенерить достаточно много, до 100 000, к примеру. И стоит задача выбрать с рынка те факторы, которые помогают отделить потенциально прибыльные сделки от неприбыльных. Мозгами у меня это сделать не выходит. Поэтому накидываю кучу индикаторов в нейру и пытаюсь её натренировать, а в случае удачи — расковырять и понять как она работает. Пока на всех этапах плохо. Хотя есть подходы, и научить могу нейру и удачи бывают и расковыривал кое что, но в целом задача не решена. Кажется что если решить, это будет новый фонд ренесанс какой-нибудь, хотя мозги у меня не настолько хорошие. Но вдруг у обезьянки получится война и мир.
И вообще то, что сейчас называют «машинным обучением» — это просто новые типы самообучающихся алгоритмов в терминологии 70-х годов прошлого века.
Так и здесь, чёткое понимание что ищем факторы «влияющие» или «связанные» с прибыльностью входа в сделку, не говорит о том, что знаем где это и что это.
Не уверен, но вы как мне кажется про другую чёткость. Совсем чёткую. Но если уж совсем чётко понимать что мы ищем, то это можно и простым случайным перебором (а-ля монте-карло, он же генетический алгоритм) отыскать очень быстро.
А искать, лишь бы искать… Ну для любых n точек в координатах (x, y) можно найти многочлен степени n+1 от х, который точно пройдёт через все эти точки.
или по другому. как ребёнок понимает, что нарисованные разными цветами, на плоской бумажке предметы, это где-то лошадь, где-то ёжик, а где-то бабочка. и эти дети потом могут угадывать (классифицировать) реальные объекты тоже.
тут не так много чёткости. где-то они угадывают по хвосту и усам, где-то по иголкам, где-то отличают стул от стола по наличию спинки..
магия!
многочленом тут не получится, кмк, т.к. тут целое семейство их.
n-1 сильнее будет.
По поводу применения нейронных сетей или машинного обучения… тут могу посоветовать прочитать что нить авторства Marcos Lopez de Prado. Есть у него интересные идеи.
т.е. используют нейру — как фильтр.
это я считаю корректным использованием — классификатор преобразователь многие к N, где N заранее задано.
а когда с помощью нейросети пытаются предугадать движение цены, это я вижу как многие ко многим, преобразование из непонятного в непонятное. по честному такой подход должен выдавать не вверх цена пойдёт или вниз, а на сколько вверх и насколько вниз, но это же абсурд.
насколько я понимаю.
эээ… ну…
да и цены надо как-то нормировать всё равно к потоку, способ нормировки — это тоже «индикатор»
Ваши уши никакими индикаторами не пользуются — они воспринимают давление (а не слова, буквы и звуки), глаза фотоны (а не образы) и т. д. индикаторы создаются мозгом из сырого сигналы, который вы на уровне сознания не осознаете. Сознание вам пихает образы, которые являются очень не тривиальным преобразованием сырых сигналов.
В сети пихают немного преобразованный сигнал, но обычно это самые базовые преобразования сырого сигнала — масштабирование к диапазону (-1, 1) — обычно ускоряет сходимость, преобразование Фурье (последние обычно из-за слабости железа и от этого постепенно отказываются и пихаются сырой звук), для слов эмбединг в низкоразмерное пространство, который по сути является очень простой сетью, работающей с сырым сигналом (номером слова из словаря).
Наша задача (а) существенно дискретна (б) очень высокий уровень шумов относительно сигнала, при том, что сам сигнал не определен.
Идея создавать сильный классификатор из несколькх слабых, имхо, правильная. Сам тут рою. Но подход автора — просто наскок.
Задача вам только кажется уникальной. Я сейчас принимаю участие в соревнованиях по прогнозу землетрясений: там все сплошной шум — 600 млн. значений акустического шума.
А задача не уникальна, но сильно отличается от обычных естественно-научных. Давно и не нами было сказано. Природа хитра, но не злонамерена.
Датчик хотя бы градиентный, или монополь?
Далее дано 2500 рядов по 150000 значений — для каждого ряда нужно с максимальной точностью предсказать, сколько осталось времени до землятресения.
https://smart-lab.ru/blog/536536.php#comment9689731
может у вас есть ответ?
с обучением как-то проблем нет особых. реально сеть запоминает 100 000 сделок с выосокой точностью, порядка 98%, на небольшом ООС в 3-5% даёт результат 80%
но потом на реальном рынке всё равно выдыхается.
будем искать.
Да, дело в подходе к выбору целевой переменной, да и фич наверное тоже. Попробуйте как АГ пишет — следующее приращение цены для начала. До сделок вам ещё далеко
1. В качестве выхода нейросетки берем либо относительное, либо абсолютное будущее приращение цены на интересующем нас временном горизонте.
2. На вход подаем набор предварительно отобранной нами прошлой информации (тут простор для творчества).
3. Строим нейросеть (выбор конфигурации — это тоже творческий процесс), у которой СКО ошибки на тестирующей и проверочной выборке статистически близки и минимальны.
4. Сравниваем статистически это СКО с СКО ошибки простейшей линейной регрессии между тем же прошлым и будущим приращением цены. Если первое статистически меньше второго, то УРА!, мы нашли, что машинное обучение — это круто.
Все остальное о машинном обучении с точки зрения торговли — пустая болтовня.
Но у него есть и другие применения. Например, робо-эдвайзинг для клиентов. Там другая задача, вполне «земная» и совсем неслучайная: найти взаимосвязь между материальным положением семьи клиента и выбором оптимального портфеля из существующего набора методов торговли.
Про себя могу сказать, что я проделал пп.1-4 для персептрона, на вход которого подавались относительные приращения цен Лукойла, Газпрома, РАО ЕЭС, SPY за предыдущие 5 дней, а на выходе бралось относительное приращение РАО ЕЭС на следующий день. П. 4 показал, то «тут рыбы нет».
Прошу прощения за колхозное описание. Может оно и вовсе не в тему…
Как торгую, так и пишу ))
Если коротко: Чем раньше переключите свое внимание с НС на поиск своей собственной стратегии торговли, тем раньше и больше пользы получите (применительно к извлечению прибыли на бирже).
Обратите внимание на бустинг, как правильно Вам тут подсказывают осведомленные товарищи.
почему-то везде сплошь формулы, нет чтобы «пальцем показать».
например взял исходники из лекции
https://www.youtube.com/watch?v=LDRbO9a6XPU
там простое дерево, без бустинга, переписал на Java, с первого раза точность ~50%, на 300 ООС семплах, тренировочный набор 10000.
пару вечером поковырялся между вином и шашлыками, убрал «лишние» фичи, получилось 63%.
опять же, без всякого бустинга.
деревья очень классная вещь в том смысле что сразу показывают какие фичи важнее, а какие нет. я до этого пытался понять это по другому реально несколько лет.
а бустинг, судя по всему похож на кучку деревьев с последующим простым перцептроном на выходе.
но не очень понятно что выдавать на вход перцептрона и и ещё переодически в текстах мелькают слова об обучении деревьев, что уж вообще непонятно.
хочется простого алгоритма для чайников, как в лекции что я привёл выше. там всё понятно и сразу заработало. и главное действительно просто на уровне гениальности.
полное дерево построить занимает минут 5, по сравнению с днями тренировки нейросети.
1. размерность пространства признаков можно уменьшить методом PCA — метод главных компонент
https://gsmetrics.blogspot.com/2019/04/backpropagation-c-implementation.html
2. Вот некоторые ссылки про boosting, но полного примера там нет
https://gsmetrics.blogspot.com/search/label/Boosting
3. Я сам в другом направлении копаю.
4. Попробуйте на habre поискать реализации.
https://habr.com/ru/hub/machine_learning/
ПBМ, я далеко от компа, чтобы ссылку найти, но алгоритм примерно следующий и состоит из множества итераций:
— берётся приближении предыдущей итерации (в первый раз обычно простая средняя);
— находится ошибка этого приближения на всех примерах;
— строится дерево (обычно не глубокое 6-10 уровней), которое приближает эту ошибку;
— дерево множится на коэффициент менее 1 (скорость обучения) и прибавляется к приближению предыдущей итерации — это новое приближение.
Там есть ссылка на исходники на GitHub
https://www.youtube.com/watch?v=LsK-xG1cLYA
математика тоже есть в отдельных сериях. по ссылке — непосредственно буст, для понимания надо посмотреть пару-тройку других роликов по очереди, он там даёт названия.
Примера кода правда нет, но на основе деревьев из
https://www.youtube.com/watch?v=LDRbO9a6XPU
уже можно что-то начать генерить.
хотя удастся ли добиться большой точности пока не ясно.
пока я сделал дерево которое угадывает не больше 63%, что явно мало.
для практической применимости, кмк надо никак не меньше 85%
или в топку.