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

 
Максим, а можете сравнить, где скорость обучения больше, на питоне или в консольной версии CatBoost?
 
Aleksey Vyazmikin:
Максим, а можете сравнить, где скорость обучения больше, на питоне или в консольной версии CatBoost?
Одинаковая, это одна и та же программа 
 
Alexander_K:

Странно... Ладно, я еще посмотрю эту тему - потом отпишусь.

Сначала высказался из воспоминаний и оказался не прав.

Проверил только что с кросс валидацией. Время все таки дает прирост на 1-2% на новых данных. При том что всего преобладание успешных предсказаний над неуспешными около 5% при ТП=СЛ. Т.е. от 10 до 30% вклада в успех идет от времени.

Впрочем это проверка на 2-х месячном куске истории. На другом участке все может измениться.
 

Время подаю в виде косинуса и синуса. Это обсуждалось тут https://www.mql5.com/ru/forum/212376#comment_5983502

Просто в виде 0...5 (день недели) или 0...23 (час) или 0...59 (минута) подавать тоже можно, но как категориальную переменную.
Синус и косинус - это уже числовые, любой алгоритм примет.

Обсуждение статьи "Глубокие нейросети (Часть II). Разработка и выбор предикторов"
Обсуждение статьи "Глубокие нейросети (Часть II). Разработка и выбор предикторов"
  • 2017.07.31
  • www.mql5.com
Опубликована статья Глубокие нейросети (Часть II). Разработка и выбор предикторов: Автор: Vladimir Perervenko...
 

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

https://libact.readthedocs.io/en/latest/overview.html

https://medium.com/towards-artificial-intelligence/how-to-use-active-learning-to-iteratively-improve-your-machine-learning-models-1c6164bdab99

Overview — libact 0.1.3 documentation
  • libact.readthedocs.io
libact is a Python package designed to make active learning easier for real-world users. The package not only implements several popular active learning strategies, but also features the active-learning-by-learning meta-algorithm that assists the users to automatically select the best strategy on the fly. Furthermore, the package provides a...
 
mytarmailS:

По ходу плывут частоты и возможно фазы..  Амплитуды держаться ...

Вот прогноз на 500 точек подогнаной модели на истории 10к из 4 гармоник

Видно что прогноз актуален все 500 точек, но плывут частоты, причем плывут по непонятному алгоритму

и это еще наглядный пример, бывает вообще жесть

На приращениях пробовал?

" Одним из полезных свойств ряда приращений является большая устойчивость спектра по сравнению с исходным процессом. " .Это Goodman пишет.

 
elibrarius:

Время подаю в виде косинуса и синуса. Это обсуждалось тут https://www.mql5.com/ru/forum/212376#comment_5983502

Просто в виде 0...5 (день недели) или 0...23 (час) или 0...59 (минута) подавать тоже можно, но как категориальную переменную.
Синус и косинус - это уже числовые, любой алгоритм примет.

Можете функцию конвертации времени в синус\косинус опубликовать? Я бы так же попробовал этот метод. В статье, что я опубликовал, там значимым предиктором оказался порядковый номер часа. Интересно, подходит ли этот метод для деревянных моделей или больше для нейросетей.

 
Aleksey Vyazmikin:

 Интересно, подходит ли этот метод для деревянных моделей или больше для нейросетей.

а если просто подумать, разве ответ не очевиден?

 
Aleksey Vyazmikin:

Можете функцию конвертации времени в синус\косинус опубликовать? Я бы так же попробовал этот метод. В статье, что я опубликовал, там значимым предиктором оказался порядковый номер часа. Интересно, подходит ли этот метод для деревянных моделей или больше для нейросетей.

//день недели, час = ввести через 2 предиктора sin и cos угла от полного цикла 360/7,  360/24
                     
if(nameInd[nInd]=="Hour")        {CopyTime        (sim,per,startDt,n_bar+1,dtm);TimeToStruct(dtm[0],dts);ArrayResize(tmp,1);tmp[0]=(double)(dts.hour*60+dts.min)*360.0/1440.0;tmp[0]=(buf==0?MathSin(tmp[0]*pi/180.0):MathCos(tmp[0]*pi/180.0));}// для увеличения точности добавлены минуты  360/24 = 360/24/60 = 360/1440

if(nameInd[nInd]=="WeekDay")     {CopyTime        (sim,per,startDt,n_bar+1,dtm);TimeToStruct(dtm[0],dts);ArrayResize(tmp,1);tmp[0]=(double)(dts.day_of_week*1440+dts.hour*60+dts.min)*360.0/10080.0;tmp[0]=(buf==0?MathSin(tmp[0]*pi/180.0):MathCos(tmp[0]*pi/180.0));}// для увеличения точности добавлены часы и минуты 360/7 = 360/7/24/60 = 360/10080

По коду, если  buf==0, то в него синус, иначе ( buf==1 ) косинус.


Деревянные модели все переваривают.
Синус и косинус для НС хороши тем, что уже нормированы к -1...+1

Если этот вариант сравните с  нумерованным временем  - отпишитесь что лучше. Что-то мне кажется что должно на 100% совпадать, если подать день недели, час и минуту.