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

 
forexman77 :

"노이즈 예측기"를 정의하는 방법은 무엇입니까? 이런 식으로 중요도별로 선택하고 제거하려고 하면 결과가 더 나빠졌습니다.

추천이 가득했습니다.

나는 매우 간단한 계획을 사용하고 정확성을 추구하지는 않지만 매우 명확합니다.

나는 예측 변수(벡터)를 가져와 두 부분으로 나눕니다. 한 부분은 한 대상 클래스에 속하고 다른 부분은 다른 대상 클래스에 속합니다. 그런 다음 각 부분의 히스토그램을 만들고 비교합니다. 일치하면 노이즈, 발산하면 어느 정도 예측 능력이 있는 것입니다. 완전히 발산하면 100% 예측 능력(보이지 않음)입니다. 히스토그램 교집합은 원칙적으로 극복할 수 없는 분류 오류입니다.

여기에 차트를 게시하고 rsi를 예측 변수로 사용했습니다. 히스토그램 발산을 측정할 수 있습니다.


이것은 덜컥 거리는 소리입니다. 비용이 들지 않고 많은 대상 변수에 대해 임의의 수의 예측 변수를 테스트할 수 있습니다. 나는 때때로 특히 게으른 사람들을 위한 예의로 수행합니다.

 
알렉세이 비아즈미킨 :

지표를 읽는 방법이 명확하지 않습니다.

지표가 아니라 랜덤 포레스트...

OOB, RMS 등에 대한 모델 평가 가능하지만 모델의 결과를 이해하는 것은 불가능합니다.

랜덤 포레스트의 결과를 가격 차트에 부과한 후에야 모델 행동의 특징이 드러납니다.

https://github.com/Roffild/RoffildLibrary/blob/master/Include/Roffild/ToIndicator.mqh 를 사용하여 생성된 차트

 
박사 상인 :

Filter_02 2016 arr_구매

거기에는 클래스 "1"이 "0"을 초과하는 경우도 있으므로 이전에 비해 잘못된 항목이 적습니다. EA에서 이 트리를 사용해 보십시오. 수익 차트에 어떤 내용이 나올지 지켜보는 것도 흥미롭습니다.


y_pred
y_true 0 하나
0
하나


숫자가 있는 첫 번째 열은 필터가 없는 열이고 두 번째 열은 필터가 있는 열입니다.

어쩌면 내가 나무의 논리를 망쳐 놓았습니까?


 void FilterTree()
{
int arr_DonProc=DonProcf();
int arr_DonProcVisota=DonProcVisotaf();
int arr_DonProc_M15=DonProc_M15f();
int Level_Support_D1=LevlSupportf( PERIOD_D1 );
int Level_Support_W1=LevlSupportf( PERIOD_W1 );
int arr_Regressor=RegressorP();
bool BlockBuy= false ;

if (arr_DonProc>= 2.5 )
   {
   if (arr_DonProcVisota>= 7.5 )
      {
         BlockBuy= true ;      
      }
   else
      {
       if (arr_DonProc>= 6.5 )
          { 
             if (Level_Support_D1>=- 2.5 )
            {
               if (Level_Support_W1<= 1.5 )BlockBuy= true ;                  
            }          
          }
       else
          {
             if (arr_Regressor>= 2.5 )
               {
                   if (arr_DonProc_M15>= 4.5 )BlockBuy= true ;
               
               }
             else
               {
                   if (Level_Support_D1< 1.5 )
                  {
                     if (Level_Support_W1<- 1.5 )BlockBuy= true ;
                  }
               }
          }         
      }   
   
   }

if (BlockBuy== true )BuyNow= false ;
SellNow= false ;
}
 
로프필드 :

지표가 아니라 랜덤 포레스트...

OOB, RMS 등에 대한 모델 평가 가능하지만 모델의 결과를 이해하는 것은 불가능합니다.

랜덤 포레스트의 결과를 가격 차트에 부과한 후에야 모델 행동의 특징이 드러납니다.

https://github.com/Roffild/RoffildLibrary/blob/master/Include/Roffild/ToIndicator.mqh 를 사용하여 생성된 차트

그것은 분명하지 않습니다. 분명히 거기에 숲이 없지만 지표 - 아마도 사실은 "숲"의 일부 논리를 처리하고 추론했지만 이것에서 지표가되지는 않았습니다.

그래서 그들이 주는 간증을 읽는 방법을 보여주고 싶었습니까?

 
알렉세이 비아즈미킨 :


숫자가 있는 첫 번째 열은 필터가 없는 열이고 두 번째 열은 필터가 있는 열입니다.

어쩌면 내가 나무의 논리를 망쳐 놓았습니까?


실수가 있었으니,

 if (BlockBuy== false )BuyNow= false ;


 
알렉세이 비아즈미킨 :

그것은 분명하지 않습니다. 분명히 거기에 숲이 없지만 지표 - 아마도 사실은 "숲"의 일부 논리를 처리하고 추론했지만 이것에서 지표가되지는 않았습니다.

그래서 그들이 주는 간증을 읽는 방법을 보여주고 싶었습니까?

CDForest::DFProcess(forest1, netinputs, netoutputs);
indicSymbol.buffer(netoutputs[ 1 ] * 100.0 , 0 );

CDForest::DFProcess(forest2, netinputs, netoutputs);
indicSymbol.buffer(netoutputs[ 1 ] * 100.0 , 1 );
그래프에 실제 숲이 있다고 믿지 않는다면 숲에 대한 생각은 분명히 잘못된 것입니다 ...
 
로프필드 :
그래프에 실제 숲이 있다고 믿지 않는다면 숲에 대한 생각은 분명히 잘못된 것입니다 ...

믿음의 문제는 무엇입니까? 차트에서 구불구불한 선을 볼 수 있습니다. 그리고 이를 해석하는 방법을 이해할 수 없습니다.

 

박사 상인 은 일반적으로 트리를 더 분기해야 하며 결정을 내리는 데 필요한 정보가 거의 없습니다.

 
알렉세이 비아즈미킨 :

숫자가 있는 첫 번째 열은 필터가 없는 열이고 두 번째 열은 필터가 있는 열입니다.

분명한. 트리는 효율적으로 필터링하는 방법을 학습할 수 없었기 때문에 결과는 필터로 눈에 띄게 개선되지 않았으며 트랜잭션이 더 적었습니다. 사실, 좋은 거래와 나쁜 거래 중 일부는 무작위로 필터링되었습니다.

나는 malovhodov만을 위해 2015년에 나무를 훈련했습니다.
filter_02 및 mnogovhodov_02가 2016년에 훈련되었으므로 테스터에서 2016년과 2017년을 비교하는 것이 좋습니다(2017년 - 일반적으로 아카이브에 없는 새 데이터, 이것이 가장 흥미롭게 볼 수 있음).

 
알렉세이 비아즈미킨 :

박사 상인은 일반적으로 트리를 더 분기해야 하며 결정을 내리는 데 필요한 정보가 거의 없습니다.

추가 분기는 저에게 과적합으로 이어졌습니다. 정확도를 높이려면 더 복잡한 모델(숲 또는 뉴런)로 이동해야 합니다.

결국 훈련 데이터에서 100%의 정확도까지 분기할 수 있지만 새 데이터의 그러한 트리가 병합만 된다면 요점은 무엇입니까? 훈련에서와 거의 동일한 새로운 데이터에 대한 결과를 보여줄 수 있는 모델을 훈련시키는 것이 필요하다.

사유: