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

Roman #:

Поясните пожалуйста, как работать с функциией потерь
Как задействовать целевую функцию для минимизации?

И второй вопрос.
В матлабе функция fminsearch() использует алгоритм Nelder-Mead.
В  ENUM_LOSS_FUNCTION этого алгоритма нет.
Можно рассчитывать, на добавление этого алгоритма?

Задача обучения нейронной сети заключается в поиске алгоритма, минимизирующего ошибку на обучающей выборке, для чего используется функция потерь (loss function).  Для вычисления отклонения используется метод Loss, который позволяет указать 1 из 14 видов перечисления ENUM_LOSS_FUNCTION. 

Полученные значения отклонений затем используются для уточнений параметров нейронной сети, это делается с помощью метода Derivative,  который вычисляет значения производной активационной функции и записывает в переданный вектор/матрицу.

За счет возможности расширения перечислений мы можем добавлять новые алгоритмы при необходимости.

Renat Fatkhullin #:

Задача обучения нейронной сети заключается в поиске алгоритма, минимизирующего ошибку на обучающей выборке, для чего используется функция потерь (loss function).  Для вычисления отклонения используется метод Loss, который позволяет указать 1 из 14 видов перечисления ENUM_LOSS_FUNCTION. 

Полученные значения отклонений затем используются для уточнений параметров нейронной сети, это делается с помощью метода Derivative,  который вычисляет значения производной активационной функции и записывает в переданный вектор/матрицу.

За счет возможности расширения перечислений мы можем добавлять новые алгоритмы при необходимости.


Разобрался на примере MAPE.

Я то думал это функция потерь которая минимизирует целевую функцию.
А это всего лишь расчет метрики.

vector Forecast = {28.252177870295327, 1.386017247821653, 1.321279511381957};
vector Fact     = {45.979999999999997, 1.710000000000000, 1.340000000000000};

double MAPE = Forecast.Loss(Fact,LOSS_MAPE);

Print(DoubleToString(MAPE,2) + " %");
19.63 %


Что то же самое в коде

vector Forecast = {28.252177870295327, 1.386017247821653, 1.321279511381957};
vector Fact     = {45.979999999999997, 1.710000000000000, 1.340000000000000};

vector loss = {0.,0.,0.};

for(int i=0; i<3; i++)
   loss[i] = fabs(Forecast[i] - Fact[i]) / Fact[i];

double MAPE = loss.Mean()*100;

Print(DoubleToString(MAPE,2) + " %");
19.63 %



В таком случае есть вопрос к описанию документации.

Нет ли здесь ошибки в описании?

ll

Может правильней было бы, 
Вычисляет значение потерь, в виде метрики MSE, MAE и т.д..?
Ведь функцию минимизации потерь надо ещё самому написать.


И тут какое-то странное описание.

i

Документация по MQL5: Методы матриц и векторов / Машинное обучение / Loss
Документация по MQL5: Методы матриц и векторов / Машинное обучение / Loss
  • www.mql5.com
Loss - Машинное обучение - Методы матриц и векторов - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
[Удален]
Aleksey Vyazmikin #:

Ищу компаньонов в интересное и увлекательное путешествие по неведомым тропинкам в поисках таинственных предикторов/фичей/признаков.

У меня есть карта, по которой их можно будет найти, нужны руки для расстановки ловушек и обдумывания повадок и ореола обитания этих удивительных явлений.

Путь предстоит не простой, долгий, но увлекательный, и уверен, без трофеев не останемся!

Если колитесь - задавайте вопросы!

Так уже все придумано до нас, поэтому хотелось бы просто запрыгнуть в электричку 

Сейчас нам ещё нейросети в метатрейдере сделают и вообще можно будет расслабиться 

А вообще можно просто покупать фьючерс на газ и потом продать 
Maxim Dmitrievsky #:
Так уже все придумано до нас, поэтому хотелось бы просто запрыгнуть в электричку 

Может и придумано, но явно нет на поверхности в открытых источниках.

Для поиска и отбора предикторов я разрабатываю системный подход, т.е. будет типизация предикторов, которые строятся, в том числе на данных индикаторов. Хотелось бы просеять код базу в поисках интересного. Вообще в моей парадигме есть понятие "Событие", это то, что может повлиять на цену, а описывается оно предикторами. Будут разные типы событий, к примеру "цена пробила уровень" (который генерируется индикатором), а описанием этих событий служат предикторы, отвечающие за время, историю события, относительность события (нормирование) - система координат будет так же подбираться.

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

Я ищу людей для ускорения процесса и усиления критического и креативного мышления.

Да, не будет заинтересованных, буду ковырять один - медленно и нудно.

Aleksey Vyazmikin #:

Может и придумано, но явно нет на поверхности в открытых источниках.

Для поиска и отбора предикторов я разрабатываю системный подход, т.е. будет типизация предикторов, которые строятся, в том числе на данных индикаторов. Хотелось бы просеять код базу в поисках интересного. Вообще в моей парадигме есть понятие "Событие", это то, что может повлиять на цену, а описывается оно предикторами. Будут разные типы событий, к примеру "цена пробила уровень" (который генерируется индикатором), а описанием этих событий служат предикторы, отвечающие за время, историю события, относительность события (нормирование) - система координат будет так же подбираться.

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

Я ищу людей для ускорения процесса и усиления критического и креативного мышления.

Да, не будет заинтересованных, буду ковырять один - медленно и нудно.

Я уже это все создал
Aleksey Vyazmikin #:

Может и придумано, но явно нет на поверхности в открытых источниках.

Для поиска и отбора предикторов я разрабатываю системный подход, т.е. будет типизация предикторов, которые строятся, в том числе на данных индикаторов. Хотелось бы просеять код базу в поисках интересного. Вообще в моей парадигме есть понятие "Событие", это то, что может повлиять на цену, а описывается оно предикторами. Будут разные типы событий, к примеру "цена пробила уровень" (который генерируется индикатором), а описанием этих событий служат предикторы, отвечающие за время, историю события, относительность события (нормирование) - система координат будет так же подбираться.

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

Я ищу людей для ускорения процесса и усиления критического и креативного мышления.

Да, не будет заинтересованных, буду ковырять один - медленно и нудно.

реальное время не забудь добавить...а то получится как у всех :-)

а-ля 2 шт: y=abs(sin(x))*sin(x) ; с частотой 1 день и 1 неделя ; сдвиг фазы лучше рассчитать заранее

потому-что вероятности сработки индикаторов и пересечения линий от них зависят

это было кстати про вредный,ненавистный тут Фурье :-)

mytarmailS #:
Я уже это все создал

Какой Вы молодец!

И много нашли интересного и устойчивого?

Решён вопрос с работой решения в терминале?

Maxim Kuznetsov #:

реальное время не забудь добавить...а то получится как у всех :-)

а-ля 2 шт: y=abs(sin(x))*sin(x) ; с частотой 1 день и 1 неделя ; сдвиг фазы лучше рассчитать заранее

потому-что вероятности сработки индикаторов и пересечения линий от них зависят

это было кстати про вредный,ненавистный тут Фурье :-)

Ну я не сообразительный, в своих фантазиях... Что значит "реальное время"?

Aleksey Vyazmikin #:

0)Какой Вы молодец!

1)И много нашли интересного и устойчивого?

2)Решён вопрос с работой решения в терминале?

0) да я такой..)

1) ещё всерйез  не разворачивал это все дело,  
1. есть проблемы с проклятием размерности и комбинаторным взрывом но это решаемо в теории,  в угоду точности.. 
2. Есть проблема с тем что алгоритм поиска медленный,  многое надо писать на С или С++,  а я не мею
3. Даже оптимизированый алгоритм не сможет искать закономерности в большой дате,  нужно искать закономерности локально.. 
         Но в целом если это не работает то не работает ничего.. 

2) Да


Кстати слово "событие"  можно заменить словом - правило 


Aleksey Vyazmikin #:

Ну я не сообразительный, в своих фантазиях... Что значит "реальное время"?

вероятность преодоления любой линии ценой (и сработка сигналов индикаторов) зависит от времени суток и дня недели. 

Нужно в NN и DL допихивать цикличное время. Простейший способ - синусоида. Зависимости нелинейны, поэтому она по простому в квадрате с учётом знака. Будет два дополнительных входа которые отвечают за привязки ко времени. Полночь/полдень везде по разному, поэтому лучше заранее высчитывать и давать фазу. Это связь модели с реальным миром и его временем

если их явным образом не подать, то IMHO получится либо тыква, либо вся халабуда будет пытаться их сама получить и вывести.