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

 
安德烈-哈蒂姆连斯基

在这个主题中,有一篇客串文章。只是来分享一篇文章

努默莱为卡尔-马克思提出的 "各国无产者联合起来!"的口号所倾倒,由杰弗里-辛顿解释:)
 
马克西姆-德米特里耶夫斯基

顺便说一下,这一点是准确的。

考虑到论坛上白痴的数量(包括你最喜欢的魔术师mudo...),我认为没有必要再支持这个话题,因为我自己几乎没有得到任何好处

马克西姆,你错了!对你来说有一个好处,在任务的制定和表述上有一个好处。然而,我并不是要劝说你。

 
尤里-阿索连科

马克西姆,你错了!对你有好处,在任务的措辞和表述上有好处。然而,我没有说服力。

你可以看到这里住着一些临床上的白痴,这些不是论坛上的面具,而是真实的案例,你告诉他们一个词,他们就会在每个帖子后告诉你两个词。

 
elibrarius

我在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+的错误发生了。
是否有人理解交叉熵--代码甚至是正确的,或者说有些东西被撤销了?

根据维基百科 ,它应该是



在计算logloss时,如果预测正确的类的概率为零,则该值一般可能达到无穷大,因为该公式包括了除它之外的所有其他类的零系数,似乎有一些尝试来解决这个故障--在tmpi中循环寻找样本中概率值最高的类,也许想加到公式中,但可能没有想清楚:)
 
伊万-内格雷什尼
一般来说,对无穷大的价值可能是在计算logloss时,如果预测正确的类的概率为零,因为该公式包括所有其他类,除了它的系数为零,似乎有试图以某种方式解决这个故障--在tmpi中循环查找在给定样本中概率值最高的类,也许想添加到公式中,但显然没有想清楚:)
在5个错误函数中,只有1个用到了临时工。显然,它被用作其他功能的假人,但在其他功能中,他们忘记了移除它。
总共有1个tmpi存在并正在使用,还有2个存在但没有使用。
总的来说,这并不影响操作。
 
elibrarius:
tmpi只用于5个错误函数中的一个。显然,它被用作其他功能的假人,但在其他功能中忘记了删除它。
总的来说,有1个临时电话正在使用,还有2个正在使用,但没有使用。
一般来说,它不影响操作。

我的意思是,一个好的错误计算公式可以考虑到所有类别的概率分布,而不是只有一个正确的类别。

也就是说,如果其中一个样本的正确类别概率为零,那么一切都会飞向无穷大。

显然,这就是为什么我喜欢用二次误差进行回归的原因:)

 
伊万-内格雷什尼
我基本上是说,一个好的错误计算公式可以考虑到所有类别的概率分布,而不仅仅是一个正确的类别。
那么,有5个错误函数。这个有点奇怪,但其他4个,因为他们应该从0到1的变化。所以有一个选择)
 
现在让凯沙(桑桑尼茨的孙子)和被投资者杀害的阿廖沙来管理这个分支机构。这将是公平的。
 
亚历山大_K2
现在让凯沙(SanSanYch的孙子)和被投资者惩罚的阿廖沙领导这个话题。这将是公平的。

放弃这个话题,开始一个新的、更充分的、有其他相关主题的话题,更有意义。

顺便说一下,我在价格方面发现了一个正态分布。我已经在《提示》中写道,所有的异常都来自于 "不正确的 "数据处理--我们自己做的)。

我将在这几天或更早的时候把它贴在Python的主题里。

 
尤里-阿索连科

放弃这个话题,开始一个新的、更充分的、有其他相关主题的话题,更有意义。

顺便说一下,我在价格方面发现了一个正态分布。我已经在《提示》中写道,所有的异常都来自于 "不正确的 "数据处理--我们自己做的)。

我将在这几天或更早的时候把它贴到Python主题中。

唉,鉴于论坛上缺乏像Matemat、Northwind和Prival这样水平的人,所有这些话题都没有前途。IMHO。