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

 

https://www.mql5.com/ru/blogs/post/723619

77 из 16000 это уже слишком мало. Реперзентативностью 77 примеров вряд ли обладают.
Единственный вариант - очень глубоко учить дерево.

Нужна ли деревьям и лесам балансировка по классам?
Нужна ли деревьям и лесам балансировка по классам?
  • www.mql5.com
Я тут читаю: Флах П. - Машинное обучение. Наука и искусство построения алгоритмов, которые извлекают знания из данных - 2015 там есть несколько страниц посвященных этой теме. Вот итоговая: Отмеченный
 
elibrarius #:

https://www.mql5.com/ru/blogs/post/723619

77 из 16000 это уже слишком мало. Реперзентативностью 77 примеров вряд ли обладают.
Единственный вариант - очень глубоко учить дерево.

И как книжка? 
 
mytarmailS #:
И как книжка? 
4 года назад читал... уже конкретно про нее ничего сказать не могу. Вот одну страничку скопировал себе в блог, т.к. это было новое для меня и решил, что надо её оставить на память. )
 

Кстати, а кто-нибудь знает как расчитать корень индекса Джини (корень понятно как, а вот сам индекс Джини )? Лучше пример кода. Инересно было бы поэкспериментировать с ним.
Как я тогда пометил "индекс и коэф Джини разные вещи - не путать ".
Для коэф Джини используется ГСЧ, т.е. добавляем шум. Прикрепил к статье найденный код расчета на R и PY.
Индекс - что-то другое.

 
elibrarius #:

Кстати, а кто-нибудь знает как расчитать корень индекса Джини (корень понятно как, а вот сам индекс Джини )? Лучше пример кода. Инересно было бы поэкспериментировать с ним.
Как я тогда пометил "индекс и коэф Джини разные вещи - не путать ".
Для коэф Джини используется ГСЧ, т.е. добавляем шум. Прикрепил к статье найденный код расчета на R и PY.
Индекс - что-то другое.

Есть Gini coefficient и есть Gini Impurity. Первый используется как метрика в бинарной классификации, статья. Второй используется в решающих деревьях как аналог энтропии.

Коэффициент Джини. Из экономики в машинное обучение
Коэффициент Джини. Из экономики в машинное обучение
  • 2018.03.06
  • habr.com
Интересный факт: в 1912 году итальянский статистик и демограф Коррадо Джини написал знаменитый труд «Вариативность и изменчивость признака», и в этом же году «Титаник» затонул в водах Атлантики. Казалось бы, что общего между этими двумя событиями? Всё просто, их последствия нашли широкое применение в области машинного обучения. И если датасет...
 

Как то Вы делали скрипт, которым я решил вот снова воспользоваться

library('caret')

way <-         "D:\\FX\\MT5_CB\\MQL5\\Files\\Po_Vektoru_TP_0_SL_0\\EURUSD_0\\Setup"
df1 = read.csv("D:\\FX\\MT5_CB\\MQL5\\Files\\Po_Vektoru_TP_0_SL_0\\EURUSD_0\\Setup\\train.csv", header = TRUE, sep = ";",dec = ".")


cor.test.range <- seq(from = 0.1,to = 0.9,by = 0.1)  # диапазон перебора в коеф корр

get.findCorrelation <- function(data , not.used.colums , cor.coef){
  library('caret')
  df2 <-  cor(     data[, ! colnames(data)  %in%  not.used.colums])  
  not.need <- findCorrelation(df2, cutoff=cor.coef) 
  not.need.nms <- colnames(df2[,not.need])  # получаем имена переменных что не прошли коррел тест
  reduced_Data <- data[, ! colnames(data)  %in%  not.need.nms]
  return(reduced_Data)}


for(i in 1:length(cor.test.range)){
  
    reduced_Data <- get.findCorrelation(data = df1 , 
                                      not.used.colums = c("Target_100_Buy","Target_100_Sell","Target_P","Time","Target_100"),
                                      cor.coef = cor.test.range[i] )


  
  #reduced_Data <- get.findCorrelation(data = reduced_Data , 
  #                                    not.used.colums = c("Target_100_Buy","Target_100_Sell","Target_P","Time","Target_100"),
  #                                    cor.coef = cor.test.range[i]*-1 )  
    
  file.name <- paste0("train2_" , cor.test.range[i] , ".csv")
  final.way <- paste0(way , file.name)
  
  
  #write.csv2(x = reduced_Data,file = final.way,row.names = F)  # возможно это лучше
  
   write.table(reduced_Data, file = final.way,
               append = FALSE, quote = FALSE, sep=";",
               eol = "\n", na = "NA", dec = ".", row.names = FALSE,
               col.names = TRUE, qmethod = c("escape", "double"),
               fileEncoding = "")
}

Запустил его на выборке, а он выдает ошибку - не могу понять, где искать ошибку и как исправить - может Вы знаете, раз пользуетесь этими библиотеками/пакетами?

R version 4.0.5 (2021-03-31) -- "Shake and Throw"
Copyright (C) 2021 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

[Workspace loaded from F:/FX/R/.RData]

Loading required package: Matrix
Error: package or namespace load failed for ‘Matrix’ in getClassDef(class1):
 reached elapsed time limit
> source('F:/FX/R/Viborka_Korrelyaciya_v_02.R', echo=TRUE)

> library('caret')
Загрузка требуемого пакета: lattice
Загрузка требуемого пакета: ggplot2

> #way <- "F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\\Proboy_236_TP_4_SL_4\\Si\\Setup\\"
> #df1 = read.csv("F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\ ..." ... [TRUNCATED] 

> df1 = read.csv("D:\\FX\\MT5_CB\\MQL5\\Files\\Po_Vektoru_TP_0_SL_0_G_2_Bi_v2\\EURUSD_0\\Setup\\train.csv", header = TRUE, sep = ";",dec = ".")

> cor.test.range <- seq(from = 0.1,to = 0.9,by = 0.1)  # диапазон перебора в коеф корр

> get.findCorrelation <- function(data , not.used.colums , cor.coef){
+   library('caret')
+   df2 <-  cor(     data[, ! colnames(data)  %in%  not.use .... [TRUNCATED] 

> for(i in 1:length(cor.test.range)){
+   
+     reduced_Data <- get.findCorrelation(data = df1 , 
+                                       not.used.co .... [TRUNCATED] 
Warning messages:
1: пакет ‘caret’ был собран под R версии 4.1.0 
2: пакет ‘ggplot2’ был собран под R версии 4.1.0 
> source('F:/FX/R/Viborka_Korrelyaciya_v_02.R', echo=TRUE)

> library('caret')

> #way <- "F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\\Proboy_236_TP_4_SL_4\\Si\\Setup\\"
> #df1 = read.csv("F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\ ..." ... [TRUNCATED] 

> df1 = read.csv("D:\\FX\\MT5_CB\\MQL5\\Files\\Po_Vektoru_TP_0_SL_0\\EURUSD_0\\Setup\\train.csv", header = TRUE, sep = ";",dec = ".")

> cor.test.range <- seq(from = 0.1,to = 0.9,by = 0.1)  # диапазон перебора в коеф корр

> get.findCorrelation <- function(data , not.used.colums , cor.coef){
+   library('caret')
+   df2 <-  cor(     data[, ! colnames(data)  %in%  not.use .... [TRUNCATED] 

> for(i in 1:length(cor.test.range)){
+   
+     reduced_Data <- get.findCorrelation(data = df1 , 
+                                       not.used.co .... [TRUNCATED] 
Error in findCorrelation_fast(x = x, cutoff = cutoff, verbose = verbose) : 
  The correlation matrix has some missing values.
In addition: Warning message:
In cor(data[, !colnames(data) %in% not.used.colums]) :
  стандартное отклонение нулевое

На бинарной выборке все отработало нормально.

 
Aleksey Vyazmikin #:

Как то Вы делали скрипт, которым я решил вот снова воспользоваться

Запустил его на выборке, а он выдает ошибку - не могу понять, где искать ошибку и как исправить - может Вы знаете, раз пользуетесь этими библиотеками/пакетами?

На бинарной выборке все отработало нормально.

Да не пользуюсь я этой библитекой,  делал разово, вроде для тебя как раз... Наверное ты что то в своих новых данных не то сделал если со старыми работает
 
mytarmailS #:
Да не пользуюсь я этой библитекой,  делал разово, вроде для тебя как раз... Наверное ты что то в своих новых данных не то сделал если со старыми работает

Да, для меня. Работает с бинарными, раньше посмотрел то ж на бинарных запускалась в основном. Плохо, что не пишут в каком столбце\строке чтот не так.

 
Aleksey Vyazmikin #:

Да, для меня. Работает с бинарными, раньше посмотрел то ж на бинарных запускалась в основном. Плохо, что не пишут в каком столбце\строке чтот не так.

Перепроверь свои данные, точно ли они соответствуют тем бинарным..

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

 
mytarmailS #:
Перепроверь свои данные, точно ли они соответствуют тем бинарным..

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

Почему они должны соответствовать бинарным? Я просто сказал о том, что скрипт рабочий, но не со всеми данными работает.

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

Скрипт выкидывает коррелирующие столбцы из выборке и сохраняет новую выборку.

Исключение столбцов происходит в зависимости от порога корреляции.

Файлы: