L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 2808

 
Aleksey Vyazmikin #:

Il vostro script è in esecuzione da più di un giorno e non ha ancora creato un singolo file basato sui risultati dello screening. Non so, forse è il momento di spegnerlo?

Dipende dallo zhekez e dalla dimensione del campione. Se il vostro processore è multi-core, parallelizzate l'esecuzione. Di seguito è riportata una variante di esecuzione parallela

##----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

Quattro volte più veloce di quella seriale. 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

Buona fortuna

 
Maxim Dmitrievsky #:

è tutto lì. La velocità ne risentirà in modo catastrofico. I dataframe sono le bestie più lente con un grande overhead.

Non si tratta di schede video, ma di capire che queste cose non contano attraverso i dataframe in uno stato sobrio.

Cosa si intende per "dataframes" - spiegatelo agli ignoranti in questa lingua.

 
mytarmailS #:

Suggerimento: è necessario utilizzare vettori di 100.000 osservazioni per vedere la correlazione tra di essi?

Sto cercando vettori altamente correlati, cioè con una correlazione superiore a 0,9. Non so se sia necessario - dovrete sperimentare.

Non so se sia necessario o meno: dovreste sperimentare. Il campione non è stazionario: per metà del campione non c'era correlazione, e poi bang, e poi è comparsa.

Inoltre, ho provato tutti i coefficienti a passi di 0,1.

mytarmailS #:
Non c'è di che.

È questo il grido dell'anima?

 
Vladimir Perervenko #:

Dipende da zhekez e dalla dimensione del campione. Se il processore è multi-core, parallelizzare l'esecuzione. Di seguito è riportata una variante di esecuzione parallela

È 4 volte più veloce dell'esecuzione seriale. Hardware e software

Buona fortuna

Quindi il parallelismo non aumenta il consumo di RAM?

Sebbene il codice di mytarmailS sia più affamato di RAM, è 50 volte più veloce, forse ci sono alcune limitazioni delle librerie utilizzate - lo script ha lavorato per più di 30 ore e non ha creato un singolo file.

Grazie per gli esempi di codice complicato - in R sono piuttosto solo un consumatore, non riesco a capire cosa correggere nello script principale.

 
mytarmailS #:
Intendi dire che per ogni tipo di dati dovrebbe esserci un metodo per calcolare corr?

matrix è un tipo di dati integrato in R, ha qualcosa come matrix.corr() vector.

 
Aleksey Vyazmikin #:

Cosa si intende per "dataframes" - spiegate agli ignoranti di questo linguaggio.

Era piuttosto un messaggio agli scrittori di R :) si tratta di tabelle per una comoda visualizzazione dei dati e per alcune manipolazioni tipiche, come l'estrazione di sottocampioni (come in sql).

Non sono state progettate per essere eseguite in loop su dati così grandi come quelli che avete voi, e saranno più lente degli array di 20-100 volte. Per quanto riguarda la memoria, lo avete già capito da soli.

Penso che qui vada bene:

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

Non so quanto sia veloce il tipo incorporato "matrice", ma usa il caret, che può anche rallentare. Il tipo incorporato non ha un'operazione vettoriale per calcolare la correlazione o qualcosa del genere.

 
Da dove vengono questi pensieri
 
mytarmailS #:
Da dove vengono questi pensieri

perché si rallenta un tipo incorporato con il lobo sinistro, che dovrebbe avere il proprio calcolo di corr, il più velocemente possibile per esso

 
Maxim Dmitrievsky #:

Perché rallentare un tipo incorporato che dovrebbe avere il proprio calcolo di Korr il più veloce possibile?

La libreria non tiene conto del tipo? Il tipo di dati è come i dati per i calcoli più economici. La stessa matrice dovrebbe essere progettata per i calcoli.

 
mytarmailS #:
Come diventare più intelligenti in futuro senza diventare più stupidi in passato? Algoritmicamente... senza creare terabyte di conoscenza.

Non è così.

Motivazione: