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

 
也就是说,如果有20个预测因子,谁知道贝叶斯如果训练不足会得出什么结果。
 
马克西姆-德米特里耶夫斯基

不太清楚,这里应该更清楚

https://habr.com/ru/post/276355/

应用范围很广,具体如何使用是另一个问题。

我将在晚上读它

 
马克西姆-德米特里耶夫斯基

你和我没有什么可谈的,因为我从你的心理类型可以看出,你要么是个孩子,要么就是......算了。

"我们 "是指你吗?首先要找一份工作,在这个年龄段坐在父母的肩膀上是一种耻辱。

 
马克西姆-德米特里耶夫斯基

不太清楚,这里应该更清楚

https://habr.com/ru/post/276355/

应用范围很广,具体如何使用是另一个问题。

文章第二部分的底线。
辍学可以被看作是贝叶斯主义的廉价版本,它非常简单。这个想法基于我在上一篇文章末尾提到的与集合体的相同类比:想象你有一个神经网络。现在想象一下,你拿着它,随意撕下几个神经元,然后把它放在一边。经过大约1000次这样的操作,你会得到一个由一千个网络组成的集合,其中每个网络都随机地与其他网络略有不同。我们对他们的预测进行平均,我们得到的是,随机偏差在某些地方相互补偿,并给出了实际的预测结果。现在想象一下,你有一个贝叶斯网络,你从不确定性中抽取一千次其权重的集合,你会得到同样的略有不同的网络集合。

贝叶斯方法更酷的地方在于,它允许你以一种可控的方式使用这种随机性。

....

在实践中,这转化为一个事实,即维度网络比辍学网络的结果更好,尽管不是很多。

辍学的原因是,它非常简单,当然。

也就是说,一个有辍学的深度NS相当于一个贝叶斯网。而dropout在很多软件包中都有,你可以先用它来搜索你的预测器/目标上的鱼。然后尝试用贝叶斯来改进结果。在弗拉基米尔-佩雷文科的文章中,使用了辍学的方法,可以在其基础上进行实验。

我做了实验,但没有在我的预测器上找到任何突破口。
但我并没有把网络做得那么深,以至于我不得不从其中丢掉1000个神经元。我没有试过超过N-100-100-100-1(401个神经元)。也就是说,100个可能已经被删除,但不是1000个。要去除1000个,你需要一个有4-10万个神经元的网络,而且可能需要很长的时间来计算。
有可能有1000棵树的森林也会有类似的结果,而且会比NS的计数快得多。
 
elibrarius
我没有试过超过N-100-100-100-1(401个神经元)。

你不能正确地训练这样的怪物。我认为,我们需要一个更简单的NS。某处多达100个神经元。

 
elibrarius
文章第二部分的底线。

也就是说,一个有辍学的深度NS类似于贝叶斯网络。而辍学是在许多软件包中,你可以先用它们来搜索其预测器/目标的鱼。然后尝试用贝叶斯来改进结果。在弗拉基米尔-佩雷文科的文章中使用了辍学,你可以在其基础上进行实验。

我做了实验,但发现在我的预测指标上没有突破。
但我并没有把网络做得那么深,以至于我不得不从其中丢掉1000个神经元。我没有试过超过N-100-100-100-1(401个神经元)。也就是说,100个可能已经被删除,但不是1000个。要去除1000个,你需要一个有4-10万个神经元的网络,而且可能需要很长的时间来计算。
有可能有1000棵树的森林也会有类似的结果,而且会比NS的计数快得多。

哦,我不知道,对于任何数量的树木/森林,阿库拉西都会停止生长,它们只是躺在那里压舱,没有任何改善。丢掉或不丢掉都是死路一条。

在我看来,贝叶斯和辍学者之间的粗略比较,但我对这个问题还是不太了解,所以我不会去争论,也许如此

 
马克西姆-德米特里耶夫斯基

在我看来,贝叶斯和辍学者之间的比较很粗糙,但我对这个问题还是不太了解,不会去争论,也许是这样吧

是这篇文章的作者做了这个比较,而不是我。他是在另一个更大的箱子上写的文章,他是在这个箱子上做的实验。也就是说,这种比较显然是来自于该方法的开发者。

 
马克西姆-德米特里耶夫斯基

哦,我不知道,对于任何数量的树木/森林,阿库拉西都会停止生长,它们只是躺在那里压舱,没有改善任何东西。丢不丢,都是一块死手绢。

如果你要建立一个有1000棵树的森林,可能你应该向每个森林提供1%的数据,即r=0.01,而不是0.1 ...0.6是对有100棵推荐树种的森林的建议。
 

我在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......好吧,像往常一样。

我明天再看一下计算结果,也许调试代码还在。

一般来说,这个指标在这里没有用处,因为它不用于提前休息或其他方面......结果是没有参考价值的。采取了一个分类错误,仅此而已