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

 
Roman #:

请解释如何使用损失函数
如何使用目标函数进行最小化?

第二个问题。
在 Matlab 中,函数 fminsearch() 使用 Nelder-Mead 算法。
ENUM_LOSS_FUNCTION 中没有这种算法。
我们能指望添加这种算法吗?

训练神经网络的任务是找到一种能使训练样本误差最小的算法,为此需要使用损失函数。损失 方法用于计算偏差,您可以指定ENUM_LOSS_FUNCTION 枚举的 14 种类型中的一种

获得的偏差值随后将用于完善神经网络的参数,这需要使用衍生法(Derivative method),它可以计算激活函数的导数值,并将其写入传递的向量/矩阵中。

由于可以扩展枚举功能,我们可以根据需要添加新的算法。

 
Renat Fatkhullin #:

训练神经网络的任务是找到一种算法,使训练样本的误差最小,为此需要使用损失函数。 要计算偏差,需要使用损失 方法,您可以指定 14 种ENUM_LOSS_FUNCTION 枚举类型中的一种

获得的偏差值将用于完善神经网络的参数,使用Derivative 方法计算激活函数的导数值,并将其写入传递的向量/矩阵中。

由于可以扩展枚举功能,我们可以根据需要添加新的算法。


我是通过 MAPE 的例子 弄明白的。

我以为这是一个能使目标函数最小化的损失函数。
而这只是一个度量计算

vector Forecast = {28.252177870295327, 1.386017247821653, 1.321279511381957};
vector Fact     = {45.979999999999997, 1.710000000000000, 1.340000000000000};

double MAPE = Forecast.Loss(Fact,LOSS_MAPE);

Print(DoubleToString(MAPE,2) + " %");
19.63 %


这在代码中也是一样的

vector Forecast = {28.252177870295327, 1.386017247821653, 1.321279511381957};
vector Fact     = {45.979999999999997, 1.710000000000000, 1.340000000000000};

vector loss = {0.,0.,0.};

for(int i=0; i<3; i++)
   loss[i] = fabs(Forecast[i] - Fact[i]) / Fact[i];

double MAPE = loss.Mean()*100;

Print(DoubleToString(MAPE,2) + " %");
19.63 %



然后是对文档描述的 疑问。

描述中是否有错误?

ll

也许更正确的说法是:
以 MSE、MAE 等指标 计算损失值?
毕竟,最小化损失的函数应该由您自己编写。


这里的描述有些奇怪。

i

Документация по MQL5: Методы матриц и векторов / Машинное обучение / Loss
Документация по MQL5: Методы матриц и векторов / Машинное обучение / Loss
  • www.mql5.com
Loss - Машинное обучение - Методы матриц и векторов - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksey Vyazmikin #:

寻找同伴,踏上一段有趣而刺激的未知旅程,寻找神秘的预言/特征/迹象。

我有一张寻找它们的地图,需要有人来设置陷阱,思考这些奇妙现象的习性和光环。

旅途并不轻松,漫长但令人兴奋,我相信我们不会没有战利品!

如果您有兴趣--请提问!

在我们之前,一切都已经被发明出来了,所以我想直接跳上火车。

现在,我们将在 metatrader 中获得神经网络,然后就可以放松一下了。

一般来说,我们可以买入天然气期货,然后卖出。
 
Maxim Dmitrievsky #:
所以,一切都已经在我们面前被发明了,所以我想直接跳上火车

也许已经发明了,但显然不是在开放源代码的表面上。

为了搜索和选择预测因子,我正在开发一种系统方法,即对预测因子进行分类,这些预测因子主要基于指标数据。我希望能从代码库中筛选出有趣的东西。一般来说,在我的范例中有一个概念 "事件",它是可以影响价格的东西,由预测器来描述。会有不同类型的事件,例如 "价格突破水平线"(由指标生成),这些事件的描述由预测器负责,包括时间、事件的历史、事件的相对性(归一化)--坐标系也将被选择。

这种方法本身是可行的,它可以选择有趣的变体,但我们需要生成这些变体。

我正在寻找能够加快这一过程并增强批判性和创造性思维的人。

是的,不会有感兴趣的人,我会一个人慢慢地、乏味地挑选。

 
Aleksey Vyazmikin #:

可能是发明的,但显然不是在公开来源的表面上。

为了搜索和选择预测因子,我正在开发一种系统方法,即对预测因子进行分类,这些预测因子主要基于指标数据。我希望能从代码库中筛选出有趣的东西。一般来说,在我的范例中有一个概念 "事件",它是可以影响价格的东西,由预测器来描述。会有不同类型的事件,例如 "价格突破水平线"(由指标生成),这些事件的描述由预测器负责,包括时间、事件的历史、事件的相对性(归一化)--坐标系也将被选择。

该方法本身是有效的,它允许您选择有趣的变体,但您需要生成这些变体。

我正在寻找能够加快这一过程并增强批判性和创造性思维的人。

是的,不会有感兴趣的人,我会慢慢地、乏味地挑选一个。

我已经创建了所有这些
 
Aleksey Vyazmikin #:

可能是发明的,但显然不是在公开来源的表面上。

为了搜索和选择预测因子,我正在开发一种系统方法,即对预测因子进行分类,这些预测因子主要基于指标数据。我希望能从代码库中筛选出有趣的东西。一般来说,在我的范例中有一个概念 "事件",它是可以影响价格的东西,由预测器来描述。会有不同类型的事件,例如 "价格突破水平线"(由指标生成),这些事件的描述由预测器负责,包括时间、事件的历史、事件的相对性(归一化)--坐标系也将被选择。

该方法本身是有效的,它允许您选择有趣的变体,但您需要生成这些变体。

我正在寻找能够加快这一过程并增强批判性和创造性思维的人。

是的,不会有感兴趣的人,我会一个人慢慢地、乏味地挑选。

别忘了加上实时时间......否则你会和其他人一样:-)

例如 2 个:y=abs(sin(x))*sin(x) ;频率为 1 天和 1 周;最好提前计算相位移动

因为指标和直线交叉的概率取决于它们

顺便说一句,傅里叶在这里是有害的,令人讨厌 :-)

 
mytarmailS #:
我已经创造了这一切。

你真厉害

你发现了很多有趣的、可持续的东西吗?

解决方案在终端工作的问题解决了吗?

 
Maxim Kuznetsov #:

别忘了加上实时时间......否则你就会和其他人一样:-)

a la 2 pcs:y=abs(sin(x))*sin(x) ;频率为 1 天和 1 周;相移最好提前计算出来

因为指标和直线交叉的概率取决于它们

顺便说一句,傅里叶是有害的,这里的人讨厌傅里叶:-)

在我的幻想中,我并不聪明....。实时 "是什么意思?

 
Aleksey Vyazmikin #:

0)你真是个好孩子!

1)你发现了很多有趣的、可持续发展的东西吗?

2)终端解决方案的工作问题解决了吗?

0)是的,我就是这样......)

1) 我还没有部署整个系统、
1.存在维度诅咒和组合爆炸的问题,但理论上是可以解决的,有利于准确性....。
2.2. 搜索算法很慢,很多东西需要用 C 或 C++ 来写,我不知道怎么做。
3.即使是优化算法也无法在大日期中搜索到模式,你需要在本地搜索模式....。
但总的来说,如果行不通,就什么都行不通....

2) 是的。


顺便说一句,"事件 "一词可以用 "规则 "代替。


 
Aleksey Vyazmikin #:

在我的幻想中,我并不聪明.....。什么叫 "实时"?

价格穿越任何一条线(以及触发指标信号)的概率取决于一天中的时间和星期。

有必要在 NN 和 DL 中添加周期时间。最简单的方法是正弦波。依赖关系是非线性的,因此只需将其平方,并考虑符号。将有两个额外的输入负责时间参考。午夜/正午在任何地方都是不同的,因此最好提前计算并给出相位。这是模型与现实世界及其时间的联系。

如果没有明确给出这些时间,那么在我看来,要么你会得到一个南瓜,要么整个模型会自己尝试获取并输出这些时间。