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

 
СанСаныч Фоменко:

Я понимаю, чем отличается дерево от лесов (или думаю, что понимаю) леса лучше использовать когда больше неопределенности в данных, т.е. менее устойчивая закономерность так-как леса принимают решение путем голосования, которое происходит по случайным(независимым из-за укорочения) деревьям, или я не прав? 

Не знаю, я сужу по результатам.

 А вот варианта "adad" у меня не наблюдается, его нет и на скрине, там есть "Forest" - это не то?

По порядку: 


Tree

The 'rpart' package provides the 'rpart' function.


Boost

# Extreme Boost 

# The `xgboost' package implements the extreme gradient boost algorithm.


SVM

# Support vector machine. 

# The 'kernlab' package provides the 'ksvm' function.


Linear

# Regression model 

# Build a Regression model.


Neural Net

# Neural Network 

# Build a neural network model using the nnet package.

library(nnet, quietly=TRUE)


Кстати, эту работу я сделал за Вас - можете сами посмотреть в Log все это. Если у Вас другая версия rattle, то перечень может быть другим.

Спасибо за расшифровку. У меня версия 5.1.0 вероятно последняя - все эти пакеты установлены автоматически, при их вызове, и дополнительно есть "Forest".

СанСаныч Фоменко:

Библиотека модифицирована по моему заказу - мне нужен был тестер из МТ5. Я посчитал, лень искать, может быть зачистил.

Посмотрите статьи Vladimir Perervenko

Если Вас интересуют сети, то у него последний писк в этой области, R, советники, человек доступен на сайте

Спасибо, посмотрю.

 
СанСаныч Фоменко:


Так как резать файл с помощью R, нужно использовать особый алгоритм? Интересно посмотреть, что в итоге будет.

По индексу, например: [1:2000,],  [2001:4000,]. Важно чтобы во втором файле не нарушался естественная временная последовательность

Т.е. порезать можно и в экселе, так?

 
Maxim Dmitrievsky:

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

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

В том то и дело, что разные варианты дают разный результат, а если это так, то вывод делать о качестве предикторов как? Просто получается надо брать усредненный вариант, т.е. если везде не плохо, то нормально, а уже потом тюнинговать сеть/дерево/леса?

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

 
Aleksey Vyazmikin:

Т.е. порезать можно и в экселе, так?

Не надо там Ексель. 1 строчка и все.

читай - Роберт И. Кабаков  R в действии. Анализ и визуализация данных на языке R. В инете есть.

 
Yuriy Asaulenko:

Не надо там Ексель. 1 строчка и все.

читай - Роберт И. Кабаков  R в действии. Анализ и визуализация данных на языке R. В инете есть.

Да нельзя уметь всё - у меня нет цели научится программировать на R, мне нужна возможность проверки предикторов и конвертация набора правил в MT5. В общем, если это одна строка, то почему бы просто не написать её Вам? Ну а пока я справился подручными средствами.

 
СанСаныч Фоменко:


Картинка из rattle  у Вас недоделанная. Как минимум надо перейти на соседнюю вкладку evaluate и посмотреть результаты там.

Но самое главное надо исходный файл разбить на две части с разными именами (скорее всего это придется делать на R).

На первом файле строите ВСЕ шесть моделей и смотрите их оценку test, validate.   Потом имя второго файла заносите в поле R Dataset. И на нем получаете снова оценки. Все полученные оценки должны примерно совпадать!

Если у Вас эти оценки НЕ совпадают, причем на втором файле результативность моделей принципиально хуже, то это означает, что Ваши модели переобучены и причиной переобученности является наличие шумовых (не относящихся к целевой переменной) предикторов.


Это и есть момент истины: или у вас имеется набор предикторов, относящихся к конкретной целевой переменной или у Вас нет этого. И никакие модели этого печального обстоятельства исправить не могут. Далее начинается тупая работа по подбору пары "целевая-предикторы", модели вообще не интересны, найдете пару, то модели просто семечки в R, за день наберете десяток и будете делать из них ансамбли.

Попрошу Вас подробней пояснить.

1. Во вкладке "Evaluate" какой параметр выбирать в наборе "Type"?

2. Что сделать, что б можно было заносить имя второго файла? У меня это окно хоть и активно, но выбрать файл нельзя! А "CSV File" - зачем там можно выбрать?


 
Aleksey Vyazmikin:

В том то и дело, что разные варианты дают разный результат, а если это так, то вывод делать о качестве предикторов как? Просто получается надо брать усредненный вариант, т.е. если везде не плохо, то нормально, а уже потом тюнинговать сеть/дерево/леса?

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

а зачем? в мт5 есть случайный лес, можно адаптировать под свои задачи. Смотреть ошибки и давать ему тестовые примеры, смотреть результаты. Единственное что важности переменных он не выдает

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

 
Aleksey Vyazmikin:

 В общем, если это одна строка, то почему бы просто не написать её Вам? Ну а пока я справился подручными средствами.

Дык, спрашивал не я, а вы.) А мне оно не надо.)

А будете работать с R, по любому придется.

 
Aleksey Vyazmikin:

Попрошу Вас подробней пояснить.

1. Во вкладке "Evaluate" какой параметр выбирать в наборе "Type"?

2. Что сделать, что б можно было заносить имя второго файла? У меня это окно хоть и активно, но выбрать файл нельзя! А "CSV File" - зачем там можно выбрать?


1. Любой. Это разная оценка модели и каждая имеет свой смысл. rattle хорош именно тем, что новичку дает систематические знания по машинному обучению: подготовка исходных данных, моделирование, оценка модели. Только овладев хотя бы на примитивном уровне всеми ТРЕМЯ частями имеет смысл двигаться далее от игры в цифирь к более осмысленным поступкам.

2. R Dataset- это файл r. Означает, что на вкладке Data исходные данные были загружены как RData File - это рабочая область в терминах R. В этой рабочей области было заготовлено два фрейма данных: один для обучения и тестирования модели, а другой как этот самый R Dataset.

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

Можно иначе.

Открыть сам R и нем загрузить файл экселя - это одна строчка. Потом разделить полученный фрейм данных на два.

Но прогон на втором файле обученной модели ОБЯЗАТЕЛЕН.

 
Maxim Dmitrievsky:

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

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

В программе "Deductor Studio" визуально всё классно видно, дерево, правила - в R пока такого не вижу, а в MT5 и подавно не будет (т.е. сделать можно всё, но сколько за это придется заплатить...). Значит выходит дело надо как то использовать библиотеку алглиб для подключения случайных лесов в MT5?

Вот нашел кусок кода алгоритма C4.5 http://datascientist.one/algorithm-c4-5/ на R, это очень сложно реализовать в MT5?

C45 <- function(data,x){
   result.tree <- NULL
   if ( IsEmpty(data) ) {
                node.value <- "Failure"
                result.tree <- CreateNode(node.value)
                return(result.tree)
        }
         if( IsEmpty(x) ){
                node.value <- GetMajorityClassValue(data,x)
                result.tree <- CreateNode(node.value)
                return(result.tree)
        }
         if( 1 == GetCount(x) ){
                node.value <- GetClassValue(x)
                result.tree <- CreateNode(node.value)
                return(result.tree)
        } <br>

       gain.ratio <- GetGainRatio(data,x)<br>
     best.split <- GetBestSplit(data,x,gain.ratio)

     data.subsets <- SplitData(data,best.split)
     values <- GetAttributeValues(data.subsets,best.split)
     values.count <- GetCount(values)

     node.value <- best.split
    result.tree <- CreateNode(node.value)
         idx <- 0
    while( idx<=values.count ){
        i       dx <- idx+1
                newdata <- GetAt(data.subsets,idx)
                value <- GetAt(values,idx)
                new.x <- RemoveAttribute(x,best.split)
                new.child <- C45(newdata,new.x)
                AddChildNode(result.tree,new.child,value)
   }

    result.tree
        }
Алгоритм C4.5
Алгоритм C4.5
  • 2016.05.06
  • datascientist.one
Алгоритм C4.5 строит классификатор в форме дерева решений. Чтобы сделать это, ему нужно передать набор уже классифицированных данных. А что такое классификатор? Классификатор – это инструмент, применяемый в data mining, который использует классифицированные данные и на их основании пытается предсказать, к какому классу стоит отнести новые...
Причина обращения: