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

 
マキシム・ドミトリエフスキー
だから、この人生で何を信じていいのかわからない...すべてはダブルチェックが必要だ

+1 - 外れ値を除去せずにスタートしたところ、データの中心(またはゼロ)に強いシフトが発生しました。異常値を取り除いた後は、すべてが安定するようになりました。

 
マキシム・ドミトリエフスキー

ということは、ついにjPredictorではないのですか?:)


なぜ、具体的に彼と...。ライブラリなどよりも優れたモデルを構築することができるのです。データを徹底的に揺さぶるから...。

 
ミハイル・マルキュカイツ

なぜ彼なのか、具体的には...。ライブラリなどよりも優れたモデルを構築することができるのです。データを徹底的に揺さぶるから...。


でも、時間がかかる...。:)

 
エリブラリウス

+1 - 最初、外れ値を除去せずにやってみたところ、終端データの中心(またはゼロ)に強いシフトが発生しました。異常値を取り除いた後は、すべてが安定するようになりました。


正規化によってシフトの問題が発生することがあるので、すべての入力を増分値の対数で表現し、正規化が必要な場合は中心が常にゼロになるようにしています。

しかし、一般的には、スパイクを取り除くことで、異常な箇所でスケールが大きくずれることがないようにしています。

 
マキシム・ドミトリエフスキー

でも、時間がかかる...。:)


だから、統計的にインプットの数を減らしていくと、そのうち十分なトレーニングができるようになるんです。1営業日でモデル+レベル4ブーストをやりました。これでまたバウンスモデルを作れば、何週間でも使えるはずです。少なくとも私はそう願っている...。

 
マキシム・ドミトリエフスキー

正規化によってシフトの問題が発生することがあるので、すべての入力を増分値の対数で表現し、正規化が必要な場合は中心が常にゼロになるようにしています。

しかし、一般的には、NSが異常の上に重みを置かないように、スパイクを取り除くことが多いようです...。

まあ、実際、対数も似たようなものですが、捨てないし、強い排出をもたらすだけです。しかし、私はそれらも捨てずにMAXと同等に考えています。if(v>max){v=max;}とする。

一般的には、予測因子ごとにあらかじめ許容範囲を決めておき、その範囲内ですべての実験を行いたいと考えています。私の方法と対数法でも、サンプルごとにデータのずれが生じますから。

 
エリブラリウス
実は、対数も似たようなもので、強いスパイクを捨てずに近似しているだけなのです。しかし、私はそれらも捨てず、MAXと同等に考えています。if(v>max){v=max;}とする。

そうそう、そうなんですよねぇ......)

まず、log(close[0]/close[n])のようないくつかの系列を取る。

そして

void NormalizeArrays(double &a[]) //нормируем от -1 до 1
  { 
   double multiplier;
   double x_min=MathAbs(a[ArrayMinimum(a)]);
   double x_max=MathAbs(a[ArrayMaximum(a)]);
   if(x_min>=x_max) multiplier = x_min;
     else multiplier = x_max;
   for(int i=0;i<ArraySize(a);i++)
     {
      a[i]=a[i]/multiplier;
     }
  }
で、小さいサンプルを取れば、大きいサンプルで予め 定義しておくので、変わることはありません。
 
マキシム・ドミトリエフスキー

そうそう、そうなんですよねぇ......)

まず、log(close[0]/close[n])のようないくつかの系列を取る。

そして

最小値と最大値がミラーリングされていない場合(例:-100と90)、例えば-1から0.9のように正規化されることになります。しかし、中心は常に0になります。オフセットを偏向させる上で、興味深いアプローチですね。

と、どうやら取る必要があるようです。

a[i]=a[i]/Abs(multiplier);

そうしないと、ネガティブミンはすべてをひっくり返します。

 
エリブラリウス

最小値と最大値がミラーリングされていない場合(例:-100と90)、例えば-1から0.9のような正規化が行われることになります。しかし、中心は常に0になる。オフセットの対策として興味深いアプローチだ。

そして、どうやらそうすべきなのでしょう。

そうでないと、マイナスミンですべてがひっくり返る。


そう、中心がずれないことが重要なのです。

MAXとMINはすでにアビスがあります。

double x_min=MathAbs(a[ArrayMinimum(a)]);
double x_max=MathAbs(a[ArrayMaximum(a)]);
 
マキシム・ドミトリエフスキー

MAXとMINのアビスはすでに上がっている

ミスド)

もうひとつ、例えば0ではなく、0.5とした場合、あなたの方法を用いても、サンプルごとに「浮く」ことになります。

各入力に対して厳密に手動で範囲を設定するしかないのです。しかし、それをどのように判断するかは明確ではありません。例えば、1年間データを走らせ、1〜5%の異常値を排除することも可能です。そして、1年間一緒に仕事をする。1年後には変わっているでしょうが。