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

 
Alexey Burnakov:
Ничего не профукали. На первом же замере и узнаем кластер. далее будет череда смены кластеров. На точках переходов из кластера в кластер можно построить квадратную матрицу и поменять МО торговли: входим в бай на кластере n, закрываем сделку на кластере m. Затем такую же матрицу для селл. Все варианты просто перебираем. И можно варьировать параметры кластеризации и смотреть на результат в цикле.
а ето интересно
 
Dr.Trader:

Наверное у вас разные параметры создания лесов в r и rattle, поэтому и результаты разные. В самом rattle тоже можно менять количество деревьев и переменных.

И у вас в rattle ошибка 34% на тренировочных данных, и 3% на проверочных? Что-то не так с проверочными данными, либо они каким-то образом уже существовали в тренировочных данных, либо у вас очень маленький набор данных, и так случайно сложилось.

нет, в rattle на всех этапах маленькая ошыбка

а в R на всех этапах большая )

параметры те же, да и при любых параметрах такой разрыв не возможен..

 
Блин как же тут файл то прикрепить??? или не прикрепляет или зависает нафиг..
 
mytarmailS:

И еще вопрос к знатокам R 

 

library(kza)

DAT <- rnorm(1000)

KZP <- kzp(DAT,m=100,k=3)

      summary(KZP, digits=2, top=3)


 как мне из "summary"  вытащить это http://prntscr.com/bhtlo9 что бы можно было работать с этими цыфрами 

У меня тоже бывают такие проблемы. Обычно хватает выполнить attributes(KZP) чтобы узнать список доступных переменных, и затем просто пройтись по ним например KZP$window итд и найти нужные числа. Но тут эти числа генерируются в самой функции Summary и нигде не сохраняются.

Вот тут исходник есть: https://cran.r-project.org/web/packages/kza/index.html, надо выполнить что-то такое:

summary.kzp <- function(object, digits = getOption("digits"), top=1, ...)
{
        cat(" Call:\n ")
        dput(object$call, control=NULL)

        M=object$window
        if (is.null(object$smooth_periodogram)) {       d<-object$periodogram } else { d<-object$smooth_periodogram }
        
        mlist<-rep(0,top)
        for (i in 1:top) {
                mlist[i]<-which.max(d)
                d[which.max(d)]=NA                      
        }

   cat("\n Frequencies of interest:\n")
   print((mlist-1)/M, digits=digits, ...)

    cat("\n Periods of interest:\n")
    print(M/(mlist-1), digits=digits, ...)
    invisible(object)
}
 

Спасибо Dr.Trader , как же приятно когда есть у кого спросить что то по этому кучерявому R )

 

По поводу rattle я понял в чем проблема,  rattle еще семплирует данные "sample()"  нужно ли это действие? с семплированием и на R получились те же результаты, но фишка то в том что новые данные будут поступать по одной свечке, семплировать их не получиться

и получается что если всю выборку просемплировать  то результаты изумительные на всех периодах включая out-of-samle , а когда подаешь реальные данные то все как всегда

 Вот и вопрос нужно ли это семплирование вообще?

 

Да, нужно. С помощью sample - rattle делит тренировочные данные на несколько групп по строкам (строки распределяются случайно по трём таблицам, в отношении 75%/15%/15%). Из одного входного файла получается 3 таблицы.  На колонки это не действует, они во всех таблицах будут одинаковы. 

таблица train - по ней будет идти обучение модели

таблицы validate и test - нужны для контроля обучения

Допустим вы берёте данные за последний год, и хотите обучить на них модель, чтобы торговать следующие месяцы. Само обучение будет происходить только на таблице train. После этого вы можете проверить модель на второй или третьей таблице, посчитав их ошибки. Если модель обучена правильно то ошибки на всех трёх таблицах будут примерно равны, не смотря на то что обучение шло используя только первую. 

Это легко проверить на random forest. Практически любой набор данных может дать ошибку на train таблице в 0%. Но, проверив эту же модель но test и validate таблицах - вы там скорее всего увидите ошибку 50%. А это значит что модель переобучена, и перенеся её в mt5 вы будете постепенно сливать свой депозит. 
Но если взять выложенный ранее RData файл с примером от СанСаныча, то лес на train таблице даст ошибку около 30%. Примечательно, но и на validate и test таблицах ошибка останется примерно такой-же, несмотря на то что модель при обучении данные из этих таблиц не видела. Такую модель можно смело переносить в mt5 и торговать.

Если просто взять все имеющиеся данные без семплирования, обучить модель, увидеть ошибку 0% и обрадоваться - то в реальной торговле всё будет очень плохо.

 
Dr.Trader:

Да, нужно. С помощью sample - rattle делит тренировочные данные на несколько групп по строкам (строки распределяются случайно по трём таблицам, в отношении 75%/15%/15%). Из одного входного файла получается 3 таблицы.  На колонки это не действует, они во всех таблицах будут одинаковы. 

таблица train - по ней будет идти обучение модели

таблицы validate и test - нужны для контроля обучения

Допустим вы берёте данные за последний год, и хотите обучить на них модель, чтобы торговать следующие месяцы. Само обучение будет происходить только на таблице train. После этого вы можете проверить модель на второй или третьей таблице, посчитав их ошибки. Если модель обучена правильно то ошибки на всех трёх таблицах будут примерно равны, не смотря на то что обучение шло используя только первую. 

Это легко проверить на random forest. Практически любой набор данных может дать ошибку на train таблице в 0%. Но, проверив эту же модель но test и validate таблицах - вы там скорее всего увидите ошибку 50%. А это значит что модель переобучена, и перенеся её в mt5 вы будете постепенно сливать свой депозит. 
Но если взять выложенный ранее RData файл с примером от СанСаныча, то лес на train таблице даст ошибку около 30%. Примечательно, но и на validate и test таблицах ошибка останется примерно такой-же, несмотря на то что модель при обучении данные из этих таблиц не видела. Такую модель можно смело переносить в mt5 и торговать.

Если просто взять все имеющиеся данные без семплирования, обучить модель, увидеть ошибку 0% и обрадоваться - то в реальной торговле всё будет очень плохо.

 

Я вас понимаю, но сатира в том что как раз на семплированых данных ошыбка мала на всех трех выборках, а без семплирования большая

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

 

 

кароч, натренировал я модель свою (random forest), результат не удовлетворяет, но зато не переобучена вроди

1) целевая зигзаг с коленом 0,5%

2) предикторы - уровни и свечи всего 100 штук (без индикаторов осцыляторов итп) 

3) саму модель никак не оптимизировал  , тупо поставил разделения 3 , кол. деревьев 200 штук

 4) кстати если пропустить через PrunePredictors (отбор признаков) то из всех 100 предикторов отсеялось всего 3, итого 97 предикторов осталось

 выборку разделил на две части, тренировочную и тестовую, тестовая 5-тая часть тренировочной

 

На тренировке ошибка модели 33 %


На тесте: ошибка модели 32 %


 данные не семплированы так как пока не понял этого зверя

 Теперь можно подумать про кластера

 

Форум: как вставить картинку

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

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

 
mytarmailS:

Вопрос не в том, вопрос почему разные результаты в R и rattle на тех же данных и той же модели

Вопрос второй : какой смысл проверять модель "вне выборки" на  rattle если она показывает черти что 

Вы не поняли мой пост
Причина обращения: