トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 935

 
FXMAN77 です。

ノイズ予測因子 "を特定するには?このように関連性で選択して削除してみると、結果が悪くなってしまいました。

ここでもたくさんのおすすめが紹介されています。

私は非常にシンプルな方式を使っています。正確さを求めているわけではありませんが、非常にわかりやすいと思います。

予測変数(ベクトル)を2つに分割し、一方はターゲットのあるクラスを指し、もう一方はターゲットの別のクラスを指すようにします。そして、それぞれのパーツのヒストグラムを作って比較し、一致すればノイズ、乖離すれば何らかの予測力を持つというわけです。完全に乖離しているのであれば、予測能力は100%です(見たことはない)。ヒストグラムの交点は、原理的に克服できない分類誤差である。

グラフをここに掲載したのは、予測因子としてrsiを持っていたからです。ヒストグラムのダイバージェンスという指標を作ることができる。


これはガラガラです。ゼロコストで、大量のターゲット変数に対して任意の数の予測変数をチェックすることができます。私は特に怠惰な人への礼儀として、時々これを行います。

 
アレクセイ・ヴャジミキン

インジケーターの読み方がよくわからない。

指標ではなく、ランダムフォレストなのですが・・・。

OOBやRMSなどでモデルを評価することはできても、その結果を理解することはできない。

ランダムフォレストの結果を価格チャートと組み合わせて初めて、モデルの動作の特異性を検出することができる。

https://github.com/Roffild/RoffildLibrary/blob/master/Include/Roffild/ToIndicator.mqh を用いて生成したグラフ

 
Dr.トレーダー

フィルター_02 2016 arr_Buy

クラス "1 "の数が "0 "を超えることもあり、以前と比べて誤入力が少なくなっています。EAでこのツリーを試してみてください?利益チャートがどうなるのか、自分でも気になるところです。


y_pred
y_true01
0
1


数字を含む最初の列はフィルタリングされておらず、2番目の列はフィルタリングされている

もしかして、ツリーのロジックを台無しにしちゃった?


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 を用いて生成したグラフ

森」ではなく、「指標」であることは明らかです。「森」の論理を処理して出力しているのかもしれませんが、「指標」ではなくなってしまうのです。

では、何を示したかったのか、どう読めばいいのか、何を与えるのか。

 
アレクセイ・ヴャジミキン


数字の入った最初の列はフィルターなし、2番目の列はフィルター付き

もしかして、ツリーのロジックを台無しにしちゃった?


間違いがありました。

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);
グラフが本物の森だと思えないのなら、森という概念は明らかに間違っている...。
 
ロフィルド
グラフが本物の森だと思えないのなら、森という概念は明らかに間違っている...。

それが信仰の問題とどう関係があるのでしょうか。グラフの中に四角いものが見えるのですが、それをどう解釈したらいいのかわからないのです。

 

トレーダー博士 一般的には、さらに枝分かれしていく必要があり、判断するための情報が非常に少ないのです。

 
アレクセイ・ヴャジミキン

最初の列の数字はフィルタなし、2番目の列はフィルタありです。

なるほど。ツリーは適切なフィルタリングの方法を学ぶことができなかったので、フィルタリングしても結果はあまり良くならず、ただお得感が薄れるだけでした。基本的に良いトレードと悪いトレードをランダムにフィルターにかける。

malovhodovのみ2015年にツリーを学習させました。
Filter_02とmnogovhodov_02は2016年に学習させたもので、テスターで2016年と2017年を比較した方が良い(2017年-アーカイブに全くなかった新しいデータ、これが最も興味深い)。

 
アレクセイ・ヴャジミキン

トレーダー博士、一般的にはもっとツリーを枝分かれさせる必要があり、判断材料が非常に少ないのです。

さらに分岐させるとオーバーフィットになることがわかりました。精度を上げるためには、より複雑なモデル、つまりフォレストやニューロニックに移行する必要があります。

トレーニングデータでは100%の精度で分岐させることができますが、そのようなツリーが新しいデータで失敗するだけなら、何の意味もないでしょう。新しいデータに対しても、学習データとほぼ同じ結果を示すようなモデルを教えたい。

理由: