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

 
我还想知道foreca包是如何定义输入/输出关系的。也许这是小事,也许不是。
 
Alexey Burnakov:
我也想知道foreca软件包如何确定输入-输出关系。这可能是小事,也可能不是。

我只是翻看了一下行文,让我得到纠正或证实,但根据我的理解,基于一些内部算法的软件包评估了特定随机变量的预测能力,也就是将其随机变量的值推算到未来的能力。如果是趋势图,我们得到一个,如果是价格增量,我们得到0.83%,对我来说这很明显。而这一切都与方法本身有关,实际上情况恰恰相反,增量的预测效果要好得多--它们比非平稳时间序列 的趋势更接近平稳性。我们需要了解工具本身,并将工具应用于工具所适用的对象。

一般来说,系统分析中存在着错误。

错误#1。

将正确的方法应用于错误的问题。

这在统计学中极为常见。

 
桑桑尼茨-弗门科

总的来说,我认为原来的观点已经丢失了。对我来说,最初的想法是,我们需要独立于模型的方法来确定用于预测目标变量的每个预测因子的能力。

独立于模型的选择的一个例子是vtreat软件包。它以某种方式分析数据,然后根据目标值进行评分。

data(iris)
iris[,5] <- as.numeric(iris[,5]) #пакет  не умет факторы, их нужно сконвертировать в числа
iris_rand <- runif(nrow(iris)*10, min(iris[,1:4]), max(iris[,1:4])) #новых 10 предикторов со случайными значениями
dim(iris_rand) <- c(nrow(iris), 10)
colnames(iris_rand) <- paste0("rand_", c(1:10))
iris <- cbind(iris_rand, iris)
library(vtreat)
treatments <- designTreatmentsN(dframe = iris, varlist = colnames(iris)[1:(ncol(iris)-1)], outcomename = colnames(iris)[ncol(iris)], verbose = TRUE)
treatments
format(treatments)
significance <- treatments$scoreFrame[,"sig"]
names(significance) <- treatments$scoreFrame[,"origName"]
barplot(significance)

为虹膜表创建10个具有随机值的新预测器。designTreatmentsN将对每个预测因素进行评分,分数越低越好。在这个例子中,原始的4个预测因子(图中最后一个)明显突出,得分几乎为零,这非常好。在选择预测因子时,首先要删除的是数值最高的那个。
如果只有2个目标值(0/1,TRUE/FALSE,-1/1,有2个水平的因子,等等),有designTreatmentsC函数用于这种情况。


这个包也被用于y-aware pca。vtreat包将预测因子缩放为y-aware区间,组件几乎以通常的方式进一步创建(只是没有重新缩放和定心)。所以,如果你愿意,你可以用这个软件包做一些有趣的事情,比如说Y-aware randomforest。
在此阅读更多信息:https://cran.r-project.org/web/packages/vtreat/vignettes/vtreatScaleMode.html

 
Dr.Trader:

独立于模型的选择的一个例子是vtreat软件包。它以某种方式分析数据,然后给它一个目标值的分数。

为虹膜表创建10个具有随机值的新预测器。designTreatmentsN将对每个预测因子进行评分,分数越低越好。在这个例子中,原始的4个预测因子(图中最后一个)明显突出,得分几乎为零,这非常好。在选择预测因子时,首先要删除的是数值最高的那个。
如果只有2个目标值(0/1,TRUE/FALSE,-1/1,有2个水平的因子,等等),有designTreatmentsC函数用于这种情况。


这个包也被用于y-aware pca。vtreat包将预测因子缩放为y-aware区间,组件几乎以通常的方式进一步创建(只是没有重新缩放和中心化)。所以,如果你愿意,你可以用这个软件包做一些有趣的事情,比如说Y-aware randomforest。
在此阅读更多信息:https://cran.r-project.org/web/packages/vtreat/vignettes/vtreatScaleMode.html

好了,我们走吧,回到基本面。

下一步。

使用任何模型,只有在被这些软件包为其处理之后。希望在以这种方式进行预处理时,模型将不会遭受过度训练。

 
桑桑尼茨-弗门科

将正确的方法应用于错误的问题。

我无法掌握CaretFA的时间序列,描述中有很多的公式。我确实抓到了一些关于新值与旧值的相关性,以及分析傅里叶变换后的频率图,分析这个图在新数据上的变化。你需要在那里了解更多关于辐射物理学的知识,而不是外汇:)

在包的描述中,有一些例子,它被应用于DAX、SMI、CAC、FTSE等指数,正好使用D1的增量,即包和任务都是正确的。
一个小的细微差别是,在这个例子中,价格的时间序列首先用对数函数log()进行处理,然后才找到deltas。diff(log(EuStockMarkets[c(100:200),] )* 100
但我没有注意到使用或不使用log()有什么不同,估计的结果没有改变,这样做只是为了更方便地在图表上显示数据。

 
Dr.Trader:

我无法掌握CaretFA的时间序列,描述中有很多的公式。我确实抓到了一些关于新值与旧值的相关性,以及分析傅里叶变换后的频率图,分析这个图在新数据上的变化。你需要在那里了解更多关于辐射物理学的知识,而不是外汇:)

在包的描述中,有一些例子,它被应用于DAX、SMI、CAC、FTSE指数,它使用的是D1的增量,也就是说,包和目标都是正确的。
一个小的细微差别是,在这个例子中,价格的时间序列首先用对数函数log()进行处理,然后才找到deltas。diff(log(EuStockMarkets[c(100:200),] )* 100
但我没有注意到使用或不使用log()有什么不同,估计的结果没有改变;这样做是为了方便在图表上显示数据。

就这套方案而言,对我来说,问题是一个原则问题。

  • 它是否给出了单个预测器的预测能力。
  • 或使用预测器对目标变量的预测能力?

 
SanSanych Fomenko:

关于这个方案,对我来说,问题是一个原则问题。

  • 它是否给出了单个预测器的预测能力。
  • 或使用预测器对目标变量的预测能力?

它并不寻找目标变量和预测因素之间的联系。该软件包的作者写了两个应用--。

1)用Omega()评估一个时间序列,看它是否有预测性(在0%="白噪声 "到100%=正弦波的范围内)。如果结果是0%,那么就不可能尝试预测时间序列的行为,无论使用什么预测器。
2)取一些预测器,用相同的函数评估它们,创建类似于pca的新预测器,这样新预测器的Omega()结果甚至比原始预测器更好。这是否有助于更好地预测目标值,取决于你的运气,该软件包对这些预测器需要预测的内容不感兴趣。关键是如果预测器不是噪音--使用它的模型会预测得更稳定。

 
Dr.Trader:

它并不寻找目标变量和预测因素之间的联系。该软件包的作者写了两个应用--

1)用Omega()评估时间序列是否可以预测(从0%="白噪声 "到100%=正弦波的尺度)。如果结果是0%,那么无论使用什么预测器,都不可能试图预测时间序列的行为。
2)取一些预测器,用相同的函数评估它们,创建类似于pca的新预测器,这样新预测器的Omega()结果甚至比原始预测器更好。这是否有助于更好地预测目标值,取决于你的运气,该软件包对这些预测器需要预测的内容不感兴趣。重点是,如果预测器不是噪音--使用它的模型会预测得更稳定。

你大大证实了我的猜测。

谢谢你。

我认为这套方案对于分类来说是没有用的。

但对于外推式的预测,它可能是有用的。

例如,以预测包为例。它将该系列分解为三个组成部分,然后向前推断并加起来。它能使预测提前一步或更多。

现在的问题是:采取哪种货币对?我们以CaretFA为例,用它来计算几个货币对的预测能力我怀疑在一个有限的窗口中,这种预测能力会随着窗口的移动而改变。我们选择一个货币对,预测它(或另一个包--有很多这样的包),交易它,在关闭所有头寸后,我们再次选择货币对。

 
Dr.Trader:

独立于模型的选择的一个例子是vtreat软件包。它以某种方式分析数据,然后根据目标值对其进行评估。

对于虹膜表,用随机值创建10个新的预测器。designTreatmentsN将评估每个预测因素,分数越低越好。在这个例子中,原始的4个预测因子(图中最后一个)明显突出,得分几乎为零,这非常好。在选择预测因子时,首先要删除的是数值最高的那一个。
如果只有2个目标值(0/1,TRUE/FALSE,-1/1,有2个水平的因子,等等),有designTreatmentsC函数用于这种情况。


这个包也被用于y-aware pca。vtreat包将预测因子缩放为y-aware区间,组件几乎以通常的方式进一步创建(只是没有重新缩放和定心)。所以,如果你愿意,你可以用这个软件包做一些有趣的事情,比如说Y-aware randomforest。
在此阅读更多信息:https://cran.r-project.org/web/packages/vtreat/vignettes/vtreatScaleMode.html

我看了你的代码与虹膜和随机预测器,我明白我根本不会编程,你的代码中花了我10行的东西适合在3个....。

而这种vtreat选择,与RF中内置的同样的importense是否有区别?

 
mytarmailS:

这个vtreat选择与RF内置的importense不同吗?

Vtreat更好。它从统计学角度评估一切,预测器在预测目标变量方面总体上有多好/多坏,而不对特定的预测模型进行调整。建议使用最大分值为1/(预测器数量)的预测器。例如,如果有200个预测器,你可以只从其中取出那些评价小于1/200的预测器。可以对预测因子进行估计,如果所有的估计值都高于阈值--与其不成功地尝试教导模型和预测新数据,不如开始寻找其他预测因子。

有几个缺点--该软件包对预测因子逐一进行处理,没有考虑到它们的相互作用。我也不喜欢即使是完全相同或高度相关的预测因子--vtreat也不会删除重复的预测因子,有时这很烦人。