Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2808

 
Aleksey Vyazmikin #:

Seu script está em execução há mais de um dia e ainda não criou um único arquivo com base nos resultados da triagem. Não sei, talvez seja hora de desligá-lo?

Depende do zhekez e do tamanho da amostra. Se o seu processador tiver vários núcleos, paralelize a execução. Abaixo está uma variante da execução paralela

##----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.62 ms    2.95 m
#
 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
# 156 ms   157 ms

Quatro vezes mais rápida que a serial. Hardware e software

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

Boa sorte

 
Maxim Dmitrievsky #:

está tudo lá. A velocidade será afetada de forma catastrófica. Os dataframes são os animais mais lentos com grande sobrecarga.

Não se trata de placas de vídeo, mas de entender que essas coisas não contam com dataframes em um estado sóbrio.

O que se entende por "dataframes" - explique aos ignorantes nessa linguagem.

 
mytarmailS #:

Dica: é necessário usar vetores de 100.000 observações para ver a correlação entre eles?

Estou procurando vetores altamente correlacionados, ou seja, com correlação maior que 0,9.

Não sei se isso é necessário ou não - você deve experimentar. A amostra não é estacionária - em metade da amostra não havia correlação e, em seguida, houve um "bang", e então ela apareceu.

Além disso, experimentei todos os coeficientes em etapas de 0,1.

mytarmailS #:
De nada.

Esse é o grito da alma?

 
Vladimir Perervenko #:

Depende do zhekez e do tamanho da amostra. Se o processador tiver vários núcleos, paralelize a execução. Abaixo está uma variante da execução paralela

Ela é 4 vezes mais rápida do que a execução em série. Hardware e software

Boa sorte

Então o paralelismo não aumentará o consumo de RAM?

Embora o código mytarmailS consuma mais RAM, ele é 50 vezes mais rápido, talvez haja algumas limitações nas bibliotecas que você usa - o script funcionou por mais de 30 horas e não criou um único arquivo.

Obrigado por alguns exemplos de código complicados - no R, sou apenas um consumidor, não consigo descobrir o que corrigir no script principal.

 
mytarmailS #:
Você quer dizer que, para cada tipo de dados, deve haver um método para calcular a corr?

A matriz é um tipo de dados incorporado ao R, que tem algo como o vetor matrix.corr().

 
Aleksey Vyazmikin #:

O que significa "dataframes" - explique aos ignorantes dessa linguagem.

Foi mais uma mensagem para os escritores do R :) essas são tabelas para exibição conveniente de dados e algumas manipulações típicas com eles, como extração de subamostras (como no sql).

Elas não foram projetadas para serem executadas em loops com dados tão grandes como os que você tem, pois serão 20 a 100 vezes mais lentas do que as matrizes. Por memória, você já entendeu por si mesmo.

Acho que está tudo bem aqui:

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

Não sei qual é a velocidade do tipo incorporado "matrix", mas ele usa caret, o que também pode ser mais lento. O tipo incorporado não tem operação vetorial para calcular a correlação ou algo do gênero.

 
De onde vêm esses pensamentos?
 
mytarmailS #:
De onde vêm esses pensamentos?

por que você desacelera um tipo embutido com o lobo esquerdo, que deve ter seu próprio cálculo de corr, o mais rápido possível para ele

 
Maxim Dmitrievsky #:

Por que você reduz a velocidade de um tipo incorporado que deveria ter seu próprio cálculo de Korr, que é o mais rápido possível para ele?

A biblioteca não leva em conta o tipo? O tipo de dados é como dados para os cálculos mais baratos. A mesma matriz deve ser projetada para cálculos.

 
mytarmailS #:
Como ficar mais inteligente no futuro sem ficar mais estúpido no passado? Algoritmicamente... sem criar terabytes de conhecimento.

Não é possível.