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

 
Maxim Kuznetsov #:

它有用吗?

我们 从一个更简单的东西开始:一个二维代理,它有 9 只眼睛,分别指向前方的不同角度,每只眼睛都能感知其方向上的 3 个值(最大可视距离):与墙壁的距离、与绿色物体的距离或与红色物体 的距离。代理通过 5 个动作中的一个动作来导航,这些动作会使代理转向不同的角度。红色的东西是苹果,特工吃了会得到奖励。绿色的东西是毒药,代理吃了会得到负奖励。按照目前的参数设置,训练需要几十分钟。

您可以点击开始学习......然后停止学习.....

蟑螂应该奔跑,并喜欢红点而避开绿点......

实际上:停止学习后,它或多或少会遵循上次的运动模式,而不会区分红色和绿色。或者是我的蟑螂异常愚蠢 :-)

因为 学习 完成之前 ,您不应该按停止学习键。

 
mytarmailS #:

因为 学习 完成之前 ,你不会停止学习

万岁!成功了......学习了 3 个小时,我差点忘了它。

现在,蟑螂跑得跟它应该跑的一样(差不多),尽量避开绿色的,吃红色的。

很显然,"感觉器 "少了一个,训练的 "感觉器 "就少了一个:-)也就是说,如果被罚的绿色蟑螂在某一边,它就会立即被吃掉。反之,则会避开某条横线上的红色小鱼。

不过,这可能是一个系统故障。

 
Aleksey Nikolayev #:

这只适用于独立特征的情况,因为它们是以相同的价格计算的,所以这是不可能的。在依赖关系的情况下,情况就复杂得多了--我们可以用共线法来举例,在共线法中,单变量分布总是相同的统一分布,但同时双变量分布也可能非常不同。

也许在同一个 R 上有一个解决方案,但你只需要去寻找它?

Aleksey Nikolayev#:

你偏爱繁重的枚举计算)我们必须(在已经相当多的枚举中)增加按特征类型枚举,当然,也可以按特征参数枚举。

不过,在我看来,您的方法有其合理之处,值得思考。

是的,显然我不善于在没有实验的情况下预测结果,所以与其建立多阶段的逻辑计算,在其中的某一步可能会出现错误,还不如进行测试并经常失望。

即使你学会了将样本划分为子样本,接下来的问题是如何对当前样本进行正确分类,并对其应用必要的模型。

 
mytarmailS #:
或许,不需要样本均匀性的统计标准,只需要观察模型在动态(滑动窗口)中特征重要性的变化即可。

如果当前状态与之前的状态有很大差异,就意味着我们已经进入了另一个样本....。

优点
1.您无需编程统计。测试,一切开箱即用
2.它不仅考虑了采样时间的变化,还考虑了目标的变化,我认为这一点同样重要

在什么时候进行观察?您建议如何进行动态观察?

我有一个脚本,可以在动态中显示模型叶片的激活情况,也就是说,您可以看到哪些叶片被触发了。也许我们应该计算它们在训练片段中的平均激活频率,然后查看测试片段中的偏差?这样,我们至少可以尝试从理论上监测模型效率的下降。

 
Aleksey Vyazmikin #:

在什么时候观察,在训练的时候?您建议如何进行动态观察,如何实现?

我有一个脚本,可以动态显示模型叶片的激活情况,也就是说,你可以看到哪些叶片被激活了。也许我们应该计算它们在训练片段中被激活的平均频率,然后再看看在测试片段中的偏差?这样,我们至少可以尝试从理论上监测模型效率的下降。

查看旧模型没有任何意义,因为它无法捕捉市场.... 的变化。

我建议按建议实施))))))
在一个滑动窗口中重新训练模型,观察迹象的重要性,或者只提取一些好迹象的决定因素,在一个滑动窗口中观察它。窗口


下面是一个随机生成的包含 5 个特征和 1 个二进制目标的样本的示例。

Forest 和 Fiche 选择器

X <- matrix(rnorm(1000),ncol = 5)
Y <- as.factor(sample(0:1,nrow(X),replace = T))

head(X)
head(Y)

#install.packages("randomForest")
library(randomForest)
rf_imp_mat <- matrix(ncol = ncol(X),nrow = nrow(X))
for(i in 30:nrow(X)){
  ii <- (i-29):i
  rf <- randomForest(Y[ii]~.,X[ii,],ntree=100)
  rf_imp_mat[i,] <- importance(rf)[,1]
}

#install.packages("FSelectorRcpp")
library(FSelectorRcpp)
fs_imp_mat <- matrix(ncol = ncol(X),nrow = nrow(X))
for(i in 30:nrow(X)){
  ii <- (i-29):i
  infg <- information_gain(y = Y[ii],x = as.data.frame(X[ii,]))
  fs_imp_mat[i,] <-  infg$importance
}

par(mfrow=c(1,2))
matplot(rf_imp_mat , t="l",lty=1,main="rf_var_imp")
matplot(fs_imp_mat , t="l",lty=1,main="fs_var_imp")


在 R-ka 中,如果没有必要,当然不习惯于循环书写,但这种风格会让新手感到困惑,而像我这样的中间人也会感到困惑....。

但你可以这样写,代码量减少3 倍,而结果是一样的。

X <- matrix(rnorm(1000),ncol = 5)
Y <- as.factor(sample(0:1,nrow(X),replace = T))
idx <- embed(1:nrow(X),dimension = 30)[,30:1]

library(randomForest)
rf_imp_mat <- t(apply(idx,1,function(i) importance(randomForest(Y[i]~.,X[i,]))[,1]))
library(FSelectorRcpp)
fs_imp_mat <- t(apply(idx,1,function(i) information_gain(y=Y[i],x=as.data.frame(X[i,]))$importance))

par(mfrow=c(1,2))
matplot(rf_imp_mat , t="l",lty=1,main="rf_var_imp")
matplot(fs_imp_mat , t="l",lty=1,main="fs_var_imp")


此外,您还可以根据自己的喜好 选择不同的选择器,这可能是 R-ka 中可用 选择器 的 5%。

GitHub - FrancisArgnR/R-FeatureSelection-Packages: Brief guide to feature selection packages in R
GitHub - FrancisArgnR/R-FeatureSelection-Packages: Brief guide to feature selection packages in R
  • FrancisArgnR
  • github.com
Feature selection or variable selection in machine learning is the process of selecting a subset of relevant features (variables or predictors) for use in model construction. Packages FSinR Boruta caret spFSR varSelRF CORElearn FSelector
 

或查看两种或三种货币的窗口,并延迟第三种货币的交易时间。

例如,下半日看欧元、瑞士法郎和美元兑加元,清晨看日元(澳元、新西兰元)......这样,系统就能学会判断美元的趋势,并有时间在 "它还没有腐烂 "之前买入。

只怕一句话,"所有的路都走过了",用现有的方法是不可能捞到鱼的。

[删除]  
要发明某样东西,就必须先确定研究对象,然后再确定它的属性,这样它就不会像猴子和眼镜一样了。
 
Maxim Dmitrievsky #:
要发明什么东西,首先要确定研究对象,然后再确定其属性,这样就不会像猴子和眼镜那样了。

现在界定研究对象及其属性还为时过早,论坛才成立 6 年。别这么难听!

[删除]  
Evgeny Dyuka #:

现在确定研究对象及其属性还为时过早,论坛才成立 6 年。别那么讨厌!

如果您开始将报价作为一个时间序列进行研究,您可能会发现一些其他时间序列所没有的特殊性。也许这些特征中蕴含着一些规律。是的,并不是所有的东西都能直接利用滞后特征进行自回归和分类,但如果加上巧妙的方法,您可以
 
Maxim Kuznetsov #:

(我希望他们不会因为 CodeBase 链接向你开枪:https://www.mql5.com/ru/code/36558

该指标只是显示(并总结)"黑/白 "迹象。

我将在这里显示条形符号,这并不可惜。

我将翻阅我那不多的发展档案,并将它们公布出来。

当然,这很有趣,我并不反驳,但这也存在非平稳性。

这就是为什么预测的概率略低于 1。

但从根本上说,如果现在是上涨,那么下一根柱子就会下跌。

较年轻的 TFMs 的这种变动会反映在较年长的 TFMs 上。

因此,趋势并不是一条直线,而是有很多回调,回调的持续时间和回调的条形图大小都是多重的。

然而,您似乎可以应用傅立叶法找到这些波浪,但事实并非如此,因为

时间尺度是以同样的方式前后调制的。

要理解这个奇迹并不容易,如果正面去做,会有很多问题。

例如,我们可以考虑从左到右或从右到左的价格走势,不一定从右边开始。

这样就有了向前和向后,向上和向下。