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

 
elibrarius
如果你开始了一个月的事情--为你的电脑使用不间断电源,我曾经有2个星期的计算,灯都灭了))
而GPU版本的期望值并不高,在我看来,重写代码的时间更长,如果作者没有做,其他人不太可能将这项任务完成到最后。

好了,作者已经比照了一切,现在我只需要运行它。总之,我最大限度地运行了3天,得到了一个有9个输入的模型,说实话,这是我现在的一个记录。我真的不想优化它这么久。但正如他们所说。市场需要它。因此,寻找能力,如果有人有机会在优化器上优化数据集,甚至在20-30个核心上,我将非常感激。
 

Mihail Marchukajtes:

学习天数、周数。

显然,你的算法不是最优的,在这样小的数据集上,你可以安全地使用Knn这样的粗暴算法,这是准最优的,如果算法比Knn慢,那可能是一个糟糕的ML算法或配置不佳。在这样一个数据集上,整个训练周期和整个数据集的运行不应超过一秒钟。
 
pantural
显然你的算法不是最优的,在这样的小数据集上,你可以使用Knn这样的bruteforcing算法,它是准最优的,如果算法比Knn慢,可能是一个不好的ML算法或者配置不好。在这样的数据集上,整个训练周期和整个数据集的运行不应超过一秒钟。

我在上面解释过。100个分片,每个分片训练1000个epochs,等等。优化器的本质是计算数据集,以便对其适用性没有疑问。也就是说,他把这个文件上上下下形象地旋转,而你一直把它比作一个神经元的单一训练。IMHO。它本质上是一个人工智能系统,其中各种优化和预处理与神经元训练一起发生,并且训练本身运行数百次。如果有什么....
 
Mihail Marchukajtes:

我在上面解释过。100个分片,每个分片训练1000个epochs,等等。你只是固定在一个神经元的单一训练上,而优化器的意义在于计算数据集,这样就不会有关于其拟合度的问题。也就是说,他把这个文件上上下下具象地旋转,而你一直把它比作单个神经元的单一训练。IMHO。它本质上是一个人工智能系统,其中各种优化和预处理与神经元训练一起发生,并且训练本身运行数百次。如果有什么....
我一般反对所有这些训练,但你的机器正是一个傻瓜发明的,甚至我都能理解它。
 
elibrarius
MLP有95%的时间是在猜测......我不认为你在做正确的自行车)没有冒犯的意思。

你有一个错误。
表中最开始的一列是行号,这一列不能用于预测,但由于某种原因,只有jPrediction需要。

目标的分布是这样的:前一半的线条是0级,后一半的线条是1级。因此,神经元只是记住,如果行数小于228,它就是0类,否则就是1类。

 
交易员博士

你有一个错误。
表中最开始的一列是行号,你不能在预测中使用这一列,但由于某些原因,它只对jPrediction是强制性的。

目标的分布是这样的:前一半的线条是0级,后一半的线条是1级。因此,神经元只是记住,如果行号小于228,就是0类,否则就是1类。

哦,顺便说一句,是的。没有注意到这只是一个数字。

没有它 要保持的输入:4,50,53,59,61,64,92,98,101,104。

训练的平均误差(60.0%)=0.269(26.9%) nLearns=2 NGrad=7376 NHess=0 NCholesky=0 codResp=2
验证的平均误差(20.0%)情节=0.864(86.4%) nLearns=2 NGrad=7376 NHess=0 NCholesky=0 codResp=2
测试的平均误差(20.0%)情节=0.885(88.5%)nLearns=2 NGrad=7376 NHess=0 NCholesky=0 codResp=2

显然是训练过度。因此,我需要以不同的方式对输入进行筛选。

也许按投入的重量进行筛选?就像你在这个主题的第一个帖子中对问题所做的那样...

我正试图重写你所附的R脚本,以便它能确定列的名称和数量...但我不知道足够的R。

 
elibrarius

我正在尝试重写你所附的R脚本,以便它能确定列的名称和数量...但我不知道足够的R。


当时我还在开始学习R,这个脚本几乎完全是在rattle(R中数据挖掘的可视化环境)中生成的,这就是为什么它如此复杂,并为各种场合定制。


这...

crs$input <- c("input_1", "input_2", "input_3", "input_4",
     "input_5", "input_6", "input_7", "input_8",
     "input_9", "input_10", "input_11", "input_12",
     "input_13", "input_14", "input_15", "input_16",
     "input_17", "input_18", "input_19", "input_20")

crs$numeric <- c("input_1", "input_2", "input_3", "input_4",
     "input_5", "input_6", "input_7", "input_8",
     "input_9", "input_10", "input_11", "input_12",
     "input_13", "input_14", "input_15", "input_16",
     "input_17", "input_18", "input_19", "input_20")

应改为...

crs$input <- colnames(crs$dataset)[-ncol(crs$dataset)]

crs$numeric <- crs$input

而且应该是可以的。


总的来说,这是一个糟糕的方法,你不应该以这种方式定义输入的重要性。由于某些原因,那次很有效,但它再也没有帮助我。

 

最好将预测因素的重要性定义如下

library(vtreat)

sourceTable <- read.table("BuySell.csv", sep=";", header = TRUE, stringsAsFactors = FALSE)

#Эта  строка кода относится только к конкретно этому файлу.
 этом csv первая колонка и первая строка специально заполнены для конкретной модели, и тут не нужны. Удалить.
#для  обычных csv файлов такую команду выполнять не нужно.
sourceTable <- sourceTable[-1,-1]

#число колонок
sourceTable_ncol <- ncol(sourceTable)

#Оценка  для классификации, только для двух классов.
#Outcometarget  должен быть равен значению одного из классов.
#На  выбор или эта функция designTreatmentsC, или designTreatmentsN, или designTreatmentsZ (ниже, закоменчены)
#Взаимная  корреляция предкиторов учитывается только в designTreatmentsC, и у повторяющихся или похожих предикторов оценка будет понижаться
set.seed(0)
treats <- designTreatmentsC(dframe = sourceTable,
                            varlist = colnames(sourceTable)[-sourceTable_ncol],
                            outcomename = colnames(sourceTable)[sourceTable_ncol],
                            outcometarget = 1,
                            verbose = FALSE
)

# #оценка  для регрессии или если больше двух классов
#  sourceTable[,sourceTable_ncol] <- as.numeric(sourceTable[,sourceTable_ncol])
#  set.seed(0)
#  treats <- designTreatmentsN(dframe = sourceTable,
#                              varlist = colnames(sourceTable)[-sourceTable_ncol],
#                              outcomename = colnames(sourceTable)[sourceTable_ncol],
#                              verbose = FALSE
# )

# #Оценка  предикторов без учёта цели.
#  set.seed(0)
#  treats <- designTreatmentsZ(dframe = sourceTable,
#                              varlist = colnames(sourceTable)[-sourceTable_ncol],
#                              verbose = FALSE
# )
# 




#табличка  только с названием колонки и её оценкой важности
resultTable <- treats$scoreFrame[,c("varName", "sig")]

#сортировка
 resultTable <- resultTable[order(resultTable$sig),]

#согласно  общему правилу, оценка предиктора (sig) должна быть меньше 1/<общее число предикторов>
#чем  оценка меньше, тем лучше
resultTable$testPassed <- resultTable$sig < 1/(sourceTable_ncol-1)

#для  создания модели и прогноза лучше использовать только те предкторы у которых testPassed == TRUE
resultTable
 

重要性评估的结果如下。表中的预测指标越高越好。只有VVolum6、 VDel1、 VVolum9、 VQST10 通过测试。

在rattle中,我们可以在这4个预测因子上一次建立6个模型,SVM在验证和测试数据上显示出约55%的准确率。不错。

             varName sig testPassed 182 VVolum6_catB 3.220305e-06 TRUE 28 VDel1_catB 1.930275e-03 TRUE 186 VVolum9_catB 5.946373e-03 TRUE 143 VQST10_catB 8。458616e-03 TRUE 126 VQST_catB 1.843740e-02 FALSE 23 Del11_catP 2.315340e-02 FALSE 147 Volum_catP 2.331145e-02 FALSE 24 Del11_catB 2。429723e-02 FALSE 154 Volum3_catB 2.985041e-02 FALSE 12 Del5_catP 3.689965e-02 FALSE 120 QST9_catB 4.092966e-02 FALSE 130 VQST2_catB 4。136235e-02 FALSE 163 Volum9_catP 4.299684e-02 FALSE 109 QST2_catB 4.311742e-02 FALSE 32 VDel3_catB 4.704981e-02 FALSE 11 Del5_lev_x.14.725332e-02 FALSE 19 Del9_catB 5.316355e-02 FALSE 13 Del5_catB 5.472078e-02 FALSE 178 VVolum4_catB 5。705614e-02 FALSE 191 VVolum11_catB 5.749245e-02 FALSE 148 Volum_catB 6.281945e-02 FALSE 181 VVolum6_catP 6.534487e-02 FALSE 31 VDel3_catP 6。911261e-02 FALSE 74 VST11_catB 7.709038e-02 FALSE 134 VQST4_catB 9.536026e-02 FALSE 141 VQST9_catB 9.536026e-02 FALSE 162 Volum7_catB 9.589108e-02 FALSE 107 QST1_catB 9.589108e-02 FALSE 2 Del_catB 1.049703e-01 FALSE 151 Volum2_catP 1.071203e-01 FALSE 60 ST11_catB 1。076877e-01 FALSE 43 VDel10_catP 1.201338e-01 FALSE 184 VVolum7_catB 1.286891e-01 FALSE 121 QST10_catP 1.464880e-01 FALSE 38 VDel6_catB 1。479268e-01 FALSE 173 VVolum2_catP 1.663695e-01 FALSE 8 Del3_catB 1.703652e-01 FALSE 10 Del4_catB 1.755150e-01 FALSE 30 VDel2_catB 1。781568e-01 FALSE 37 VDel6_catP 1.797087e-01 FALSE 1 Del_catP 1.995316e-01 FALSE 112 QST4_catP 2.104902e-01 FALSE 15 Del6_catB 2。132517e-01 FALSE 27 VDel1_catP 2.313270e-01 FALSE 41 VDel9_catP 2.316597e-01 FALSE 100 VAD11_catP 2.320692e-01 FALSE 144 VQST11_lev_x.1002.374690e-01 FALSE 123 QST11_catP 2.576971e-01 FALSE 145 VQST11_catP 2.626389e-01 FALSE 104 QST_catP 2.716664e-01 FALSE 160 Volum6_catB 2。776463e-01 FALSE 115 QST6_catP 3.034207e-01 FALSE 137 VQST6_catB 3.060767e-01 FALSE 102 QST_lev_x.100 3.061104e-01 FALSE 36 VDel5_catB 3.149911e-01 FALSE 99 VAD11_lev_x.03.340276e-01 FALSE 17 Del7_catB 3.431346e-01 FALSE 16 Del7_catP 3.819094e-01 FALSE 3 Del1_catP 3.912432e-01 FALSE 152 Volum2_catB 3.938369e-01 FALSE 44 VDel10_catB 3.965567e-01 FALSE 5 Del2_catP 4。363645e-01 FALSE 20 Del10_catP 4.409282e-01 FALSE 171 VVolum1_catP 4.550495e-01 FALSE 169 VVolum_catP 4.682515e-01 FALSE 46 VDel11_catP 4.693330e-01 FALSE 86 AD11_catP 4.742976e-01 FALSE 187 VVolum10_catP 4。963890e-01 FALSE 132 VQST3_catP 5.291401e-01 FALSE 14 Del6_catP 5.310502e-01 FALSE 124 QST11_catP 5.355186e-01 FALSE 177 VVolum4_catP 5.542335e-01 FALSE 150 Volum1_catP 5.552986e-01 FALSE 39 VDel7_catP 5。589613e-01 FALSE 185 VVolum9_catP 5.589901e-01 FALSE 59 ST11_catP 5.669251e-01 FALSE 188 VVolum10_catB 5.680089e-01 FALSE 21 Del10_catB 5.706515e-01 FALSE 9 Del4_catP 5.708557e-01 FALSE 142 VQST10_catP 5。725309e-01 FALSE 113 QST4_catB 5.856434e-01 FALSE 119 QST9_catP 5.922916e-01 FALSE 131 VQST3_catP 6.033950e-01 FALSE 168 Volum11_catB 6.156530e-01 FALSE 155 Volum4_catP 6.196455e-01 FALSE 170 VVolum_catB 6.244269e-01 FALSE 180 VVolum5_catB 6.279081e-01 FALSE 87 AD11_catB 6.372863e-01 FALSE 153 Volum3_catP 6.641713e-01 FALSE 73 VST11_catP 6.701117e-01 FALSE 172 VVolum1_catB 6.707140e-01 FALSE 183 VVolum7_catP 6.771533e-01 FALSE 55 ST6_catB 6.780044e-01 FALSE 42 VDel9_catB 6.925700e-01 FALSE 167 Volum11_catP 6.973599e-01 FALSE 179 VVolum5_catP 7.093678e-01 FALSE 125 VQST_catP 7.189573e-01 FALSE 146 VQST11_catB 7.195859e-01 FALSE 101 VAD11_catB 7.250369e-01 FALSE 25 VDel_catP 7.310211e-01 FALSE 108 QST2_catP 7.426980e-01 FALSE 29 VDel2_catP 7.486648e-01 FALSE 136 VQST6_catP 7.529104e-01 FALSE 103 QST_lev_x.07.600202e-01 FALSE 22 Del11_lev_x.07.600202e-01 FALSE 47 VDel11_catB 7.619000e-01 FALSE 140 VQST9_catP 7.684919e-01 FALSE 164 Volum9_catB 7.743767e-01 FALSE 4 Del1_catB 7.796789e-01 FALSE 158 Volum5_catB 7.804397e-01 FALSE 117 QST7_catP 7.843659e-01 FALSE 26 VDel_catB 7.904299e-01 FALSE 166 Volum10_catB 7.936121e-01 FALSE 165 Volum10_catP 8.017445e-01 FALSE 6 Del2_catB 8.104867e-01 FALSE 190 VVolum11_catP 8.133908e-01 FALSE 45 VDel11_lev_x8.231377e-01 FALSE 189 VVolum11_lev_x.08.231377e-01 FALSE 105 QST_catB 8.431046e-01 FALSE 174 VVolum2_catB 8.506238e-01 FALSE 81 AD6_catP 8.552222e-01 FALSE 94 VAD6_catP 8。552222e-01 FALSE 110 QST3_catP 8.560370e-01 FALSE 35 VDel5_catP 8.633955e-01 FALSE 122 QST10_catB 8.651814e-01 FALSE 18 Del9_catP 8.816989e-01 FALSE 34 VDel4_catB 8。909886e-01 FALSE 176 VVolum3_catB 8.911481e-01 FALSE 159 Volum6_catP 9.086195e-01 FALSE 106 QST1_catP 9.218420e-01 FALSE 133 VQST4_catP 9。218420e-01 FALSE 70 VST9_catP 9.223350e-01 FALSE 129 VQST2_catP 9.276503e-01 FALSE 54 ST6_catP 9.371128e-01 FALSE 161 Volum7_catP 9.634046e-01 FALSE 138 VQST7_catP 9。991105e-01 FALSE 116 QST6_catB 9.992413e-01 FALSE 7 Del3_catP 9.993376e-01 FALSE 33 VDel4_catP 9.994999e-01 FALSE 40 VDel7_catB 9。995014e-01 FALSE 157 Volum5_catP 9.995728e-01 FALSE 156 Volum4_catB 9.995799e-01 FALSE 118 QST7_catB 9.995921e-01 FALSE 139 VQST7_catB 9.995937e-01 FALSE 175 VVolum3_catP 9.996133e-01 FALSE 149 Volum1_catP 9.996479e-01 FALSE 48 ST_catB 1.000000e+00 FALSE 49 ST1_catB 1.000000e+00 FALSE 50 ST2_catB 1.000000e+00 FALSE 51 ST3_catB 1.000000e+00 FALSE 52 ST4_catB 1.000000e+00 FALSE 53 ST5_catB 1.000000e+00 FALSE 56 ST7_catB 1.000000e+00 FALSE 57 ST9_catB 1.000000e+00 FALSE 58 ST10_catB 1.000000e+00 FALSE 61 VST_catB 1.000000e+00 FALSE 62 VST1_catB 1.000000e+00 FALSE 63 VST2_catB 1.000000e+00 FALSE 64 VST3_catB 1.000000e+00 FALSE 65 VST4_catB 1.000000e+00 FALSE 66 VST5_catB 1.000000e+00 FALSE 67 VST6_catP 1.000000e+00 FALSE 68 VST6_catB 1.000000e+00 FALSE 69 VST7_catB 1.000000e+00 FALSE 71 VST9_catB 1.000000e+00 FALSE 72 VST10_catB 1.000000e+00 FALSE 75 AD_catB 1.000000e+00 FALSE 76 AD1_catB 1.000000e+00 FALSE 77 AD2_catB 1.000000e+00 FALSE 78 AD3_catB 1.000000e+00 FALSE 79 AD4_catB 1.000000e+00 FALSE 80 AD5_catB 1.000000e+00 FALSE 82 AD6_catB 1.000000e+00 FALSE 83 AD7_catB 1.000000e+00 FALSE 84 AD9_catB 1.000000e+00 FALSE 85 AD10_catB 1.000000e+00 FALSE 88 VAD_catB 1.000000e+00 FALSE 89 VAD1_catB 1.000000e+00 FALSE 90 VAD2_catB 1.000000e+00 FALSE 91 VAD3_catB 1.000000e+00 FALSE 92 VAD4_catB 1.000000e+00 FALSE 93 VAD5_catB 1.000000e+00 FALSE 95 VAD6_catB 1.000000e+00 FALSE 96 VAD7_catB 1.000000e+00 FALSE 97 VAD9_catB 1.000000e+00 FALSE 98 VAD10_catB 1.000000e+00 FALSE 111 QST3_catB 1.000000e+00 FALSE 114 QST5_catB 1.000000e+00 FALSE 127 VQST1_catP 1.000000e+00 FALSE 128 VQST1_catB 1.000000e+00 FALSE 135 VQST5_catB 1.000000e+00 FALSE
[删除]  
elibrarius
MLP95%的时间都是正确的......。我不认为你的自行车是正确的)没有冒犯的意思。
我也做自己的自行车,但基于几十年来成熟的MLP(据说已经过时了,需要更酷的东西来工作)。


也可以试试alglib决策树,它们的计数速度和性能都比mlp好。Diplerning也更快,但不是在alglib中。

最主要的是速度/质量比,等待一个星期甚至一天甚至一个小时有什么意义呢,所以你永远不会找到最佳组合)模型需要几秒钟来学习,然后你可以用遗传学来进行参数或预测器的自动模拟,那么它就是纯人工智能,否则就是垃圾)