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

 
阿列克谢-伯纳科夫
没有任何损失。然后,我们将有一连串的集群变化。在集群与集群之间的过渡点上,人们可以建立一个方形矩阵并改变交易方式:在集群n上买入,在集群m上平仓。然后是同样的卖出矩阵。所有的变体都是刚刚经历的。而且你可以改变聚类参数,在循环中查看结果。
这很有趣
 
Dr.Trader:

你可能在r和rattle中创建森林的参数不同,所以结果也不同。在 rattle 本身,你也可以改变树和变量的数量。

而你在训练数据上有34%的误差,在验证数据上有3%的误差?测试数据出了问题,要么是它以某种方式已经存在于训练数据中,要么是你有一个非常小的数据集,它只是以这种方式发生。

不,在拨浪鼓的所有阶段都有一个小误差

而R在所有阶段都有一个大的 )

参数是相同的,而对于任何参数,这样的差距都是不可能的。

 
你到底是如何在这里附加文件的? 或者它不附加或冻结...
 
mytarmailS:

还有一个问题要问R

library(kza)

DAT <- rnorm(1000)

KZP <- kzp(DAT,m=100,k=3)

summary(KZP,digits=2,top=3)


我怎样才能把它从 "摘要 "http://prntscr.com/bhtlo9,以便我可以用这些数字工作

我也有这样的问题。通常只需运行attributes(KZP)就可以得到一个可用的变量列表,然后只需通过它们,如KZP$window等,找到正确的数字。但在这里,这些数字是在函数摘要中自己生成的,没有地方保存。

这里这里有一个源代码:https://cran.r-project.org/web/packages/kza/index.html,你需要做这样的事情。

summary.kzp <- function(object, digits = getOption("digits"), top=1, ...)
{
        cat(" Call:\n ")
        dput(object$call, control=NULL)

        M=object$window
        if (is.null(object$smooth_periodogram)) {       d<-object$periodogram } else { d<-object$smooth_periodogram }
        
        mlist<-rep(0,top)
        for (i in 1:top) {
                mlist[i]<-which.max(d)
                d[which.max(d)]=NA                      
        }

   cat("\n Frequencies of interest:\n")
   print((mlist-1)/M, digits=digits, ...)

    cat("\n Periods of interest:\n")
    print(M/(mlist-1), digits=digits, ...)
    invisible(object)
}
 

谢谢Trader 博士,很高兴有人能向我请教这个棘手的问题。)

关于 rattle,我明白了问题所在,rattle 也会对数据进行 "sample() "采样,这个操作有必要吗? 通过采样,我在 R 上得到了相同的结果,但问题是新数据每次都是一根蜡烛,不可能对它们进行采样。

而且事实证明,如果对整个样本进行采样,那么所有时段的结果都会很惊人,包括样本外时段,但当你提交真实数据时,结果却一如既往。

因此,问题在于这种抽样到底有没有必要?

 

是的,你会的。有了样本--拨浪鼓将训练数据按行分成几组(行被随机分配到三个表中,比例为75%/15%/15%)。它从一个输入文件产生3个表。列不受此影响,它们在所有表中都是一样的。

训练表--模型训练将以它为基础

验证和测试表 - 用于控制培训

假设我们采取去年的数据,并希望训练模型在未来几个月内进行交易。训练本身将只在火车上进行。之后,你可以通过计算他们的误差,在第二个或第三个桌子上测试这个模型。如果模型训练正确,所有三个表的误差将大致相等,尽管它只用第一个表来训练。

这在随机森林中很容易检查。几乎任何数据集都可以在训练表上给出0%的误差。但在检查了相同的模型,但有测试表和验证表 - 你很可能在那里看到50%的错误。这意味着模型被重新训练,通过将其转移到mt5,你将逐渐失去你的存款。
但是如果你用SanSanych的例子来处理RData文件,你会发现火车表的误差为30%。值得注意的是,尽管模型在训练期间没有看到这些表的数据,但验证表和测试表的误差会保持在差不多的水平。这个模型可以很容易地转移到mt5上并进行交易。

如果我们简单地采取所有可用的数据而不进行抽样,训练模型,看到0%的误差而感到高兴,在实际交易中会非常糟糕。

 
Dr.Trader:

是的,你会的。有了样本--拨浪鼓将训练数据按行分成几组(行被随机分配到三个表中,比例为75%/15%/15%)。它从一个输入文件产生3个表。列不受此影响,它们在所有表中都是一样的。

训练表--模型训练将以它为基础

验证和测试表 - 用于控制培训

假设我们采取去年的数据,并希望训练模型在未来几个月内进行交易。训练本身将只在火车上进行。之后,你可以通过计算他们的误差,在第二个或第三个桌子上测试这个模型。如果模型训练正确,所有三个表的误差将大致相等,尽管它只用第一个表来训练。

在随机森林上检查很容易。几乎任何数据集都可能在0%的表格上出现错误。但是,当你检查相同的模型,但测试和验证表 - 你很可能会看到那里有50%的错误。这意味着模型被重新训练,通过将其转移到mt5,你将逐渐失去你的存款。
但如果你用SanSanych的例子来处理RData文件,你会发现火车表的误差为30%。值得注意的是,尽管模型在训练期间没有看到这些表的数据,但验证表和测试表的误差会保持在差不多的水平。你可以很容易地将这个模型转移到MT5上进行交易。

如果你只是采取所有可用的数据而不进行抽样,训练模型,看到0%的误差并感到高兴,在实际交易中会非常糟糕。

我明白你的意思,但讽刺的是,在三者的样本上,误差很小,但在未取样的数据上,误差却很大。

在私人信息中给我发送你的电子邮件,我会给你发送数据,你自己看,或者教我附加文件,因为我要么不附加,要么论坛在试图附加时挂在地狱中。

 

总之,我训练了我的模型(随机森林),结果并不令人满意,但并没有重新训练,就像

1)我的目标是一个膝盖为0.5%的人字形。

2) 预测器 - 水平和烛台 - 总共100个东西(不包括振荡器和其他指标)

3)模型本身没有经过任何优化,我只是放了3个师,树的数量是200个单位。

4) 顺便说一下,如果我们通过PrunePredictors(特征选择),那么所有100个预测器中只有3个被丢弃,总共剩下97个预测器。

样本分为两部分,一个是训练部分,一个是测试部分,测试部分是训练部分的第五部分。

在训练部分:模型误差33%。


在测试中:模型误差32%。


数据没有取样,因为我还不了解这头野兽。

现在我们可以考虑集群的问题

 

论坛:如何插入图片

这是唯一能让图片永远保留在论坛上的方法,所有的用户,即使在一年后,也能看到图片并了解它的内容。

唯一的办法是让所有的用户在一年后也能看到并理解一张图片在论坛上的永久存在。

 
mytarmailS:

问题不在于为什么在相同的数据和相同的模型上,R和rattle有不同的结果。

问题二:如果一个 "样本外 "的模型显示的是地狱,那么对其进行测试的意义何在?

你误解了我的帖子