Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 818

 
Dr. Trader:

Для этого лучше использовать лес, эта модель создаст такой набор правил:


1: DeltaLess350 <= 0.5
2: ZZ_D <= 0
Decision 0 

1: DeltaLess350 <= 0.5
2: ZZ_D > 0
3: DeltaMore350 <= 0.5
Decision 0 

1: DeltaLess350 <= 0.5
2: ZZ_D > 0
3: DeltaMore350 > 0.5
Decision 1

DeltaLess350 > 0.5
Decision 1


В статье есть описание как подобное сделать в R:
https://www.mql5.com/ru/articles/1165

На закладке "Model" выберите лес, число деревьев поставьте в настройках =1, создайте модель, и потом нажав на кнопку Rules увидите такой список правил

Спасибо за ответ.  Может я не верно читаю, но кажется что модель не верная из экселя такая формула для первой (и последующих строк) строки с данными "=ЕСЛИ(ИЛИ(И(B2=1;D2=1);И(C2=1;D2=1));1;0)"

Т.е. для четкой логики лучше использовать леса? Так же как и для выделения признаков, верно?

За статью спасибо - изучу ещё раз - помню что читал давно, но теперь знаний чуть больше, может будет понятней.

Добавил: Картинка интересная, но явно не угадана логика... или нет?
 

Немного переписал пост, используя дерево вместо леса, так удобней вышло. Формула в обоих случаях выглядит иначе, но ведь ответ всё равно правильный.

Если ответ можно найти правильной комбинацией значений у входных данных, то лес хорошо работает, да. Всякие там операции типа сложения и умножения лес не умеет.

 
Aleksey Vyazmikin:

кажется что модель не верная из экселя такая формула для первой (и последующих строк) строки с данными "=ЕСЛИ(ИЛИ(И(B2=1;D2=1);И(C2=1;D2=1));1;0)"

Ну не знаю.. Проверил в экселе - формула из леса ошиблась пару раз всего. Формула дерева совпала во всех случаях.

 
Dr. Trader:

Немного переписал пост, используя дерево вместо леса, так удобней вышло. Формула в обоих случаях выглядит иначе, но ведь ответ всё равно правильный.

Если ответ можно найти правильной комбинацией значений у входных данных, то лес хорошо работает, да. Всякие там операции типа сложения и умножения лес не умеет.

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

 
Dr. Trader:

Ну не знаю.. Проверил в экселе - формула из леса ошиблась пару раз всего. Формула дерева совпала во всех случаях.

Да, формула из дерева пошла путем исключения, судя по коду, что оказалось верным решением.

 

Всё даже проще, с формулами возиться не нужно, там после обучения получается обычная R модель с которой можно делать предсказания на новых данных. 

Всё предсказание делается одной функцией

predict(model, newdata)

model - это ранее созданная модель (дерево, лес, нейронка, итд, в R там соти разных моделей). newdata - табличка с новыми данными для предсказания

 
Dr. Trader:

Всё даже проще, с формулами возиться не нужно, там после обучения получается обычная R модель с которой можно делать предсказания на новых данных. 

Всё предсказание делается одной функцией

model - это ранее созданная модель (дерево, лес, нейронка, итд, в R там соти разных моделей). newdata - табличка с новыми данными для предсказания

Это интересно, но пока не ясно до конца - ранее с R не работал... надо делать, что б уже предметно разбираться.

Вот меня мучает ещё один вопрос, если во входных данных есть ошибочные данные, которые чисто случайны, то сможет ли лес/дерево это определить? Можно ли организовать автоматическое отключение входных данных по столбцам в плане их перебора, в том числе на предмет поиска левых данных с целью их исключения?

 

Самый обычный лес просто найдёт минимальный набор данных с которыми можно определить таргет. Но шумы и ошибки он анализировать не будет, даже использует их если они помогут улучшить точность предсказания. Поэтому например нельзя просто набрать кучу индикаторов для форекса, и пытаться предсказывать тренды.

Есть разные продвинутые модификации леса, в них есть попытки отсеять шум и ошибки, и всё что вы написали. Пакеты gbm, xgboost в R например. Работают в целом хорошо, но для форекса слабоваты, тут нужны другие приёмы.

 
Aleksey Vyazmikin:

Подскажите, какой алгоритм нейронной сети можно использовать для выявления логики(нейрона) столбца "Calc"?совет номер раз: если можете обойтись без машинного обучения, то обойдитесь :)

1: определитесь с размером выборки, ваша выборка очень маленькая

2. изучите простые модели классификации/регрессии (линейные), скорее всего они вам подойдут, а если ошибка будет большая то можно попробовать перейти на более сложные (нелинейные) Есть в библиотеке alglib в поставке терминала (деревья решений и лес тоже есть)

3. Никогда не слушайте никаких советов, особенно перейти на R :))) пора их вобще выгнать с этого форума 

4. Если задача решаема без машинного обучения, то лучше его не использовать

 
Dr. Trader:

Самый обычный лес просто найдёт минимальный набор данных с которыми можно определить таргет. Но шумы и ошибки он анализировать не будет, даже использует их если они помогут улучшить точность предсказания. Поэтому например нельзя просто набрать кучу индикаторов для форекса, и пытаться предсказывать тренды.

Есть разные продвинутые модификации леса, в них есть попытки отсеять шум и ошибки, и всё что вы написали. Пакеты gbm, xgboost в R например. Работают в целом хорошо, но для форекса слабоваты, тут нужны другие приёмы.

Значение индикаторов я не хочу подавать, моя цель подавать  логически описанные наблюдения(наблюдалась ситуация или нет - это могут быть и новости и отношение разных индикаторов в пространстве друг относительно друга - в общем сжатая информация, которой я пользуюсь в реальной торговле для принятия решения), ранее построенные на основании этих индикаторов, и попробовать отсеять ошибочные, т.е. входные данные будут 0 и 1, или чуть больше цифр на один вход (тут кстати вопрос, если я хочу посмотреть на влияние дней недели, то мне лучше делать разные входные параметры маркирующие день, или достаточно один параметр обозначить от 1 до 5?).

А кто-то вообще делал сравнение разных алгоритмов на предмет эффективности, ну, если ответ известен, как в моем примере, но для более сложных задач?

Причина обращения: