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

 
エフゲニー・デューカ
1.そうなんです、すべての選択肢をクリアしなければならないんです。問題は、時間がかかりすぎることです。
2.試してみたら悪化した。
3.彼女が使っているものをどうやって知ることができますか?ブラックボックスだから、全部食べさせるんです。

MTテスターのオプティマイザーのようなハイパーパラメーターオプティマイザーがあります。24時間セットしておくと、それを拾ってくれるんです。

うまくいくのを待つのは退屈ですが、これはNSの特殊性で、厳密な科学はなく、経験(自分と誰かの)と直感だけです。私の結果は、ここでもプライベートでも共有することができます。

先ほどトレーニング用の例を掲載しました。ネットワークにシグナルを買うことを教えるというものです。その後、逆張りをすれば、ネットワークは売りシグナルを出すはずです。信号があるかないかの二値分類である。ネットワークに売買を認識させることもできますが、これはより悪いことだと思います。出力の範囲は0-1に限定され、買いだけを探す場合は2つのクラス(買いがある、買いがない)に分かれ、閾値は0.8ずつ動かせる。 買いか売りかを探す場合は0-1は買い、売り、その中間の3つのセクターに分かれる。買いシグナルだけを探すと、学習例が2倍(フリップインプット)、ネットワークサイズが小さい(タスクが簡単、必要なニューロンが少ない)、学習時間が短い、解が簡単(1クラスだけを考える)ですが、これはあくまで理論上の話です。

ネットワークが自分で機能を探して、価格と希望のシグナルを与えれば、それだけですべてをやってくれるというアイディアがあります。lstmで始めたのですが、完璧なようで今のところそうでもないです。普通のネットも試してみたいし、ダメならこの先どうなるのか考えてみたい。CNNはちょっと面倒くさいですね、レイヤーやコアの構成を調整するのに疲れました。おそらく、ウェーブレットを通常のネットワークに投入する方が簡単なのでしょう。もし、それが私に合わなければ、入力信号の選択にもっと時間を費やさなければなりませんが、この場合、私は疑問を持っています。それは、本当に必要なのでしょうか。「クラシック」システムを使う方が簡単で、より分かりやすく、信頼でき、経済的でテストしやすいでしょう。

また、数字だけを見て、どのように結果を分析するのですか?これはあなたが使っているコードですか?

plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])

トレイとテストでエラーという2つのグラフを作ると、ネットワークに何が足りないのか、どういう方向に動けばいいのかがわかる。

 
ロールシャッハ

私もカウント待ちを躊躇しましたが、これはNSの特殊性で、厳密な科学はなく、経験(他人や自分の)と直感だけです。結果をここで共有することも、プライベートで共有することもできます。

絵の話なのか、もう市場の話なのか。

また、結果をどのように分析しているのか、数字だけを見ているのか?これはあなたが使っているコードですか?

トレイ用とテスト用の2つのチャートを作り、それを使って、ネットワークに何が足りないのか、どの方向に進めばいいのかを理解することができます。

実プロセスにいることが容易にわかる ))

最初は標準的なアルゴリズムで描きましたが

import matplotlib.pyplot as plt

しかし、ノイズが大きいため、10エポック後にはすでに水平線上にプロットされており、意味がありませんでした。
私は2値分類を持っていて、各回答におけるネットの確実性のレベルを分析します。例えば、正しい答えは0 1でネットは0.4 0.6を与える - これは良い答えです。より頻繁に正しい答えは0 1でネットは0.49 0.51を与えます
答えが数千ある場合、確実性によってそれらをグループ化して分析を行うことが可能です。


 
ロールシャッハ

その結果、実際には、ニューラルネットワークが理解し始めているが、今のところかすんでいる、M2に関する今日のユーロである。
青は上昇、黄は下降の予報です。


 
エフゲニー・デューカ

本番中であることが一目でわかる ))

最初は標準的なものを使って描いていました。

しかし、ノイズが大きいため、10エポック後のグラフは水平線上にあり、ほとんど意味がない。
私は2値分類を持っていて、各回答におけるネットの確実性のレベルを分析します。例えば、正しい答えは0 1でネットは0.4 0.6を与える - これは良い答えです。より頻繁に正しい答えは0 1でネットは0.49 0.51を与えます
答えが数千ある場合、確実性によってそれらをグループ化して分析を行うことが可能です。


グラフを掲載していただけますか?エポック数が多いほど、またバッテンサイズが小さいほど、重みの変化回数は多くなります。また、オプティマイザーのlerning_rateを+-1桁変えるのも意味がある。オプティマイザーは何を使っていますか?

 
ロールシャッハ

グラフを掲載していただけますか?エポック数だけでなく、バッチサイズも変更する必要があり、エポック数が多く、バッチサイズが小さいほど、重みを変更する回数が多くなる。また、オプティマイザでlerning_rateを+-1桁変更するのも意味がある。オプティマイザーは何を使っていますか?

チャートについては、チュートリアルを実行して、それから......。しかし、何も面白いことはありません。縦に下がってから横になり、チュートリアルのような滑らかな減少はありません ))
Bach 128、同じことを話しているのであれば、です。それは常に128はTPU、そのような要件と関係するものであるべきです。
エポックも変更しなくなった、通常150を過ぎると何も変わらない。
SGDと連動させることができない。
 
ロールシャッハ

これが私のグリッドで、ここでレイヤーの数を動的に変更します。

def make_model(arr_size, lays):
  sgd = SGD(lr=0.01, decay=1 e-6, momentum=0.9, nesterov=True)

  #res = 2 # количество ответов
  act = "softmax"
  #act = "sigmoid"
  #opt = sgd
  opt = 'adam'

  model = Sequential()

  if lays == 1:
    model.add(Dense(int((arr_size-res)*k), input_dim=(arr_size-res), activation='relu'))
    model.add(Dropout(dropout))

  if lays == 2:
    model.add(Dense(int((arr_size-res)*k), input_dim=(arr_size-res), activation='relu'))
    model.add(Dropout(dropout))
    model.add(Dense(int((arr_size-res)*0.5*k), activation='relu'))
    model.add(Dropout(dropout))

  if lays == 3:
    model.add(Dense(int((arr_size-res)*k), input_dim=(arr_size-res), activation='relu'))
    model.add(Dropout(dropout))
    model.add(Dense(int((arr_size-res)*0.5*k), activation='relu'))
    model.add(Dropout(dropout))
    model.add(Dense(int((arr_size-res)*0.3*k), activation='relu'))
    model.add(Dropout(dropout))

  if lays == 4:
    model.add(Dense(int((arr_size-res)*k), input_dim=(arr_size-res), activation='relu'))
    model.add(Dropout(dropout))
    model.add(Dense(int((arr_size-res)*0.7*k), activation='relu'))
    model.add(Dropout(dropout))
    model.add(Dense(int((arr_size-res)*0.5*k), activation='relu'))
    model.add(Dropout(dropout))
    model.add(Dense(int((arr_size-res)*0.3*k), activation='relu'))
    model.add(Dropout(dropout))

  #model.add(Dense(int((arr_size-res)*0.1*k), activation='relu'))
  #model.add(Dropout(dropout))

  model.add(Dense(res, activation=act))

  if res==1:
    ls="binary_crossentropy"
  else:
    ls="categorical_crossentropy"
  model.compile(loss=ls, optimizer=opt, metrics=['accuracy'])
  return model
 
エフゲニー・デューカ

これが私のグリッドで、ここでレイヤーの数を動的に変更します。

Dropoutの代わりに他の方法を試すことができる、ニューロンの数を減らす。重みの初期化、正規化を追加。入力されたデータは何らかの処理をされているのでしょうか?入力データを1桁増やすと、結果が良くなりました。 やはり、非定常性を取り除かないとダメなようです。

 
ロールシャッハ

Dropoutの代わりに他の方法を試してみてはどうでしょうか、ニューロンの数を減らしてください。重みの初期化、正規化を追加。入力されたデータは何らかの処理をされているのでしょうか?入力データに一桁掛けると良い結果が出たので、非定常性を取り除く必要があるようです。

どのパッケージも正確な結果を得ることはできません。どのNSも確率的に上か下か不明な予測しかできない。価格はニューラルネットワークに従わず、簡単に逆行することができる。65%という選択肢は、すでに許容範囲内です。

 
Uladzimir Izerski:

どのパッケージも正確な結果を得ることはできません。どのNSも確率的に上か下か不明な予測しかできない。価格はニューラルネットワークに従わず、簡単に逆行することができる。65%という選択肢は、すでに許容範囲内です。

こちらは56%。青が本来あるべき姿、赤がネットワークのレスポンスです。パーセンテージに意味はない。

48%で、さらに低い数字ですが、少なくとも何らかの効果はあります。


 
ロールシャッハ

Dropoutの代わりに他の方法を試してみてはどうでしょうか、ニューロンの数を減らしてください。重みの初期化、正規化を追加。入力されたデータは何らかの処理をされているのでしょうか?入力データに1桁の掛け算をした方が良い結果が出た。 やはり非定常性を取り除く必要があるようだ。

そうですね、全部通らないと、ダメですね。
パラメータが結果に与える影響を理解するのに適しているので ぜひ試してみてください。
Tensorflow — Neural Network Playground
Tensorflow — Neural Network Playground
  • Daniel Smilkov and Shan Carter
  • playground.tensorflow.org
It’s a technique for building a computer program that learns from data. It is based very loosely on how we think the human brain works. First, a collection of software “neurons” are created and connected together, allowing them to send messages to each other. Next, the network is asked to solve a problem, which it attempts to do over and over...
理由: