Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 196
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не спеши. Независимо от метода кластеризации. Сделай один проход. Обреж несколько наблюдений. Повтори. Сравни полученые
результаты. Выработай методу дальших действий. А то накуяришь"граалей", а потом будешь удивляться почему не работает)))
я думал делать полный перебор, те если изначально было 500 то в конце может получиться так что хорошая модель будет учитывать только 5
и только их я и оставлю ..
Если искать паттерны как mytarmailS, скользящим окном по барам - каждый паттерн будет нести в себе информацию о том в каком интервале могут находиться значения на каждом баре. Чем больше паттернов - тем меньший интервал будет отведён на каждый бар.....................
Подавать данные в скользящем окне это просто мой стиль подачи данных и не более того, хороший он или плохой, хз, думаю такой же как и все...
Но к тому подходу что я объяснил он не имеет никакого отношения...
Подход позволяет через кластеризацыю вытянуть те несколько процентов полезных данных которые не могут вытянуть обычные МО
вы можете спокойно взять свои предикторы в том виде в котором вы подаете в свою сеть, кластеризировать их (каждый) и пропустить через алгоритм что я описал
Грубо говоря, чтоб конкретное окно с новыми данными попало в какой-то найденный ранее паттерн, оно должно попасть в такие вериткальные ограничители, присущие каждому паттерну.
Ну тут еще зависит на сколько сильно вы хотите обучить модель , если обучить слабо, не делать много кластеров, то фигуры в голове у модели будут довольно сглажены и тот недостаток что вы говорите теоретически должен пропасть...
Вот как модель видит ряды цен из 50 значений, которые упакованы в 49 кластеров
код..
plot(price,t="l")
# делаем скользящее окно (50 знач) через матрицу хенкеля
hankel <- function(data, r=50) {
do.call(cbind,
lapply(0:(r-1),function(i) { data[(i+1):(length(data)-(r-1-i))]}))}
price <- hankel(price)
# скалирую, центрирую, в общем нормализирую каждую строчку в матрице
price <- t(apply(price,1,function(x){scale(x,center = T,scale = T)}))
# запускаем пакет с кластеризацыей, в дан. случ с кохоненом
# хорошый мануал
#https://cran.r-project.org/web/packages/SOMbrero/vignettes/doc-numericSOM.html
install.packages("SOMbrero")
library(SOMbrero)
# тренируем модель, с матрицей 7х7 те 49 кластеров
model <- trainSOM(price, dimension=c(7,7), verbose=T)
plot(model,what="prototypes",type="lines",print.title=T)
Ну тут еще зависит на сколько сильно вы хотите обучить модель , если обучить слабо, не делать много кластеров, то фигуры в голове у модели будут довольно сглажены и тот недостаток что вы говорите теоретически должен пропасть...
Вот как модель видит ряды цен из 50 значений, которые упакованы в 49 кластеров
код..
plot(price,t="l")
# делаем скользящее окно (50 знач) через матрицу хенкеля
hankel <- function(data, r=50) {
do.call(cbind,
lapply(0:(r-1),function(i) { data[(i+1):(length(data)-(r-1-i))]}))}
price <- hankel(price)
# скалирую, центрирую, в общем нормализирую каждую строчку в матрице
price <- t(apply(price,1,function(x){scale(x,center = T,scale = T)}))
# запускаем пакет с кластеризацыей, в дан. случ с кохоненом
# хорошый мануал
#https://cran.r-project.org/web/packages/SOMbrero/vignettes/doc-numericSOM.html
install.packages("SOMbrero")
library(SOMbrero)
# тренируем модель, с матрицей 7х7 те 49 кластеров
model <- trainSOM(price, dimension=c(7,7), verbose=T)
plot(model,what="prototypes",type="lines",print.title=T)
Во. Я также давно делал. Кохонен интересная штука. Но помните, что называеть его алгоритмом кластеризации не верно. Это алгоритм свертки. А кластеризацию потом делают на полученном двумерном пространстве...
спасибо ! не знал.
но использовать выход из model как кластера можно же? или нет?
[1] 7 7 7 7 7 7 7 7 6 6 6 5 5 4 4 3 3 2 2 1 1 1 1 1 8 15 15 22 22 29 36
[32] 43 43 43 43 43 43 43 44 44 45 45 45 46 46 46 46 47 47 47 47 48 48 48 49 42 35 35 28 28 21 21
[63] 21 21 21 21 21 21 21 21 21 14 14 14 7 7 7 7 7 7 7 6 5 4 3 3 2 1 1 1 1 1 1
[94] 8 8 15 22 22 29 36
спасибо ! не знал.
но использовать выход из model как кластера можно же? или нет?
[1] 7 7 7 7 7 7 7 7 6 6 6 5 5 4 4 3 3 2 2 1 1 1 1 1 8 15 15 22 22 29 36
[32] 43 43 43 43 43 43 43 44 44 45 45 45 46 46 46 46 47 47 47 47 48 48 48 49 42 35 35 28 28 21 21
[63] 21 21 21 21 21 21 21 21 21 14 14 14 7 7 7 7 7 7 7 6 5 4 3 3 2 1 1 1 1 1 1
[94] 8 8 15 22 22 29 36
Да конечно можно... Там по сути же аггрегация похожих векторов в этих ячейках.
Просто дело может быть таким (я сам на работе делал и знаю, что говорю). У меня n миллионов записей. Вектор входов длиной пару сотен. Я хочу его кластеризовать, но заранее не знаю сколько там кластеров. Такой массив данных не всякий алгоритм сможет обработать на обычном компе. Поэтому, я сначала свертываю пространство входов и делаю сетку, например, 50*50. Получается 2500 типичных представителей популяции... На таком массиве мой компьютер тянет agnes (иерархичекую кластеризацию). Там строится матрица близостей всех ко всем...
И получается, что я эти 2500 кластеризую, скажем на 10 кластеров и метрика аггрегации получается хорошая.
Да конечно можно... Там по сути же аггрегация похожих векторов в этих ячейках.
Просто дело может быть таким (я сам на работе делал и знаю, что говорю). У меня n миллионов записей. Вектор входов длиной пару сотен. Я хочу его кластеризовать, но заранее не знаю сколько там кластеров. Такой массив данных не всякий алгоритм сможет обработать на обычном компе. Поэтому, я сначала свертываю пространство входов и делаю сетку, например, 50*50. Получается 2500 типичных представителей популяции... На таком массиве мой компьютер тянет agnes (иерархичекую кластеризацию). Там строится матрица близостей всех ко всем...
И получается, что я эти 2500 кластеризую, скажем на 10 кластеров и метрика аггрегации получается хорошая.
в мануале https://cran.r-project.org/web/packages/SOMbrero/vignettes/doc-numericSOM.html
в разделе
Building super classes from the resulting SOM
как раз то о чем вы говорите
Для тех кто хочет знать что такое рынок на самом деле..
смотреть от старых видео к новым....
https://www.youtube.com/channel/UCsdK6s9i_I0NEMvis6wXhnQ/featured
вроди не сложно, а запрограмировать ? для меня пока точно не возможно...
предлагаю пообсуждать как можно кодировать такие подходы для МО или просто закодировать
Для информации по языку R и новому MetaTrader 5 build 1467:
Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее
В ближайших версиях будет добавлена масса новых математических и статистических функций, аналогичных R. Это позволит больше расчетов и визуализаций вести прямо в MetaTrader 5.Обновиться до 1467 можно с сервера MetaQuotes-Demo.