交易中的机器学习:理论、模型、实践和算法交易 - 页 1259 1...125212531254125512561257125812591260126112621263126412651266...3399 新评论 Forester 2019.01.16 17:43 #12581 也就是说,如果有20个预测因子,谁知道贝叶斯如果训练不足会得出什么结果。 Forester 2019.01.16 17:45 #12582 马克西姆-德米特里耶夫斯基。不太清楚,这里应该更清楚 https://habr.com/ru/post/276355/ 应用范围很广,具体如何使用是另一个问题。我将在晚上读它 Кеша Рутов 2019.01.16 18:07 #12583 马克西姆-德米特里耶夫斯基。你和我没有什么可谈的,因为我从你的心理类型可以看出,你要么是个孩子,要么就是......算了。"我们 "是指你吗?首先要找一份工作,在这个年龄段坐在父母的肩膀上是一种耻辱。 Forester 2019.01.16 22:22 #12584 马克西姆-德米特里耶夫斯基。不太清楚,这里应该更清楚 https://habr.com/ru/post/276355/ 应用范围很广,具体如何使用是另一个问题。 文章第二部分的底线。辍学可以被看作是贝叶斯主义的廉价版本,它非常简单。这个想法基于我在上一篇文章末尾提到的与集合体的相同类比:想象你有一个神经网络。现在想象一下,你拿着它,随意撕下几个神经元,然后把它放在一边。经过大约1000次这样的操作,你会得到一个由一千个网络组成的集合,其中每个网络都随机地与其他网络略有不同。我们对他们的预测进行平均,我们得到的是,随机偏差在某些地方相互补偿,并给出了实际的预测结果。现在想象一下,你有一个贝叶斯网络,你从不确定性中抽取一千次其权重的集合,你会得到同样的略有不同的网络集合。 贝叶斯方法更酷的地方在于,它允许你以一种可控的方式使用这种随机性。.... 在实践中,这转化为一个事实,即维度网络比辍学网络的结果更好,尽管不是很多。 辍学的原因是,它非常简单,当然。 也就是说,一个有辍学的深度NS相当于一个贝叶斯网。而dropout在很多软件包中都有,你可以先用它来搜索你的预测器/目标上的鱼。然后尝试用贝叶斯来改进结果。在弗拉基米尔-佩雷文科的文章中,使用了辍学的方法,可以在其基础上进行实验。 我做了实验,但没有在我的预测器上找到任何突破口。 但我并没有把网络做得那么深,以至于我不得不从其中丢掉1000个神经元。我没有试过超过N-100-100-100-1(401个神经元)。也就是说,100个可能已经被删除,但不是1000个。要去除1000个,你需要一个有4-10万个神经元的网络,而且可能需要很长的时间来计算。 有可能有1000棵树的森林也会有类似的结果,而且会比NS的计数快得多。 Yuriy Asaulenko 2019.01.16 23:07 #12585 elibrarius。 我没有试过超过N-100-100-100-1(401个神经元)。你不能正确地训练这样的怪物。我认为,我们需要一个更简单的NS。某处多达100个神经元。 Maxim Dmitrievsky 2019.01.17 05:10 #12586 elibrarius。 文章第二部分的底线。也就是说,一个有辍学的深度NS类似于贝叶斯网络。而辍学是在许多软件包中,你可以先用它们来搜索其预测器/目标的鱼。然后尝试用贝叶斯来改进结果。在弗拉基米尔-佩雷文科的文章中使用了辍学,你可以在其基础上进行实验。 我做了实验,但发现在我的预测指标上没有突破。 但我并没有把网络做得那么深,以至于我不得不从其中丢掉1000个神经元。我没有试过超过N-100-100-100-1(401个神经元)。也就是说,100个可能已经被删除,但不是1000个。要去除1000个,你需要一个有4-10万个神经元的网络,而且可能需要很长的时间来计算。 有可能有1000棵树的森林也会有类似的结果,而且会比NS的计数快得多。哦,我不知道,对于任何数量的树木/森林,阿库拉西都会停止生长,它们只是躺在那里压舱,没有任何改善。丢掉或不丢掉都是死路一条。 在我看来,贝叶斯和辍学者之间的粗略比较,但我对这个问题还是不太了解,所以我不会去争论,也许如此 Forester 2019.01.17 07:02 #12587 马克西姆-德米特里耶夫斯基。 在我看来,贝叶斯和辍学者之间的比较很粗糙,但我对这个问题还是不太了解,不会去争论,也许是这样吧是这篇文章的作者做了这个比较,而不是我。他是在另一个更大的箱子上写的文章,他是在这个箱子上做的实验。也就是说,这种比较显然是来自于该方法的开发者。 Forester 2019.01.17 07:06 #12588 马克西姆-德米特里耶夫斯基。哦,我不知道,对于任何数量的树木/森林,阿库拉西都会停止生长,它们只是躺在那里压舱,没有改善任何东西。丢不丢,都是一块死手绢。 如果你要建立一个有1000棵树的森林,可能你应该向每个森林提供1%的数据,即r=0.01,而不是0.1 ...0.6是对有100棵推荐树种的森林的建议。 Forester 2019.01.18 21:59 #12589 我在Alglib森林中发现了一个不起眼的代码。来自dataanalysis.mqh的交叉熵计算功能的完整代码。 //+------------------------------------------------------------------+//| Average cross-entropy (in bits per element) on the test set |//| INPUT PARAMETERS: |//| DF - decision forest model |//| XY - test set |//| NPoints - test set size |//| RESULT: |//| CrossEntropy/(NPoints*LN(2)). |//| Zero if model solves regression task. |//+------------------------------------------------------------------+ static double CDForest::DFAvgCE(CDecisionForest &df,CMatrixDouble &xy, const int npoints) {//--- create variables double result=0; int i=0; int j=0; int k=0; int tmpi=0; int i_=0;//--- creating arrays double x[]; double y[];//--- allocation ArrayResizeAL(x,df.m_nvars); ArrayResizeAL(y,df.m_nclasses);//--- initialization result=0; for(i=0;i<=npoints-1;i++) { for(i_=0;i_<=df.m_nvars-1;i_++) x[i_]=xy[i][i_]; //--- function call DFProcess(df,x,y); //--- check if(df.m_nclasses>1) { //--- classification-specific code k=(int)MathRound(xy[i][df.m_nvars]); tmpi=0; for(j=1;j<=df.m_nclasses-1;j++) { //--- check if(y[j]>(double)(y[tmpi])) tmpi=j; } //--- check if(y[k]!=0.0) result=result-MathLog(y[k]); else result=result-MathLog(CMath::m_minrealnumber); } }//--- return result return(result/npoints); } 红色标记的代码片段考虑了一些不被使用的东西(tmpi)。那为什么会包括它呢? 要么是遗漏了什么,要么是代码没有完全清理干净。 一般来说,我开始接触这个函数是因为我想搜索1棵树。而当我设置森林中的树木数量=1时,我看到所有的错误都在0到1之间,而这个从100到300+的错误发生了。 是否有人理解交叉熵--代码甚至是正确的,或者说有些东西被撤销了? 根据维基百科 ,它应该是 Machine learning in trading: String comparison For loop Maxim Dmitrievsky 2019.01.18 22:13 #12590 我把它与catbust进行了比较--它的回报很好,通常在测试中>0.5......好吧,像往常一样。 我明天再看一下计算结果,也许调试代码还在。 一般来说,这个指标在这里没有用处,因为它不用于提前休息或其他方面......结果是没有参考价值的。采取了一个分类错误,仅此而已 1...125212531254125512561257125812591260126112621263126412651266...3399 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
不太清楚,这里应该更清楚
https://habr.com/ru/post/276355/
应用范围很广,具体如何使用是另一个问题。
我将在晚上读它
你和我没有什么可谈的,因为我从你的心理类型可以看出,你要么是个孩子,要么就是......算了。
"我们 "是指你吗?首先要找一份工作,在这个年龄段坐在父母的肩膀上是一种耻辱。
不太清楚,这里应该更清楚
https://habr.com/ru/post/276355/
应用范围很广,具体如何使用是另一个问题。
贝叶斯方法更酷的地方在于,它允许你以一种可控的方式使用这种随机性。
....
在实践中,这转化为一个事实,即维度网络比辍学网络的结果更好,尽管不是很多。
辍学的原因是,它非常简单,当然。
也就是说,一个有辍学的深度NS相当于一个贝叶斯网。而dropout在很多软件包中都有,你可以先用它来搜索你的预测器/目标上的鱼。然后尝试用贝叶斯来改进结果。在弗拉基米尔-佩雷文科的文章中,使用了辍学的方法,可以在其基础上进行实验。
我做了实验,但没有在我的预测器上找到任何突破口。但我并没有把网络做得那么深,以至于我不得不从其中丢掉1000个神经元。我没有试过超过N-100-100-100-1(401个神经元)。也就是说,100个可能已经被删除,但不是1000个。要去除1000个,你需要一个有4-10万个神经元的网络,而且可能需要很长的时间来计算。
有可能有1000棵树的森林也会有类似的结果,而且会比NS的计数快得多。
我没有试过超过N-100-100-100-1(401个神经元)。
你不能正确地训练这样的怪物。我认为,我们需要一个更简单的NS。某处多达100个神经元。
文章第二部分的底线。
也就是说,一个有辍学的深度NS类似于贝叶斯网络。而辍学是在许多软件包中,你可以先用它们来搜索其预测器/目标的鱼。然后尝试用贝叶斯来改进结果。在弗拉基米尔-佩雷文科的文章中使用了辍学,你可以在其基础上进行实验。
我做了实验,但发现在我的预测指标上没有突破。但我并没有把网络做得那么深,以至于我不得不从其中丢掉1000个神经元。我没有试过超过N-100-100-100-1(401个神经元)。也就是说,100个可能已经被删除,但不是1000个。要去除1000个,你需要一个有4-10万个神经元的网络,而且可能需要很长的时间来计算。
有可能有1000棵树的森林也会有类似的结果,而且会比NS的计数快得多。
哦,我不知道,对于任何数量的树木/森林,阿库拉西都会停止生长,它们只是躺在那里压舱,没有任何改善。丢掉或不丢掉都是死路一条。
在我看来,贝叶斯和辍学者之间的粗略比较,但我对这个问题还是不太了解,所以我不会去争论,也许如此
在我看来,贝叶斯和辍学者之间的比较很粗糙,但我对这个问题还是不太了解,不会去争论,也许是这样吧
是这篇文章的作者做了这个比较,而不是我。他是在另一个更大的箱子上写的文章,他是在这个箱子上做的实验。也就是说,这种比较显然是来自于该方法的开发者。
哦,我不知道,对于任何数量的树木/森林,阿库拉西都会停止生长,它们只是躺在那里压舱,没有改善任何东西。丢不丢,都是一块死手绢。
我在Alglib森林中发现了一个不起眼的代码。来自dataanalysis.mqh的交叉熵计算功能的完整代码。
//+------------------------------------------------------------------+
//| Average cross-entropy (in bits per element) on the test set |
//| INPUT PARAMETERS: |
//| DF - decision forest model |
//| XY - test set |
//| NPoints - test set size |
//| RESULT: |
//| CrossEntropy/(NPoints*LN(2)). |
//| Zero if model solves regression task. |
//+------------------------------------------------------------------+
static double CDForest::DFAvgCE(CDecisionForest &df,CMatrixDouble &xy,
const int npoints)
{
//--- create variables
double result=0;
int i=0;
int j=0;
int k=0;
int tmpi=0;
int i_=0;
//--- creating arrays
double x[];
double y[];
//--- allocation
ArrayResizeAL(x,df.m_nvars);
ArrayResizeAL(y,df.m_nclasses);
//--- initialization
result=0;
for(i=0;i<=npoints-1;i++)
{
for(i_=0;i_<=df.m_nvars-1;i_++)
x[i_]=xy[i][i_];
//--- function call
DFProcess(df,x,y);
//--- check
if(df.m_nclasses>1)
{
//--- classification-specific code
k=(int)MathRound(xy[i][df.m_nvars]);
tmpi=0;
for(j=1;j<=df.m_nclasses-1;j++)
{
//--- check
if(y[j]>(double)(y[tmpi]))
tmpi=j;
}
//--- check
if(y[k]!=0.0)
result=result-MathLog(y[k]);
else
result=result-MathLog(CMath::m_minrealnumber);
}
}
//--- return result
return(result/npoints);
}
红色标记的代码片段考虑了一些不被使用的东西(tmpi)。那为什么会包括它呢?
根据维基百科 ,它应该是要么是遗漏了什么,要么是代码没有完全清理干净。
一般来说,我开始接触这个函数是因为我想搜索1棵树。而当我设置森林中的树木数量=1时,我看到所有的错误都在0到1之间,而这个从100到300+的错误发生了。
是否有人理解交叉熵--代码甚至是正确的,或者说有些东西被撤销了?
我把它与catbust进行了比较--它的回报很好,通常在测试中>0.5......好吧,像往常一样。
我明天再看一下计算结果,也许调试代码还在。
一般来说,这个指标在这里没有用处,因为它不用于提前休息或其他方面......结果是没有参考价值的。采取了一个分类错误,仅此而已