交易中的机器学习:理论、模型、实践和算法交易 - 页 2808

 
Aleksey Vyazmikin #:

你的脚本已经运行了一天多,但还没有根据筛选结果创建一个文件。我不知道,也许是时候关闭它了?

这取决于zhekez和样本大小。如果您的处理器是多核的,可以并行执行。下面是并行执行的一个变体

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

比串行快四倍。硬件和软件

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

取决于 zhekez 和样本大小。如果处理器是多核的,则并行执行。下面是并行执行的一种变体

它比串行执行快 4 倍。硬件和软件

好运

并行执行不会增加内存消耗?

虽然mytarmailS 代码对内存的消耗更大,但速度却快了 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 #:
这些想法从何而来

为什么要尽可能快地减慢左叶内置类型的速度?

 
Maxim Dmitrievsky #:

为什么要减慢内建类型的速度,因为它应该有自己的 Korr 计算,并尽可能快?

难道程序库不考虑类型吗?数据类型就像用于最廉价计算的数据。同样的矩阵也应该用于计算。

 
mytarmailS #:
如何在未来变得更聪明,而不在过去变得更愚蠢? 算法...而不创造TB级的知识

你不会的