트레이딩의 머신러닝: 이론, 모델, 실전 및 알고리즘 트레이딩 - 페이지 2808

 
Aleksey Vyazmikin #:

스크립트가 하루 이상 실행되었지만 검사 결과에 따라 아직 파일을 하나도 만들지 못했습니다. 전원을 꺼야 할 때가 된 것 같나요?

제케즈와 샘플 크기에 따라 다릅니다. 프로세서가 멀티코어인 경우 실행을 병렬화하세요. 다음은 병렬 실행의 변형입니다.

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

직렬보다 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 단계로 시도했습니다.

내메일 #:
고마워요.

이게 영혼의 외침인가요?

 
Vladimir Perervenko #:

제케즈 및 샘플 크기에 따라 다릅니다. 프로세서가 멀티코어인 경우 실행을 병렬화합니다. 다음은 병렬 실행의 변형입니다.

직렬 실행보다 4배 빠릅니다. 하드웨어 및 소프트웨어

행운을 빕니다

그렇다면 병렬 처리가 RAM 소비를 증가시키지 않나요?

mytarmailS 코드는 RAM을 더 많이 사용하지만 50 배 빠르지만 사용하는 라이브러리에 몇 가지 제한이있을 수 있습니다. 스크립트가 30 시간 이상 작동하고 단일 파일을 만들지 않았습니다.

복잡한 코드 예제를 제공해 주셔서 감사합니다. R에서는 오히려 소비자 일 뿐이며 기본 스크립트에서 무엇을 수정해야하는지 파악할 수 없습니다.

 
mytarmailS #:
각 데이터 유형마다 corr을 계산하는 메서드가 있어야 한다는 뜻인가요?

행렬은 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)

내장형 "매트릭스"가 얼마나 빠른지는 모르겠지만 캐럿을 사용하므로 속도가 느려질 수도 있습니다. 내장 유형에는 상관 관계 등을 계산하는 벡터 연산이 없습니다.

 
이러한 생각은 어디에서 오는가?
 
mytarmailS #:
이러한 생각은 어디에서 오는 것일까요?

자체 corr 계산이 있어야하는 왼쪽 로브가있는 내장 유형을 가능한 한 빨리 느리게하는 이유는 무엇입니까?

 
Maxim Dmitrievsky #:

가능한 한 빠른 자체 Korr 계산이 있어야 하는 내장 유형을 느리게 만드는 이유는 무엇인가요?

라이브러리에서 유형을 고려하지 않나요? 데이터 유형은 가장 저렴한 계산을 위한 데이터와 같습니다. 계산을 위해 동일한 매트릭스를 설계해야 합니다.

 
mytarmailS #:
과거에 더 멍청해지지 않고 미래에 더 똑똑해지려면 어떻게 해야 할까요? 알고리즘적으로... 테라바이트의 지식을 만들지 않고도 말이죠.

그럴 수 없습니다.

사유: