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

 
СанСаныч Фоменко #:

Ничего не надо формализовывать - все сделали за Вас.

И какова точность вашего робота на промежутке плюс минус пару тройку часов в будущее? Я про точку разворота, который рассчитает ваш ИИ в будущее. С погрешностью плюс минус 5-10 пипсов внутри дня на том же фунт-доллар, и погрешностью +-1-2 бара на м5.

И ваш ИИ сможет вовремя понять что модель (паттерн) пошла допустим не по цене, а по времени? А значит сработает не первая, а вторая или третья расчетная точка. :)

Кодеры как дети, если кто-то усомниться в возможностях компа (типа машина все найдет), сразу губки надувают и обижаются. ;) И никто догнать не может, что вы никогда не увидите, почему вам не удается найти 100% рабочий алгоритм. А всё потому, что есть одна маленькая незаметная деталька, именно она дает сигнал, что пропорции паттерна в будущее сместятся на определенную величину. Но вы же Хении и Боги кода, не барское это дело, кое в чем ковыряться (поискать все руками, считая на бумажке или калькуляторе). Проще тупо закодить какую то фигню на входе, получить фигню на выходе, и дальше попытаться все это оптимизировать.

Четкая логическая математическая система описана более 100 лет назад (работает до сих пор как часики). И с точки зрения алгебры, и с точки зрения геометрии. Но изобретателей собственного лисапеда всё ещё с избытком....

 
Bogard_11 #:

Четкая логическая математическая система описана более 100 лет назад (работает до сих пор как часики). И с точки зрения алгебры, и с точки зрения геометрии. Но изобретателей собственного лисапеда всё ещё с избытком....

Так покажыте свою торговлю.. 
К чему все эти громкие фразы.. 

И посмотрим как ваша ТС работает по сто летней теории которая как часики.. 
Ну ну.. 
 
mytarmailS #:
Так покажыте свою торговлю.. 
К чему все эти громкие фразы.. 

И посмотрим как ваша ТС работает по сто летней теории которая как часики.. 
Ну ну.. 

От таких вопросов у всех начнется головокружение.

Тут как в школе.

Начинать нужно из далека и простых вопросов.

А на какой паре торгуете?

А покажите последнюю сделку, вход выход со всеми параметрами.

А далее, сколько сделок в день совершаете и в этом месте наступает пауза.

P.Z.

Более двух вопросов задавать не стоит.

Можно обидеть мастеров. А вдруг и вы так начнёте делать?

P.Z.

Болею за Спартак.

 
Forester #:

Неправильно печку понимаете. Похоже, что никогда код построения дерева не смотрели... В пределах одной строки там нет никаких операций вообще!!, только с наборами (с полными или с батчами).

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

Подробнее можете в редакторе посмотреть, файл у вас есть:
\MQL5\Include\Math\Alglib\dataanalysis.mqh
функция ClassifierSplit() и та из которой она вызывается.
За пару часов разберетесь и не будете про поиск предикторов по одной строке рассказывать.
Тут  понятнее будет, код лаконичнее и с комментариями https://habr.com/ru/companies/vk/articles/438560/

1. Класс RegressionTree()

Пишем XGBoost с нуля — часть 1: деревья решений
Пишем XGBoost с нуля — часть 1: деревья решений
  • 2019.02.06
  • habr.com
Привет, Хабр! После многочисленных поисков качественных руководств о решающих деревьях и ансамблевых алгоритмах (бустинг, решающий лес и пр.) с их непосредственной реализацией на языках программирования, и так ничего не найдя (кто найдёт — напишите в комментах, может, что-то новое почерпну), я решил сделать своё собственное руководство, каким...
 
Forester #:

Неправильно печку понимаете. Похоже, что никогда код построения дерева не смотрели... В пределах одной строки там нет никаких операций вообще!!, только с наборами (с полными или с батчами).

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

Подробнее можете в редакторе посмотреть, файл у вас есть:
\MQL5\Include\Math\Alglib\dataanalysis.mqh
функция ClassifierSplit() и та из которой она вызывается.
За пару часов разберетесь и не будете про поиск предикторов по одной строке рассказывать.

Вы правы на счет многих строк.

Вернемся к началу: что такое паттерн в случайном лесе?

Это одно дерево. Вот пример одного такого дерева из RF:

    left daughter right daughter split var split point status prediction
1               2              3         2  0.34154125      1          0
2               4              5         2  0.28238475      1          0
3               6              7         4  0.37505155      1          0
4               0              0         0  0.00000000     -1          2
5               8              9         5  0.64235664      1          0
6               0              0         0  0.00000000     -1          2
7              10             11         1  0.45438075      1          0
8              12             13         1  0.46271469      1          0
9              14             15         3  0.25803691      1          0
10             16             17         2  0.51942328      1          0
11             18             19         1  0.48839881      1          0
12             20             21         3  0.45243581      1          0
13              0              0         0  0.00000000     -1          2
14              0              0         0  0.00000000     -1          2
15             22             23         6  0.62789488      1          0
16             24             25         2  0.34224983      1          0
17             26             27         4  0.53845361      1          0
18             28             29         3  0.39207978      1          0
19             30             31         3  0.03596312      1          0
20             32             33         7  0.49380156      1          0
21              0              0         0  0.00000000     -1          2
22              0              0         0  0.00000000     -1          2
23             34             35         6  0.76472904      1          0
24              0              0         0  0.00000000     -1          1
25              0              0         0  0.00000000     -1          2
26             36             37         5  0.87588550      1          0
27             38             39         1  0.31089209      1          0
28             40             41         2  0.39193398      1          0
29             42             43         1  0.47068628      1          0
30             44             45         7  0.76420940      1          0
31             46             47         2  0.38380954      1          0

 [ reached getOption("max.print") -- omitted 185 rows ]

Всего строк = 166+185! Все не влезли

В моей модели таких деревьев 150

split var - это номер переменной, всего их в модели 8
split point - лучшее значение конкретной переменной, которое использовалось для разделения.
 
СанСаныч Фоменко #:

Вы правы на счет многих строк.

Вернемся к началу: что такое паттерн в случайном лесе?

Это одно дерево. Вот пример одного такого дерева из RF:

Всего строк = 166+185! Все не влезли

В моей модели таких деревьев 150

Рассмотрите снова путь формирующий лист. В моем примере выше 5 сплитов. Разве это не описание паттерна 2 вершины с впадиной? Описание.
7 сплитами можно описать голова плечи и т.д.
Каждый лист одного дерева описывает отдельный паттерн.

Лес это мнение толпы (дервьев).
1-е дерево говорит: данная строка попадает в мой 18-й паттерн/лист и ответ = 1
2-е: та же строка попала в мой 215 паттерн/лист и дает ответ=0
3-е:  = 1

...

Усредняем и получим среднее мнение 150 деревьев. Например = 0,78. У каждого был свой активизировавшийся лист/паттерн.

 
Forester #:

Рассмотрите снова путь формирующий лист. В моем примере выше 5 сплитов. Разве это не описание паттерна 2 вершины с впадиной? Описание.
7 сплитами можно описать голова плечи и т.д.
Каждый лист одного дерева описывает отдельный паттерн.

Лес это мнение толпы дервьев.
1-е дерево говорит: данная строка попадает в мой 18-й паттерн/лист и ответ = 1
2-е: та же строка попала в мой 215 паттерн/лист и дает ответ=0
3-е:  = 1

...

Усредняем и получим среднее мнение 150 деревьев. У каждого был свой активизировавшийся лист/паттерн.

Сколько листьев неизвестно.

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

Видим, что достаточно 50 деревьев. поэтому удобно считать за паттерн именно дерево.

 
СанСаныч Фоменко #:

Сколько листьев неизвестно.

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

Видим, что достаточно 50 деревьев. поэтому удобно считать за паттерн именно дерево.

На каждую ситуацию/строку дерево отвечает одним листом/паттерном. В др. ситуациях ответ будет от др. листьев/паттернов.
 
Forester #:
На каждую ситуацию/строку дерево отвечает одним листом/паттерном. В др. ситуациях ответ будет от др. листьев/паттернов.

Похоже что не только лист, а и дерево ничего не решает.

Вот нашел формулу итогового классификатора




Где

  • N – количество деревьев;
  • i – счетчик для деревьев;
  • b – решающее дерево;
  • x – сгенерированная нами на основе данных выборка.

Стоит также отметить, что для задачи классификации мы выбираем решение голосованием по большинству, а в задаче регрессии – средним.

 
СанСаныч Фоменко #:

Похоже что не только лист, а и дерево ничего не решает.

Вот нашел формулу итогового классификатора

Стоит также отметить, что для задачи классификации мы выбираем решение голосованием по большинству, а в задаче регрессии – средним.

Почему не решает? Оно вносит свой вклад (1/150) в итоговый ответ.

От каждого дерева в голосовании(среднем) участвует один из активизировавшихся листьев/паттернов.

Ответ леса, это среднее ответов всех деревьев (или активизировавшихся листьев/паттернов) - его эта формула и считает. Большинство для бинарной классификации будет, если среднее >0.5, то 1, иначе 0.
Но бордер 0.5 наверное не лучший вариант, если пакет дает доступ к значению среднего, то можно экспериментировать с разными бордерами.

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