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

[Удален]  

А есть стандартные способы изменения порядка индексации у векторов

Если я хочу, чтобы нулевой бар был последним, а не первым.

"При этом данные будут скопированы таким образом, что самый старый по времени элемент помещается в начало матрицы/вектора. Существует 3 варианта метода."

Документация по MQL5: Методы матриц и векторов / Инициализация / CopyRates
Документация по MQL5: Методы матриц и векторов / Инициализация / CopyRates
  • www.mql5.com
Получает в матрицу или вектор исторические серии структуры MqlRates указанного символа-периода в указанном количестве. Отсчет элементов от...
 

Машинное обучение (ML) произвело революцию в мире трейдинга, обеспечив принятие решений на основе данных и повысив эффективность торговли. Трейдеры и компании используют МЛ для прогнозирования движения рынка, оптимизации портфелей и реализации стратегий при минимальном вмешательстве человека. В этой статье рассматриваются теоретические основы, популярные модели, практические приложения и роль ML в алгоритмической торговле.

Alexey Burnakov выбора предикторов " не сработали

Я опубликую свой метод, который надежно и чувствительно решает аналогичные проблемы - я изложу теорию и опубликую код на R.

Это делается для взаимного обогащения "понимания" задач машинного обучения.

 

А давайте еще один теоретический момент рассмотрим.
Итак:
Лес. Каждое дерево голосует одним листом, в листе разное количество примеров/строк и среднее значение, которое является прогнозом листа.
1) Прогноз леса есть среднее голосов всех деревьев, т.е.
(сумма прогнозов всех активировавшихся листов) / (число деревьев).

2) Есть вариант: samples weighted. Листья С большим числом примеров будут больше влиять на результат леса.
Не знаю как в пакетах сделано, себе сделал как:
(сумма прогнозов всех активировавшихся листов * число примеров) / (сумма примеров всех активировавшихся листов).

Таким образом влияние листа с прогнозом 0,9 и  10 примерами будет меньше, чем листа с прогнозом 0,7 и 20 примерами.
В 1м случае по числу деревьев прогноз =(0,9+0,7)/2=0,8

Во 2м взвешенном по числу примеров прогноз = (0,9*10 + 0,7*20)/(10+20)=0,76. Т.е. лист с большим числом примеров перетянул прогноз в свою сторону. Возможно это хорошо.

Но может быть и такой пример: 0,9 с 10 примерами и 0,5 с 100 примерами (лист в котором собрался рондом).

В 1м случае по числу деревьев прогноз =(0,9+0,5)/2=0,7

Во 2м взвешенном по числу примеров прогноз = (0,9*10 + 0,5*100)/(10+100)=0,54. Прогноз близок к рандомному листу и это скорее плохо.

В своих экспериментах на линии баланса не увидел чтобы 1 из этих вариантов значительно улучшал результаты. Да и на рассмотренных примерах иногда лучше 1 вариант, а иногда 2-й.

Кто, что думает? Какой вариант на ваш взгляд правильнее и лучше? Может из практики какие-то наблюдения есть?

 
Forester #:

Имхо, зависит от способа построения деревьев (остановки сплитов). Можно же остановку делать как раз на основе размеров листьев.

Ну и в любом случае, более-менее осмысленный теоретический ответ можно получить с помощью Монте Карло. Чуть более практический ответ - наверно с помощью кросс-валидации.

 
Aleksey Nikolayev #:

Имхо, зависит от способа построения деревьев (остановки сплитов). Можно же остановку делать как раз на основе размеров листьев.

Ну и в любом случае, более-менее осмысленный теоретический ответ можно получить с помощью Монте Карло. Чуть более практический ответ - наверно с помощью кросс-валидации.

Да, как раз и думаю, что надо стараться листья делать близкими по размеру. Но листья в которых рандом собирается все равно будут большого размера, ведь они как раз содержат примеры с малым движением цены, а таких - большинство. А мельчить рандом - тоже получишь рандом - особого смысла нет.

Думаю, что если размер листьев отличается не более 2-3 раз, то взвешивание скорее полезно (теоретически). Но нет гарантий, что не получится огромных листьев с мусором.

[Удален]  
А как без разведочного анализа понять, какие листья делать и что из этого получится?)
 
Forester #:
Да, как раз и думаю, что надо стараться листья делать близкими по размеру. Но листья в которых рандом собирается все равно будут большого размера, ведь они как раз содержат примеры с малым движением цены, а таких - большинство. А мельчить рандом - тоже получишь рандом - особого смысла нет.

Думаю, что если размер листьев отличается не более 2-3 раз, то взвешивание скорее полезно (теоретически). Но нет гарантий, что не получится огромных листьев с мусором.

Бессмысленно рассматривать построение модели без рассмотрения препроцессинга и способа деления на кассы.

1. Препроцессинг. Откуда такое количество рандома? Надо работать с отбором предикторов. Источником ошибки классификации является не способ построения дерева, а то, что одно и то значение предиктора в одних случаях дает один класс, а в других случаях дает другой класс. Бессмысленно классифицировать шум.

2. На каком основании рассматривается значение 0.5. У Вас вероятность класса распределена нормально с совпадающей средней и медианой?  Как делим на классы? Существует большое количество способов деления на классы, самый примитивный и сомнительный пополам. 

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

Насколько понимаю, у Forester речь про регрессию, а не классификацию.

 
Aleksey Nikolayev #:

Насколько понимаю, у Forester речь про регрессию, а не классификацию.

В конечном итоге, всегда классы: "покупать-продавать" или более разнообразные, но классы. И при предсказании значения стоит тот же вопрос: при какой вероятности прогноза значения принимать решение, например, покупать.

Но при прогнозе значения, ситуация имеет другую сложность: вероятность должна сопровождаться доверительным интервалом, чего я не увидел в посте, и решил, что классы.

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

Бессмысленно рассматривать построение модели без рассмотрения препроцессинга и способа деления на кассы.

1. Препроцессинг. Откуда такое количество рандома? Надо работать с отбором предикторов. Источником ошибки классификации является не способ построения дерева, а то, что одно и то значение предиктора в одних случаях дает один класс, а в других случаях дает другой класс. Бессмысленно классифицировать шум.

2. На каком основании рассматривается значение 0.5. У Вас вероятность класса распределена нормально с совпадающей средней и медианой?  Как делим на классы? Существует большое количество способов деления на классы, самый примитивный и сомнительный пополам. 

0,5 я упоминал в качестве примера шумного листа, в котором нет прибыли.
Вероятность (значение лиcта) в классификации 0,5 эквивалентна равенству доходов и расходов в регрессии, т.е. среднее значение листа будет = 0. Т.е. говоря про 0,5 в классификации это я делаю перевод с 0 в регрессии.

А 0,5 классификации или 0 регрессии происходит из Распределения приращений на реальном рынке


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

Но все же бывают успешные листья с уменьшенным количеством шума, и задача - не заглушить их усреднением с шумовыми листами из других деревьев при усреднении.
В общем решение к этому уже есть - стремиться делать листья более близкими по размеру, если применяется взвешивание по числу примеров.

Ну а то, каким выбирать порог для действия (buy|sell) - другой вопрос. И заслуживает отдельного рассмотрения.