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

 

интересная статья по обучению НС на Хабре ( просто чтиво )  Реставрируем фотографии с помощью нейросетей

самое ценное, как всегда, комментарии пользователей - всю статью автор рассказывает про большой прорыв в своей работе, как водится со сравнением стороннего софта, но пользователи сразу указали на изъяны - преобладание зеленого цвета

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

Реставрируем фотографии с помощью нейросетей
Реставрируем фотографии с помощью нейросетей
  • habr.com
Всем привет, я работаю программистом-исследователем в команде компьютерного зрения Mail.ru Group. Ко Дню Победы в этом году мы решили сделать проект по реставрации военных фотографий. Что такое реставрация фотографий? Она состоит из трех этапов: находим все дефекты изображения: надломы, потертости, дырки; закрашиваем найденные дефекты...
 
Igor Makanu:

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

Колдун об этом сказал еще миллиард страниц назад.

Господа, когда же вы научитесь слушать друг друга? Что за деревенская узколобость и тупизм? Это уже реально вымораживает и бесит.

 
Igor Makanu:

интересная статья по обучению НС на Хабре ( просто чтиво )  Реставрируем фотографии с помощью нейросетей

самое ценное, как всегда, комментарии пользователей - всю статью автор рассказывает про большой прорыв в своей работе, как водится со сравнением стороннего софта, но пользователи сразу указали на изъяны - преобладание зеленого цвета

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

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

Но когда на форексе МО применяется на исторических данных, то он лишь создает иллюзию, что нашел оптимальный вариант.

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

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

 
Petros Shatakhtsyan:

Но когда на форексе МО применяется на исторических данных, то он лишь создает иллюзию, что нашел оптимальный вариант.

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

читал все это https://habr.com/ru/post/443240/ 

тут в общем, в уже сотый раз озвучу свое мнение, МО ничем не лучше и не хуже ГА тестера стратегий,

но все равно тема очень интересная, увлекает все это ))))

Понимание Q-learning, проблема «Прогулка по скале»
Понимание Q-learning, проблема «Прогулка по скале»
  • habr.com
Привет, Хабр! Предлагаю вашему вниманию перевод статьи «Understanding Q-Learning, the Cliff Walking problem» автора Lucas Vazquez. В последнем посте мы представили проблему «Прогулка по скале» и остановились на страшном алгоритме, который не имел смысла. На этот раз мы раскроем секреты этого серого ящика и увидим, что это совсем не так...
 

Ну, получается довольно просто в применении. Из 1-го примера.

Задаем кол-во состояний, и последовательности переходов (допустим, исторические). Т.е. вероятности нахождения в данном состоянии. И потом она считает общую вероятность по всем состояниям.

Или на МАшках сделать простой пример для начала, но пока все еще не вкупил как че, мб @mytarmailS пояснит

//+------------------------------------------------------------------+
//|                                                          HMM.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Math\Alglib\dataanalysis.mqh>
CMCPDState states;
CMCPDReport report;
CMatrixDouble track0, track1, results;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   track0.Resize(5, 2);
   track1.Resize(4,2);
   
   track0[0].Set(0, 1.0);
   track0[0].Set(1, 0.0);
   
   track0[1].Set(0, 0.95);
   track0[1].Set(1, 0.05);
   
   track0[2].Set(0, 0.92750);
   track0[2].Set(1, 0.07250);
   
   track0[3].Set(0, 0.91738);
   track0[3].Set(1, 0.08263);
   
   track0[4].Set(0, 0.91282);
   track0[4].Set(1, 0.08718);
   
   track1[0].Set(0, 0.8);
   track1[0].Set(1, 0.2);
   
   track1[1].Set(0, 0.86);
   track1[1].Set(1, 0.14);
   
   track1[2].Set(0, 0.887);
   track1[2].Set(1, 0.113);
   
   track1[3].Set(0, 0.89915);
   track1[3].Set(1, 0.10085);
   
   CMarkovCPD::MCPDCreate(2, states);
   CMarkovCPD::MCPDAddTrack(states, track0, 5);
   CMarkovCPD::MCPDAddTrack(states, track1, 4);
   CMarkovCPD::MCPDSolve(states);
   CMarkovCPD::MCPDResults(states, results, report);
   
   for(int i=0;i<results.Size();i++)
     {
      Print(results[i][0]);
      Print(results[i][1]);
     }
  }
//+------------------------------------------------------------------+
 

Такая стратегия с МАшками (очень простая) описана тут

https://www.quantstart.com/articles/market-regime-detection-using-hidden-markov-models-in-qstrader

Market Regime Detection using Hidden Markov Models in QSTrader | QuantStart
Market Regime Detection using Hidden Markov Models in QSTrader | QuantStart
  • www.quantstart.com
In the previous article on Hidden Markov Models it was shown how their application to index returns data could be used as a mechanism for discovering latent "market regimes". The returns of the S&P500 were analysed using the R statistical programming environment. It was seen that periods of differing volatility were detected, using both...
 
Maxim Dmitrievsky:

Ну, получается довольно просто в применении. Из 1-го примера.

Задаем кол-во состояний, и последовательности переходов (допустим, исторические). Т.е. вероятности нахождения в данном состоянии. И потом она считает общую вероятность по всем состояниям.

Или на МАшках сделать простой пример для начала, но пока все еще не вкупил как че, мб @mytarmailS пояснит

//+------------------------------------------------------------------+
//|                                                          HMM.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Math\Alglib\dataanalysis.mqh>
CMCPDState states;
CMCPDReport report;
CMatrixDouble track0, track1, results;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   track0.Resize(5, 2);
   track1.Resize(4,2);
   
   track0[0].Set(0, 1.0);
   track0[0].Set(1, 0.0);
   
   track0[1].Set(0, 0.95);
   track0[1].Set(1, 0.05);
   
   track0[2].Set(0, 0.92750);
   track0[2].Set(1, 0.07250);
   
   track0[3].Set(0, 0.91738);
   track0[3].Set(1, 0.08263);
   
   track0[4].Set(0, 0.91282);
   track0[4].Set(1, 0.08718);
   
   track1[0].Set(0, 0.8);
   track1[0].Set(1, 0.2);
   
   track1[1].Set(0, 0.86);
   track1[1].Set(1, 0.14);
   
   track1[2].Set(0, 0.887);
   track1[2].Set(1, 0.113);
   
   track1[3].Set(0, 0.89915);
   track1[3].Set(1, 0.10085);
   
   CMarkovCPD::MCPDCreate(2, states);
   CMarkovCPD::MCPDAddTrack(states, track0, 5);
   CMarkovCPD::MCPDAddTrack(states, track1, 4);
   CMarkovCPD::MCPDSolve(states);
   CMarkovCPD::MCPDResults(states, results, report);
   
   for(int i=0;i<results.Size();i++)
     {
      Print(results[i][0]);
      Print(results[i][1]);
     }
  }
//+------------------------------------------------------------------+

В алглибе, как я понял (возможно что неверно), надо самому треки составлять по нужному к-ву кластеров. А в тех примерах на Питоне, запрашиваешь нужное количество кластеров, и он сам данные перераспределяет.

Хотя если классификация, с 2 классами, то наверное можно цепочки строить так: начинающиеся с 0 пока не станет 1; и начинающиеся с 1 пока не станет 0. Т.к. у нас нет промежуточных 0.95, 0.8 и т.д.

 
elibrarius:

В алглибе, как я понял (возможно что неверно), надо самому треки составлять по нужному к-ву кластеров. А в тех примерах на Питоне, запрашиваешь нужное количество кластеров, и он сам данные перераспределяет.

Хотя если классификация, с 2 классами, то наверное можно цепочки строить так: начинающиеся с 0 пока не станет 1; и начинающиеся с 1 пока не станет 0. Т.к. у нас нет промежуточных 0.95, 0.8 и т.д.

вообще не понимаю как это работает. Тогда почему просто не использовать классификацию через НС

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

и похоже, что в алглиб что-то не то, другая модель
 
Maxim Dmitrievsky:

вообще не понимаю как это работает.

Я тоже не понял и увидел разницу в использовании, потому и забросил после 2-3х часов изучения)

 
elibrarius:

Я тоже не понял и увидел разницу в использовании, потому и забросил после 2-3х часов изучения)

допустим, можно домножить значения Hidden matrix на текущее значение, например ретурн, и получить метку класса (т.е. скрытое состояние). Но тогда это получается простейший классификатор.

а на вход подавать тоже нормализованные значения 0:1

хз в чем прикол :)

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