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

 
格里戈里-乔宁

阅读关于神经元激活功能的文章。你可以为输出提供任何你喜欢的值,但错误的激活函数会产生负值。这通常是一个双曲切线。softmax损失函数在它身上将无法正常工作。尽 管这在很大程度上取决于损失函数的库和实现。例如,在Tensorflow中,损失函数softmax的输出神经元不应该有任何激活函数。为了正确使用训练好的网络,我们应该增加softmax激活。我没有ALGLIB合作过,也许他们做错了什么在任何情况下,用softmax训练的网络不应该给出负值。

Softmax不是一个损失函数。你对某些事情感到困惑。Softmax是一个用于分类任务的输出层激活函数。不要迷惑这个人,他自己也会迷惑。

你使用Alglib的风险由你自己承担。只要在Rstudio中做一切事情。

祝好运

 
交易员博士

当其中一个班级与其他班级相比有非常多的训练实例时,就会出现这种情况。例如,买入时有2000个训练实例,卖出时只有1000个。该神经元总是可以返回 "买入",在这种情况下,它有66%的时间是正确的。最好是使每一类的训练实例的数量相等。

NA类--将占优势,从频繁交易的50%,到稀有交易的99%。但我已经得到了它的第三个,我已经得到了NA 1级卡住了。

我在想,为什么文章不使用训练实例来说明不需要做什么的时刻?因为在正确的时刻什么都不做也很重要,通常这些时刻是交易会导致损失的时候。
如果不学习如何暂停,NS可能会开始交易并损失存款。

 
弗拉基米尔-佩雷文科

Softmax不是一个损失函数。你对某些事情感到困惑。Softmax是一个用于分类任务的输出层激活函数。不要迷惑这个人,他将迷惑自己。

你使用Alglib的风险由你自己承担。只要在Rstudio中做一切事情。

祝好运


准确地说,该损失函数被称为softmax交叉熵。是的,我没说清楚。

 
弗拉基米尔-佩雷文科

Softmax不是一个损失函数。你对某些事情感到困惑。Softmax是一个用于分类任务的输出层激活函数。不要迷惑这个人,他将迷惑自己。

你使用Alglib的风险由你自己承担。只要在Rstudio中做一切事情。

祝好运

最有可能的是,在你的下一篇文章之后,我将使用R绑定(其中将有一个与终端的连接)。
 

顺便说一下,有趣的是,从上面的例子来看

买入 卖出 NA
0.10302356, 0.01091621,0.88606040
0.09705416, 0.01083526, 0.89211080
0.08283979, 0.12548789,0.79167247
1.02522414,-0.00119697,-0.02403573
0.09498582, 0.01529507,0.88971917
1.01878489,-0.00111341,-0.01767998
0.07906346, 0.05960769,0.86132762
0.00201949, 0.00497863,0.99300189

每一行的总和为1。(检查的前4名)。也就是说,与softmax有些类似,其中总和(即概率)也=1。但这是由NS完成的--线性输出的回归。

 
elibrarius

NA类--将占优势,从频繁交易的50%,到不频繁交易的99%。

将课程随机分配给教师是非常危险的,比如拿一些指标来创建 教师班级,然后将一些数值也替换成NA。

即使有好的预测因子和好的教学班,而且模型在新的数据上保持良好的结果--任何试图调整班级值的行为都会完全破坏模型。找到预测器的指标和类的指标,使模型在新的数据上保持盈利,这是一个很大的成功。

我建议从两个简单的课程开始--下一个条形图的颜色(即买入/卖出)。至少取10000个训练实例(历史条),训练模型并对历史上接下来的10000个条进行评估(这些条在训练期间对模型来说是未知的)。当我们设法找到能够在新旧数据上将模型的准确性保持在同一水平上的预测因子时--你就可以开始为教师的课程选择一个指标。而事实将证明,仅仅通过采取第一个可用的指标,该模型在新的数据上将无法保持准确性。为什么有些指标可以为教师服务,有些则不可以--我不知道。

 
elibrarius

ALGLIB上的SOFTMAX版本的NS有问题。所有的答案都偏向于第一个输出(对我来说是BUY)。
在相同的NS数据上--有3个输出的回归(有线性激活)给出了更可靠的结果。

买入 卖出 NA
0.10302356, 0.01091621,0.88606040
0.09705416, 0.01083526, 0.89211080
0.08283979, 0.12548789,0.79167247
1.02522414,-0.00119697,-0.02403573
0.09498582, 0.01529507,0.88971917
1.01878489,-0.00111341,-0.01767998
0.07906346, 0.05960769,0.86132762
0.00201949, 0.00497863,0.99300189

在>0.5会给出可信的答案。

顺便说一句,Lesa在第1次输出时也有偏差。


你是否将两个输出的总和设置为1? 我不知道,对我来说工作得很好,没有偏斜。我喜欢Softmax。

是的,我记得对于softmax,我把输入从0到1进行了配比。

一般来说,森林在回归和分类方面总是效果明显。有时我只得到买入或卖出的信号,但后来我挖了训练样本,例子中有一些偏差,所以也难怪(因为它们每隔一定时间就会自我重新训练,我事先不知道样本中可能出现什么)。另外,别忘了,脚手架是不能推断的。你必须教导所有未来的已知价值。

 

顺便说一下,这似乎根本没有必要。

数据预处理

为了提高收敛速度和解决方案的质量,ALGLIB实施了数据的预处理(训练集的标准化)。预处理是隐含地为用户进行的--在数据被传输到神经网络 之前,它被自动预处理,网络的结果被反变换。

 

下面是 一个关于乘法表的NS检查

脚手架 做了同样的工作,效果很好。

Библиотеки: ALGLIB - библиотека численного анализа
Библиотеки: ALGLIB - библиотека численного анализа
  • 2012.10.12
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: ALGLIB - библиотека численного анализа
 
马克西姆-德米特里耶夫斯基

你是否将2个输出的总和设置为1? 我不知道,对我来说工作得很好,没有偏斜。我喜欢Softmax。

是的,在我的记忆中,对于softmax,我将输入从0到1进行配比。

一般来说,森林在回归和分类方面总是效果明显。有时我只得到买入或卖出的信号,但后来我挖了训练样本,例子中有一些偏差,所以也难怪(因为它们每隔一定时间就会自我重新训练,我事先不知道样本中可能出现什么)。另外,别忘了,脚手架是不能推断的。你需要在未来训练所有的已知值。

我有3个输出的总和=1,或者说不是总和,而是只有一个输出=1,其余=0。
我没有对输入进行归一化处理,你在下面确认了这是没有必要的。我检查了乘法表(但它不是一个softmax)。
如果softmax对你有用--我再试着旋转一下,也许会有用(尽管在绝对相同的数据上,用lin.输出的回归也能正常工作)。