트레이딩의 머신러닝: 이론, 모델, 실전 및 알고리즘 트레이딩 - 페이지 1259

 
저것들. 예측 변수가 20개라면 Bayes가 훈련을 덜 받았을 때 생각해 낼 수 있는 것은 xs입니다.
 
막심 드미트리예프스키 :

정확하지 않습니다. 여기서 더 명확해야 합니다.

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

적용 범위가 넓은데 정확히 얼마나 적용될지는 또 다른 문제

저녁에 읽을게

 
막심 드미트리예프스키 :

정신 유형에 따르면 당신이 어린이이거나 .. 간단히 말해서 우리는 운전했습니다.

"우리"는 당신 또는 무엇입니까? 주인? 스스로 일자리를 먼저 구하세요, 그 나이에 부모의 목에 앉는 것은 부끄러운 일입니다.

 
막심 드미트리예프스키 :

정확하지 않습니다. 여기서 더 명확해야 합니다.

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

적용 범위가 넓은데 정확히 얼마나 적용될지는 또 다른 문제

기사 2부 요약:
Dropout은 매우 단순한 Bayesianism의 저렴한 버전으로 생각할 수 있습니다. 이 아이디어는 지난 포스트 말미에 언급한 앙상블과 동일한 비유를 기반으로 합니다. 신경망이 있다고 상상해 보십시오. 이제 당신이 그것을 가지고 실수로 그것에서 몇 개의 뉴런을 떼어 내고 따로 치워 두었다고 상상해보십시오. 이러한 작업을 ~1000번 수행하면 수천 개의 네트워크 앙상블을 얻을 수 있으며 각 네트워크는 무작위 방식으로 서로 약간 다릅니다. 우리는 그들의 예측을 평균화하고 무작위 편차가 장소에서 서로를 상쇄하고 실제 예측을 제공한다는 것을 발견했습니다. 이제 베이지안 네트워크가 있고 불확실성에서 가중치 세트를 수천 번 추출하고 서로 약간 다른 동일한 네트워크 앙상블을 얻는다고 상상해보십시오.

베이지안 접근 방식이 더 멋진 이유는 이 무작위성을 제어된 방식으로 사용할 수 있다는 것입니다.

....

실제로 이것은 dipout 네트워크가 dropout 네트워크보다 비록 많지는 않지만 더 나은 결과를 제공한다는 사실로 해석됩니다.

쿨러 드롭아웃은 물론 매우 간단합니다.

저것들. 드롭아웃이 있는 깊은 NN은 베이지안 네트워크와 유사합니다. 그리고 많은 패키지에 드롭아웃이 있습니다. 먼저 이를 사용하여 예측 변수/타겟에서 물고기를 찾을 수 있습니다. 그런 다음 Bayes로 결과를 개선하십시오. Dropout은 Vladimir Perervenko의 기사에서 사용되었으며, 이를 기반으로 실험할 수 있습니다.

나는 실험했지만 내 예측 변수에 대한 돌파구를 찾지 못했습니다.
그러나 나는 1000개의 뉴런을 떨어뜨릴 만큼 충분히 깊게 네트워크를 만들지 않았습니다. N-100-100-100-100-1(401개의 뉴런) 이상을 시도하지 않았습니다. 저것들. 100개는 제거되었지만 1000개는 제거되지 않았을 수 있습니다. 1000개를 제거하려면 4-10,000개의 뉴런이 있는 네트워크가 필요하며 계산하는 데 오랜 시간이 걸릴 것입니다.
1000그루의 나무가 있는 숲은 NA보다 훨씬 빠르게 계산하면서 비슷한 결과를 얻을 수 있습니다.
 
도서관 :
N-100-100-100-100-1(401개의 뉴런) 이상을 시도하지 않았습니다.

이러한 몬스터는 일반적으로 훈련되지 않습니다. IMHO, NS가 더 쉽습니다. 어딘가에 최대 100개의 뉴런이 있습니다.

 
도서관 :
기사 2부 요약:

저것들. 드롭아웃이 있는 깊은 NN은 베이지안 네트워크와 유사합니다. 그리고 많은 패키지에 드롭아웃이 있습니다. 먼저 이를 사용하여 예측 변수/타겟에서 물고기를 찾을 수 있습니다. 그런 다음 Bayes로 결과를 개선하십시오. Dropout은 Vladimir Perervenko의 기사에서 사용되었으며, 이를 기반으로 실험할 수 있습니다.

나는 실험했지만 내 예측 변수에 대한 돌파구를 찾지 못했습니다.
그러나 나는 1000개의 뉴런을 떨어뜨릴 만큼 충분히 깊게 네트워크를 만들지 않았습니다. N-100-100-100-100-1(401개의 뉴런) 이상을 시도하지 않았습니다. 저것들. 100개는 제거되었지만 1000개는 제거되지 않았을 수 있습니다. 1000개를 제거하려면 4-10,000개의 뉴런이 있는 네트워크가 필요하며 계산하는 데 오랜 시간이 걸릴 것입니다.
1000그루의 나무가 있는 숲은 NA보다 훨씬 빠르게 계산하면서 비슷한 결과를 얻을 수 있습니다.

아, 모르겠습니다. 나무/숲이 몇 개 있으면 Akuras는 성장을 멈추고 아무 것도 개선하지 않고 안정기처럼 누워 있습니다. 떨어뜨리지 말고 죽은 찜질방처럼 떨어뜨리지 마세요

제 생각에는 Bayes와 중도 탈락자를 대략적으로 비교한 것입니다. 하지만 아직 이 주제에 대해 자세히 알지 못하며 논쟁하지 않겠습니다. 아마도 그렇게 될 것입니다.

 
막심 드미트리예프스키 :

제 생각에는 Bayes와 중도 탈락자를 대략적으로 비교한 것입니다. 하지만 아직 이 주제에 대해 자세히 알지 못하며 논쟁하지 않겠습니다. 아마도 그렇게 될 것입니다.

기사의 저자는 이것을 비교했습니다 - 내가 아닙니다. 그리고 그는 자신의 실험을 수행한 다른 더 큰 기사로 기사를 썼습니다. 저것들. 이 비교는 분명히 이 방법의 개발자로부터 나온 것입니다.

 
막심 드미트리예프스키 :

아, 모르겠습니다. 나무/숲이 몇 개 있으면 Akuras는 성장을 멈추고 아무 것도 개선하지 않고 안정기처럼 누워 있습니다. 떨어뜨리지 말고 죽은 찜질방처럼 떨어뜨리지 마세요

글쎄, 만약 당신이 1000그루의 나무가 있는 숲을 만든다면 아마도 데이터의 1%가 각각에 제출되어야 합니다. r=0.01. 권장 나무가 100개 있는 숲의 경우 권장되는 0.1 ... 0.6이 아닙니다.
 

Alglib-a의 숲에서 이해할 수 없는 코드를 발견했습니다. 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개의 트리를 탐색하고 싶었기 때문에 이 f-ii를 이해하기 시작했습니다. 그리고 포리스트의 나무 수를 1로 설정하면 모든 오류가 0과 1 사이에 있고 이 오류는 100에서 300+까지 발생하는 것을 보았습니다.
누군가가 크로스 엔트로피를 이해합니다. 코드가 일반적으로 정확합니까, 아니면 미완성 상태로 남아 있습니까?

Wikipedia 에 따르면



 

catbust와 비교 - 일반적으로 반환, 일반적으로 테스트에서> 0.5 .. 평소와 같이

내일 계산을 직접 살펴보겠습니다. 디버그 코드가 제거되지 않았습니다.

일반적으로 이 측정항목은 여기서 의미가 없습니다. 조기 중지 또는 기타 용도로 사용되지 않으며 .. 결국에는 정보가 없습니다. 분류 오류가 발생하고 그게 다야