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

 
mytarmailS #:

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

 
Aleksey Vyazmikin #:

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


which(original_colum_names %in% colnames(data)[-bad_colums])

which(original_colum_names %in% colnames(data)[ bad_colums])-1
 

А в коде по отбору признаков надо

best_colums_idx <- which(original_colum_names %in% ex$support.vars)

best_colums_idx <- which(!original_colum_names %in% ex$support.vars)-1
 

Вопрос знатокам.

Для начала вводная информация. Это комплексная плоскость, по ней определяется частота (угол) и затухание (амплитуда) экспоненциального "сигнала". Единичная окружность отделяет затухающие и возрастающие сигналы (кстати, в эконометрике стараются подобрать к-ты AR модели так, чтобы ее корни лежали на этой окружности, типа синусоиду должна генерить). Красные и синие точки это корни 2 разных моделей за несколько разных прогонов. Если сигнал есть, то синие точки должны быть снаружи окружности и им должны соответствовать красные точки внутри окружности.

Это экспонента с разным уровнем шума (искусственный ряд).

              Низкий шум                 В 10 раз меньше сигнала         В 2 раза меньше сигнала               Равен сигналу


А это приращения часовиков. Распределение приближено к нормальному.

Внимание вопрос. Как видно, на часовиках нет явного сигнала, но присутствует кластеризация шума. Что это может быть?


ПС А чего добился ты в борьбе с рандомом?

 
Rorschach #:

Внимание вопрос. Как видно, на часовиках нет явного сигнала, но присутствует кластеризация шума. Что это может 

Я не знаток но по моему ответ очевиден.  Звучит он как то так - "визуализация" 

[Удален]  
Rorschach #:

Внимание вопрос. Как видно, на часовиках нет явного сигнала, но присутствует кластеризация шума. Что это может быть?

кластеризация волатильности мб

 
mytarmailS #:


Напишите полностью кусок последнего кода, пожалуйста. Я в R не разбираюсь и куда вставлять обрывки кода не совсем понимаю

Сделал так

# Загрузка данных из CSV
data <- read.csv("E:\\FX\\MT5_CB\\MQL5\\Files\\00_Standart_50\\Setup\\train.csv", sep = ";")
data <- data[, !(names(data) %in% c("Time", "Target_P", "Target_100", "Target_100_Buy", "Target_100_Sell"))]


bad_colums <- caret::findLinearCombos(data[1:500,])$remove

ncol(data)         # количество всех колонок 2408
length(bad_colums) # кличество линейно зависимых 1908


clear_data <- cbind.data.frame(
  target, 
  data[,-bad_colums]
)


which(original_colum_names %in% colnames(data)[-bad_colums])
which(original_colum_names %in% colnames(data)[ bad_colums])-1

remaining_columns_indices <- which(original_colum_names %in% colnames(data)[,-bad_colums])
remaining_columns_indices_minus1 <- which(original_colum_names %in% colnames(data)[bad_colums]) - 1

write.csv(remaining_columns_indices_minus1, "E:\\FX\\MT5_CB\\MQL5\\Files\\00_Standart_50\\Setup\\Оставшиеся_предикторы_00.csv", row.names = FALSE)

Получил ошибку

> remaining_columns_indices <- which(original_colum_names %in% colnames(data)[,-bad_colums])
Error in colnames(data)[, -bad_colums] : incorrect number of dimensions
 
Rorschach #:

Внимание вопрос. Как видно, на часовиках нет явного сигнала, но присутствует кластеризация шума. Что это может быть?

Без понимания контекста, когда вижу подобные фразы, сразу начинаю думать о зависимости от времени суток. Чем ниже (начиная с H1) таймфрейм, тем слабее прослеживается на приращениях.

 
Aleksey Vyazmikin #:

Напишите полностью кусок последнего кода, пожалуйста. Я в R не разбираюсь и куда вставлять обрывки кода не совсем понимаю

Сделал так

Получил ошибку

Я эту фразу слишу от тебя уже лет 5, может уже пора?


код по отсеву линейных признаков

data <- data.table::fread("D:\\train.csv", sep = ";") |> as.data.frame()
original_colum_names <- colnames(data)
target <- data$Target_100
data <- data[, !(names(data) %in% c("Time", "Target_P", "Target_100", "Target_100_Buy", "Target_100_Sell"))]
bad_colums <- caret::findLinearCombos(data[1:500,])$remove
good_colums_idx <- which(original_colum_names %in% colnames(data)[bad_colums])-1
write.csv(good_colums_idx, "E:\\...\\индексы_колонок.csv", row.names = FALSE)



код по отбору

data <- data.table::fread("D:\\train.csv", sep = ";") |> as.data.frame()
original_colum_names <- colnames(data)
target <- data$Target_100
data <- data[, !(names(data) %in% c("Time", "Target_P", "Target_100", "Target_100_Buy", "Target_100_Sell"))]
data <- scale(data)
# table(target) # баланс целевой
#################################################
### без балансировки классов в большую сторону ##
#################################################
library(abess)
model <- abess(y = target, x = data, tune.path = "gsection", early.stop = TRUE) 
ex <- extract(model)
ex$support.vars
#  сохранение имен колонок 
# write.csv(ex$support.vars, "E:\\FX\\MT5_CB\\MQL5\\Files\\00_Standart_50\\Setup\\Pred.csv", row.names = FALSE)
best_colums_idx <- which(!original_colum_names %in% ex$support.vars)-1
# Сохранение индексов в CSV файл
#write.csv(best_colums_idx, "E:\\FX\\MT5_CB\\MQL5\\Files\\00_Standart_50\\Setup\\Оставшиеся_предикторы.csv", row.names = FALSE)
################################################
### с балансировкой классов в большую сторону ##
################################################
x <- caret::upSample(x = data, y = as.factor(target), list = TRUE)
x$y <- as.numeric(as.character(x$y))
# table(x$y) # баланс целевой
model <- abess(y = x$y, x = x$x, tune.path = "gsection", early.stop = TRUE) 
ex <- extract(model)
ex$support.vars
#  сохранение имен колонок 
# write.csv(ex$support.vars, "E:\\FX\\MT5_CB\\MQL5\\Files\\00_Standart_50\\Setup\\Pred.csv", row.names = FALSE)
best_colums_idx <- which(!original_colum_names %in% ex$support.vars)-1
# Сохранение индексов в CSV файл
#write.csv(best_colums_idx, "E:\\FX\\MT5_CB\\MQL5\\Files\\00_Standart_50\\Setup\\Оставшиеся_предикторы.csv", row.names = FALSE)
 
mytarmailS #:
Я эту фразу слишу от тебя уже лет 5, может уже пора?

Ну, пока синтаксис питона понятней оказался, да и комьюнити больше, а значит легче найти ответы на свои вопросы. А теперь и ChatGPT позволяет не сложные вещи подсказывать адекватно.

Если бы здешние участники помогали с пониманием кода на R, то может и был бы толк в затеи изучения на уровни осознанного копирования.

mytarmailS #:
код по отсеву линейных признаков

Спасибо, что написали в завершённом виде.

Удалось запустить без ошибок - поставил на обучение модели.