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

 
mytarmailS #:
о чем Максим 
Про МО. Бот может какой-то.
Продукт интеллектуальный давай
Вон там 70 статей про RL уже есть, уже все все поняли. Нужны другие темы :)
 
СанСаныч Фоменко #:

Есть два подхода на НЕ стационарных рынках, к которым относятся финансовые временные ряды:

1. Моделирование НЕ стационарности с предварительным уничтожением ее самых вопиющих проявлений, например, трендов, - это ГАРЧи

2. Поиск паттернов на истории с помощью МО. Если приложить некие усилия на предобработку, то такие паттерны будут давать в будущем ошибку классификации менее 20%.

Паттерн, он же модель, всего один. Как только вы упростите любое движение до АВС, тогда можно будет найти все мат. пропорции паттерна. Хотя и без машинного обучения всё это спокойно считается ручками. Ранок не сложнее уроков алгебры и геометрии в школе.

 
Bogard_11 #:

Паттерн, он же модель, всего один. Как только вы упростите любое движение до АВС, тогда можно будет найти все мат. пропорции паттерна. Хотя и без машинного обучения всё это спокойно считается ручками. Ранок не сложнее уроков алгебры и геометрии в школе.

 Паттерн, например. в деревянных моделях, коих множество, моделей, - это дерево. Каждая деревянная модель, например, CatBoost находит свыше сотни деревьев, читай паттернов. Для RandomForest у меня есть статистика: до 50 деревьев ошибка классификации падает, а свыше 150 деревьев ошибка классификации стабильна, т.е. во временном ряде, мною обработанном, количество паттернов не превышает 150.

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

 Паттерн, например. в деревянных моделях, коих множество, моделей, - это дерево. Каждая деревянная модель, например, CatBoost находит свыше сотни деревьев, читай паттернов. Для RandomForest у меня есть статистика: до 50 деревьев ошибка классификации падает, а свыше 150 деревьев ошибка классификации стабильна, т.е. во временном ряде, мною обработанном, количество паттернов не превышает 150.

Осталось совсем чуть чуть, формализовать эти 150 паттернов до одного общего. Если есть А и есть В, то С придет в определенное время в такую-то уточку, если не пришли, время и точка будут другие. Там всего-то три разных варианта развития С. Все решает ВРЕМЯ! И это спокойно прорабатывается сперва ручками, а далее можно и в робота запихнуть, если есть желание.

P.S. - мало того, размер А уже дает определенные уровни по откату В (очень часто люфт не превышает 1-3 пунктов). Так же и В заранее сигналит о ценовых уровнях С. Везде сплошная математика.

Как пример, ручной советник, считает автоматом уровни от интересующего нас движения. Т.е. натягиваем на нужную нам волну, и будущее как бы уже обозначено.

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

 Паттерн, например. в деревянных моделях, коих множество, моделей, - это дерево. Каждая деревянная модель, например, CatBoost находит свыше сотни деревьев, читай паттернов. Для RandomForest у меня есть статистика: до 50 деревьев ошибка классификации падает, а свыше 150 деревьев ошибка классификации стабильна, т.е. во временном ряде, мною обработанном, количество паттернов не превышает 150.

Скорее путь к каждому листу, ответ которого превышает ваш порог для открытия сделки является паттерном.
Например:
1-й сплит: дельта 40 бара с текущим = 0,
2-й сплит: 30 бара=100,
3-й сплит: 20 бара =50,
4-й сплит: 10 бара 100,
5-й сплит: 1 бара = 0.
Это 2 вершины с впадиной. Паттерн? Да. Путь к 1 листу его описывает.

Если у вас в дереве 20 листьев превышают порог по которому торгуете, то у вас в дереве 20 паттернов, которые вы используете. Менее успешные листья - тоже описывают паттерны, но они со случайным/проигрышным исходом.
Другие 100 деревьев могут использовать другие фичи/бары с др значениями сплитов.
Лес усреднит (сложит и поделит на кол-во) ответы всех деревьев, получим среднее мнение о ситуации.
Буст просто сложит с весовым/уточняющим коэффициентом.

 
Bogard_11 #:

Осталось совсем чуть чуть, формализовать эти 150 паттернов до одного общего. Если есть А и есть В, то С придет в определенное время в такую-то уточку, если не пришли, время и точка будут другие. Там всего-то три разных варианта развития С. Все решает ВРЕМЯ! И это спокойно прорабатывается сперва ручками, а далее можно и в робота запихнуть, если есть желание.

P.S. - мало того, размер А уже дает определенные уровни по откату В (очень часто люфт не превышает 1-3 пунктов). Так же и В заранее сигналит о ценовых уровнях С. Везде сплошная математика.

Как пример, ручной советник, считает автоматом уровни от интересующего нас движения. Т.е. натягиваем на нужную нам волну, и будущее как бы уже обозначено.

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

 
Forester #:

Скорее путь к каждому листу, ответ которого превышает ваш порог для открытия сделки является паттерном.
Например:
1-й сплит: дельта 40 бара с текущим = 0,
2-й сплит: 30 бара=100,
3-й сплит: 20 бара =50,
4-й сплит: 10 бара 100,
5-й сплит: 1 бара = 0.
Это 2 вершины с впадиной. Паттерн? Да. Путь к 1 листу его описывает.

Если у вас в дереве 20 листьев превышают порог по которому торгуете, то у вас в дереве 20 паттернов, которые вы используете. Менее успешные листья - тоже описывают паттерны, но они со случайным/проигрышным исходом.
Другие 100 деревьев могут использовать другие фичи/бары с др значениями сплитов.
Лес усреднит (сложит и поделит на кол-во) ответы всех деревьев, получим среднее мнение о ситуации.
Буст просто сложит с весовым/уточняющим коэффициентом.

Дерево - это дерево и их, как помнится, можно даже распечатать.

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

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

Дерево - это дерево и их, как помнится, можно даже распечатать.

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

Не согласен. Я привел пример листа глубиной 5 (лист получен через 5 сплитов и это паттерн). Если вы получите лист через 200 сплитов, то это даст вам переобученный паттерн, который будет плохо работать на новых данных. Но паттерном от этого он не перестанет быть. Дерево - набор паттернов.

 
Forester #:

Не согласен. Я привел пример листа глубиной 5 (лист получен через 5 сплитов и это паттерн). Если вы получите лист через 200 сплитов, то это даст вам переобученный паттерн, который будет плохо работать на новых данных. Но паттерном от этого он не перестанет быть. Дерево - набор паттернов.

Начнем от печки.

Я рассматриваю два варианта деревьев: типа бэггинга и бустинга (rf, ada).

Любой из этих достаточно большого набора алгоритмов рассматривает входные данные ПОСТРОЧНО, без обращения к соседним строкам. именно поэтому набор для обучения создается путем случайной выборки строк.

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

Комбинацию некоторого количества предикторов из набора входных предикторов и их значений в одной строке справедливо назвать паттерном. 

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

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

Комбинацию некоторого количества предикторов из набора входных предикторов и их значений в одной строке справедливо назвать паттерном. 

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

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

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