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

 
Maxim Kuznetsov #:

効果はあるのか?

ゴキブリ 足と目のある丸いもの)についてのデモ、ルール" では もっと単純なものから始めましょう:前方に異なる角度を向いた9つの目を持つ2Dエージェントで、それぞれの目はその方向に沿って3つの値を感知します(ある最大視認距離まで):壁までの距離、緑色のものまでの距離、赤色のものまでの距離エージェントは、5つのアクションのうち1つを使い、角度を変えてナビゲートする。赤いものはリンゴで、食べると報酬がもらえる。緑色のものは毒で、エージェントはそれを食べると負の報酬を得る。トレーニングは現在のパラメータ設定で数十分かかる。"

をクリックすると、学習が開始され...その後、学習が停止される...。

ゴキブリは緑の点を避けて走り、赤い点を好むはずだが...。

現実には : 学習を停止した後は、多かれ少なかれ前回の動きパターンに従うだけで、赤と緑の区別はつかない。あるいは、私のゴキブリが異常にバカなのかもしれない :-)

学習が 完了する前に 学習停止を押すべきではないからだ。

 
mytarmailS #:

なぜなら、 学習が 完了 する前に学習を止める ことはないからだ。

3時間の学習で、ほとんど忘れていた。

今、ゴキブリは(ほとんど)その通りに走り、緑色のものを避け、赤色のものを食べる。

どうやら、「フィーラー」が1つ少なくなったことが、訓練になったようだ :-)。つまり、ペナルティの緑がある側にあれば、すぐに食べる。逆に、あるトラバースにある赤は避ける。

しかし、これはおそらくシステムのオグリッチなのだろう。

 
Aleksey Nikolayev #:

これは独立した特徴の場合にのみ機能し、それらは同じ価格でカウントされるため、それは不可能である。一変量分布は常に同じ一様ですが、同時に二変量分布は大きく異なることがあります。

同じRに解決策があるかもしれませんが、それを探す必要があるのでしょうか?

Aleksey Nikolayev#:

あなたは重たい列挙の計算がお好きなようですね)我々は(すでにかなりの量の列挙に)特徴タイプによる列挙を追加しなければなりませんし、間違いなく特徴パラメータによる列挙も追加しなければなりません。

とはいえ、あなたのアプローチには合理的な粒子があるように思えます。

そう、どうやら私は実験なしで結果を予測するのが苦手なようだ。だから、ステップの一つでエラーが忍び込むかもしれない多段階の論理計算を構築するよりも、テストしてしばしば失望する方がいい。

サンプルをサブサンプルに分けることを学んだとしても、次の問題は、現在のサンプルをどのように正しく分類し、必要なモデルを適用するかということだ。

 
mytarmailS #:
多分、サンプルの均質性という統計的基準の代わりに、(スライディングウィンドウで)ダイナミクスにおけるモデルの特徴の重要度の変化を見るだけだろう。

もし現在の状態と以前の状態に強い不一致があれば、それはすでに別のサンプルに入っていることを意味する。

長所
1.統計をプログラムする必要がない。箱から出してすぐにテストができる。
2.サンプリング時間の変化だけでなく、ターゲットの変化も考慮される。

どの瞬間に見るべきですか?トレーニングの瞬間ですか?また、どのようにダイナミクスを観察すればよいのでしょうか?

ダイナミクスでモデルの葉の活性化を表示するスクリプトがあります。トレーニングセグメントでの活性化の平均頻度を計算し、テストセグメントでの偏差を見るべきでしょうか?そうすれば、少なくとも理論的にはモデル効率の低下を監視することができる。

 
Aleksey Vyazmikin #:

どの瞬間に見るのか、トレーニングの瞬間に見るのか。また、どのようにダイナミクスを見るのか、どのように実現するのか?

私は、モデルの葉の活性化を動的に表示するスクリプトを持っています。トレーニング・セグメントでの葉の活性化の平均頻度を計算し、テスト・セグメントでの偏差を見ればいいのではないでしょうか?そうすれば、少なくとも理論的には、モデル効率の低下を監視することができる。

古いモデルを見ても意味がない。市場の変化を捉えていないのだから...。

提案されたとおりに実施することを提案します)))))
スライディング・ウィンドウでモデルを再学習し、サインの重要性を観察する。ウィンドウ


以下は、5つの特徴と1つのバイナリターゲットからランダムに生成されたサンプルの例です。

フォレストとフィッシュセレクタ

X <- matrix(rnorm(1000),ncol = 5)
Y <- as.factor(sample(0:1,nrow(X),replace = T))

head(X)
head(Y)

#install.packages("randomForest")
library(randomForest)
rf_imp_mat <- matrix(ncol = ncol(X),nrow = nrow(X))
for(i in 30:nrow(X)){
  ii <- (i-29):i
  rf <- randomForest(Y[ii]~.,X[ii,],ntree=100)
  rf_imp_mat[i,] <- importance(rf)[,1]
}

#install.packages("FSelectorRcpp")
library(FSelectorRcpp)
fs_imp_mat <- matrix(ncol = ncol(X),nrow = nrow(X))
for(i in 30:nrow(X)){
  ii <- (i-29):i
  infg <- information_gain(y = Y[ii],x = as.data.frame(X[ii,]))
  fs_imp_mat[i,] <-  infg$importance
}

par(mfrow=c(1,2))
matplot(rf_imp_mat , t="l",lty=1,main="rf_var_imp")
matplot(fs_imp_mat , t="l",lty=1,main="fs_var_imp")


R-kaではもちろん、必要でない場合はサイクルで書く習慣はないが、このスタイルは新参者を混乱させるし、私のような中間業者も混乱させる......。

しかし、このように書けば、コードは3 倍少なくなり、結果は同じである。

X <- matrix(rnorm(1000),ncol = 5)
Y <- as.factor(sample(0:1,nrow(X),replace = T))
idx <- embed(1:nrow(X),dimension = 30)[,30:1]

library(randomForest)
rf_imp_mat <- t(apply(idx,1,function(i) importance(randomForest(Y[i]~.,X[i,]))[,1]))
library(FSelectorRcpp)
fs_imp_mat <- t(apply(idx,1,function(i) information_gain(y=Y[i],x=as.data.frame(X[i,]))$importance))

par(mfrow=c(1,2))
matplot(rf_imp_mat , t="l",lty=1,main="rf_var_imp")
matplot(fs_imp_mat , t="l",lty=1,main="fs_var_imp")


また、R-kaで利用可能な セレクタの おそらく5%は、どのようなテイストにも対応できるよう、 さまざまなセレクタが 用意されている。

GitHub - FrancisArgnR/R-FeatureSelection-Packages: Brief guide to feature selection packages in R
GitHub - FrancisArgnR/R-FeatureSelection-Packages: Brief guide to feature selection packages in R
  • FrancisArgnR
  • github.com
Feature selection or variable selection in machine learning is the process of selecting a subset of relevant features (variables or predictors) for use in model construction. Packages FSinR Boruta caret spFSR varSelRF CORElearn FSelector
 

あるいは、2つか3つの通貨の窓を見て、3つ目の通貨を遅らせて取引する。

すなわち、一日の後半を見る EUR、CHF USD CADに、早朝に開く JPY (AUD、NZD)...ので、システムは、USDの傾向を決定するために学習し、 "それは腐っていない "前に購入する時間があった。

ただ、一口に「すべての道は行き尽くされた」と言っても、利用可能な手法でそこから魚を取り出すことは不可能であることが怖い。

 
何かを発明するためには、研究対象を定義し、その特性を決定する必要がある。
 
Maxim Dmitrievsky #:
何かを発明するためには、研究対象を定義し、その特性を定義する必要がある。

研究対象やその特性を定義するのは時期尚早だ。そんなに意地悪なことを言わないで!

 
Evgeny Dyuka #:

研究対象やその特性を定義するのは時期尚早だ。そんなに意地悪を言わないでください!

相場を時系列として研究し始めると、他の時系列には見られない特殊性に気づくかもしれない。おそらく、これらの特徴にはパターンがあるのだろう。そうですね、ラグ特徴を使って直接自己回帰や分類ですべてを引き出せるわけではありません。
 
Maxim Kuznetsov #:

(CodeBaseのリンクで撃たれないことを祈るよ :https://www.mql5.com/ru/code/36558

このインジケーターは、「黒/白」のサインを表示(要約)するだけです。

バー・サインはここで表示することにしよう。

私のささやかなアーカイブを掘り起こして掲載します。

もちろん面白いし、反論はしないが、そこにも非定常性がある。

だから、1より少し低い確率で予測されるんだ。

しかし、基本的には、今が上昇なら、次のバーは下降する。

そして、このような若いTFMの動きは、古いTFMにも反映されます。

そのため、トレンドは一直線ではなく、プルバックが多く、その期間もバーサイズも若いものは複数になります。

しかし、フーリエを適用すれば、それらの波を見つけることができるように思えますが、そうではありません。

なぜなら、時間スケールは同じように前後に変調しているからである。

この奇跡を理解するのは容易ではないし、正面からやれば疑問だらけである。

例えば、値動きを左から右へ、あるいは右から左へと考えることができる。

そうすれば、前進と後退、上昇と下降を得ることができる。

理由: