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

 
Aleksey Vyazmikin #:

наводка: нужно ли использовать вектора в 100 000 наблюдений чтобы посмотреть корреляцию между ними?

при том что ищуться высококоррелированые вектора т.е. с корреляцией больше 0,9
 
Незачто 
 
Aleksey Vyazmikin #:

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

Зависит от жеkеза и объема выборки. ЕСли проц многоядерный, распараллельте выполнение. Внизу вариант параллельного выполнения

##----parallel--------------------------
library("doFuture")
registerDoFuture()
plan(multisession)
require(foreach)
bench::bench_time(
foreach(i = 1:length(cor.test.range))%dopar%{
    get.findCor(dt, cor.coef = cor.test.range[i])
}-> res
)
# process     real
# 140.62ms    2.95m
#
bench::bench_time(
for(i in 1:length(cor.test.range)){
    paste0("train1_" , cor.test.range[i]*10 , ".csv") %>%
        paste0(patch , .) %>% fwrite(res[[i]], .)
}
)
# process    real
# 156ms   157ms

По сравнению с последовательным в 4 раза быстрей. Железо и софт

sessionInfo()
# AMD FX-8370 Eight-Core Processor
# R version 4.1.3 (2022-03-10)
# Platform: x86_64-w64-mingw32/x64 (64-bit)
# Running under: Windows 10 x64 (build 19044)
#
# Matrix products: default
#
# locale:
#     [1] LC_COLLATE=Russian_Russia.1251  LC_CTYPE=Russian_Russia.1251    LC_MONETARY=Russian_Russia.1251
# [4] LC_NUMERIC=C                    LC_TIME=Russian_Russia.1251
#
# attached base packages:
#     [1] stats     graphics  grDevices utils     datasets  methods   base
#
# other attached packages:
#     [1] doFuture_0.12.2 future_1.28.0   foreach_1.5.2   fstcore_0.9.12  tidyft_0.4.5
#
# loaded via a namespace (and not attached):
#     [1] Rcpp_1.0.9        codetools_0.2-18  listenv_0.8.0     digest_0.6.30     parallelly_1.32.1 magrittr_2.0.3
# [7] bench_1.1.2       stringi_1.7.8     data.table_1.14.4 fst_0.9.8         iterators_1.0.14  tools_4.1.3
# [13] stringr_1.4.1     import_1.3.0.9003 parallel_4.1.3    compiler_4.1.3    globals_0.16.1

Удачи

 
Maxim Dmitrievsky #:

все там есть. На скорости скажется катастрофически. Датафреймы это самые медленные звери с большим оверхедом.

речь не про видеокарты, а про понимание что через датафреймы такое не считается в трезвом состоянии

Что подразумевается под "датафреймы" - поясните не ведающему в этом языке.

 
mytarmailS #:

наводка: нужно ли использовать вектора в 100 000 наблюдений чтобы посмотреть корреляцию между ними?

при том что ищуться высококоррелированые вектора т.е. с корреляцией больше 0,9

Вот не знаю, нужно или нет - надо экспериментировать. Выборка же не стационарная - на пол выборки не было корреляции, а потом бац и появилась.

К тому же, я перебрал все коэффициенты с шагом 0,1.

mytarmailS #:
Незачто 

Это крик души?

 
Vladimir Perervenko #:

Зависит от жеkеза и объема выборки. ЕСли проц многоядерный, распараллельте выполнение. Внизу вариант параллельного выполнения

По сравнению с последовательным в 4 раза быстрей. Железо и софт

Удачи

Так параллеленье не приведет к росту потребления ОЗУ?

Код  mytarmailS хоть и прожорлевей по ОЗУ, но раз в 50 быстрей, может есть какие то ограничения у используемых Вами библиотек - скрипт отработал более 30 часов и ниодного файла не создал.

Спасибо за какие то сложные примеры кода - в R я скорей просто потребитель, мне не сообразить что править в основном скрипте.

 
mytarmailS #:
Ты имеешь в виду что под каждый тип данных должен быть метод по расчёту корр? 

matrix это же встроенный в R тип данных, у него же есть что-то типа matrix.corr() векторная 

 
Aleksey Vyazmikin #:

Что подразумевается под "датафреймы" - поясните не ведающему в этом языке.

скорее было послание к писунам на R :) это таблицы для удобного отображения данных и некоторых типовых манипуляций с ними типа извлечения подвыборок (как в sql)

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

тут вроде нормально:

# чтобы прочитать как работает функция и примеры  ?caret::findCorrelation
# находим колонки которые не коррелированы с порогом корреляции 0,9    "cutoff = 0.9"
not_corr_colums <- caret::findCorrelation(as.matrix(df), cutoff = 0.9, exact = F,names = F)

не знаю насколько быстрый built-in type "matrix", но используется карет, которая тоже может тормозить. У встроенного типа нет векторной операции посчитать корреляцию что ли.

 
Откуда такие мысли
 
mytarmailS #:
Откуда такие мысли

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

Причина обращения: