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

 
また、forecaパッケージが入出力関係をどのように定義しているかも気になるところです。些細なことかもしれないし、そうでないかもしれない。
 
Alexey Burnakov:
私もforecaパッケージがどのように入出力関係を決定しているのかが気になりますね。そこが些細なことかもしれないし、そうでないかもしれない。

私はちょうどラインに目を通して、私は修正または確認させてください、しかし、私の理解によると、いくつかの内部アルゴリズムに基づくパッケージは、特定のランダム変数の予測能力、すなわち将来的にランダム変数のその値を外挿する能力を評価します。トレンドプロットであれば1%、価格刻みであれば0.83%と、私にとっては至極当たり前のことです。そして、それは手法そのものに関わることであり、実際にはその逆で、増分は非定常時系列の トレンドよりもずっとよく予測される、つまり、定常性に近いということです。道具そのものを理解し、その道具が適合する対象に道具を適用する必要があるのです。

一般に、システム分析には誤りがある。

間違いその1。

間違った問題に対して正しい方法を適用すること。

統計学では極めて一般的である。

 
サンサニッチ・フォメンコ

一般的には、本来のメッセージが失われていると思います。私にとっては、モデルに依存しない方法で、使用する予測変数のそれぞれの予測能力を判断することが必要だというのが、もともとの考え方なのです。

モデル非依存の選択の例として、vtreatパッケージがある。データを何らかの方法で解析し、目標値に対する評価を行います。

data(iris)
iris[,5] <- as.numeric(iris[,5]) #пакет  не умет факторы, их нужно сконвертировать в числа
iris_rand <- runif(nrow(iris)*10, min(iris[,1:4]), max(iris[,1:4])) #новых 10 предикторов со случайными значениями
dim(iris_rand) <- c(nrow(iris), 10)
colnames(iris_rand) <- paste0("rand_", c(1:10))
iris <- cbind(iris_rand, iris)
library(vtreat)
treatments <- designTreatmentsN(dframe = iris, varlist = colnames(iris)[1:(ncol(iris)-1)], outcomename = colnames(iris)[ncol(iris)], verbose = TRUE)
treatments
format(treatments)
significance <- treatments$scoreFrame[,"sig"]
names(significance) <- treatments$scoreFrame[,"origName"]
barplot(significance)

ランダムな値を持つ10個の新しい予測子が虹彩テーブル用に作成されます。designTreatmentsNは、各予測子をスコア化し、スコアが低いほど良い。この例では、オリジナルの4つの予測変数(グラフの最後のもの)が明らかに際立っており、ほとんどゼロスコアであり、これは非常に良いことです。予測変数の選択では、まず値が大きいものを削除する。
目標値が2つしかない場合(0/1, TRUE/FALSE, -1/1, 2水準の因子など)には、designTreatmentsCという関数があります。


本パッケージは、y-aware pcaでも使用されています。vtreatパッケージは,予測変数をy-aware区間にスケーリングし,コンポーネントは,ほぼ通常の方法で(再スケーリングとセンタリングを行わずに)さらに作成される.ですから、このパッケージを使って、例えばYを意識したランダムフォレストといった面白いことができるようになります。
詳しくはこちら: https://cran.r-project.org/web/packages/vtreat/vignettes/vtreatScaleMode.html

 
Dr.トレーダー

モデル非依存の選択の例として、vtreatパッケージがある。そのデータを何らかの方法で解析し、目標値のスコアをつけるのです。

ランダムな値を持つ10個の新しい予測変数がアイリステーブル用に作成される。designTreatmentsNは、各予測子をスコア化し、スコアが低いほど良い。この例では、オリジナルの4つの予測変数(グラフの最後のもの)が明らかに際立っており、ほとんどゼロスコアであり、これは非常に良いことです。予測変数の選択では、まず値が大きいものを削除する。
目標値が2つしかない場合(0/1, TRUE/FALSE, -1/1, 2水準の因子など)には、designTreatmentsCという関数があります。


本パッケージは、y-aware pcaでも使用されています。vtreatパッケージは,予測変数をy-aware区間にスケーリングし,コンポーネントは,ほぼ通常の方法で(再スケーリングとセンタリングを行わずに)さらに作成される.ですから、このパッケージを使って、例えばYを意識したランダムフォレストといった面白いことができるようになります。
詳しくはこちら: https://cran.r-project.org/web/packages/vtreat/vignettes/vtreatScaleMode.html

さて、そこで基本に立ち返る。

次のページ

これらのパッケージによって処理された後にのみ、任意のモデルを使用します。このように前処理をすることで、過剰学習が起きないことを期待しています。

 
サンサニッチ・フォメンコ

間違った問題に対して正しい方法を適用すること。

CaretFAの時系列は、説明文に数式がたくさん出てきて、うまく理解できなかったです。新しい値と古い値の相関、フーリエ変換後の周波数プロットの解析、新しいデータでこのプロットがどう変わるかの解析など、何か引っかかるものがあったのですが。そこでは、FXよりも放射線物理学を理解する必要があります :)

パッケージの説明には、DAX, SMI, CAC, FTSEなどのインデックスに 適用した例があり、まさにD1でのインクリメントが使用されています。
小さなニュアンスとしては、この例では価格の時系列はまず対数関数log()を使って処理され、その後に初めて差分が検出されるということです。diff(log(EuStockMarkets[c(100:200),])* 100
しかし、log()を使っても使わなくても、推定結果は変わらず、むしろチャート上でのデータ表示をより便利にするために行ったもので、特に違いは感じられないのですが、どうでしょうか?

 
Dr.トレーダー

CaretFAの時系列は、説明文に数式がたくさん出てきて、うまく理解できなかったです。新しい値と古い値の相関、フーリエ変換後の周波数プロットの解析、新しいデータでこのプロットがどう変わるかの解析など、何か引っかかるものがあったのですが。そこでは、FXよりも放射線物理学を理解する必要があります :)

パッケージの説明には、DAX, SMI, CAC, FTSEインデックスに 適用した例がありますが、使用されているのは D1 インクリメントで、つまりパッケージと目的の両方が正しいということです。
小さなニュアンスとしては、この例では価格の時系列はまず対数関数log()を使って処理され、その後に初めて差分が検出されるということです。diff(log(EuStockMarkets[c(100:200),])* 100
しかし、log()を使っても使わなくても、推定結果は変わらず、むしろチャート上のデータ表示を便利にするために行ったもので、特に違いは感じられません。

このパッケージに関する限り、私にとっての問題は、原則の問題です。

  • は、個々の予測因子の予測力を与えている。
  • それとも予測変数を用いた目的変数の予測能力?

 
SanSanych Fomenko:

このパッケージに関して、私にとっての問題は、原則の問題です。

  • は、個々の予測因子の予測力を与えている。
  • それとも予測変数を用いた目的変数の予測能力?

ターゲット変数と予測変数の間のリンクを探すのではありません。パッケージの作者は、2つのアプリケーションについて書いている-。

1) Omega()を使って、時系列が 全く予測できないかどうかを評価する(0%=「ホワイトノイズ」から100%=正弦波までのスケールで)。もし結果が0%であれば、どのような予測因子を用いたとしても、時系列の挙動を予測しようとすることは不可能である。
2) いくつかの予測変数を取り、同じ関数でそれらを評価し、新しい予測変数を元のものよりもさらに良いOmega()の結果を持つようにpcaに似た新しい予測変数を作成します。これが目標値の予測に役立つかどうかは運次第で、このパッケージはこれらの予測器が何を予測する必要があるかには興味がないのです。ポイントは、予測変数がノイズでなければ、それを使ったモデルはより安定した予測をすることができる、ということです。

 
Dr.トレーダー

ターゲット変数と予測変数の間のリンクは調べない。パッケージの作者は、2つのアプリケーションについて書いています。

1) 時系列が全く予測可能かどうかをOmega()で評価する(0%=「ホワイトノイズ」から100%=正弦波までのスケールで)。もし結果が0%であれば、どのような予測因子を用いたとしても、時系列の挙動を予測しようとすることは不可能である。
2) いくつかの予測変数を取り、同じ関数でそれらを評価し、新しい予測変数を元のものよりもさらに良いOmega()の結果を持つようにpcaに似た新しい予測変数を作成します。これが目標値の予測に役立つかどうかは運次第で、このパッケージはこれらの予測器が何を予測する必要があるかには興味がないのです。要は、予測変数がノイズでなければ、それを使ったモデルはより安定した予測をすることができるということです。

私の疑念を大幅に裏付けてくれました。

ありがとうございます。

パッケージは分類上無駄だと思う。

しかし、外挿型の予測には有効かもしれません。

例えば、フォーキャストパッケージを例にとるとシリーズを3つの要素に分解し、前方に外挿し、足し算をするものです。一歩先行く予報を得ることができるのです。

さて、問題は、どの通貨ペアを取るかです。CaretFAを利用し、いくつかの通貨ペアの予測能力を計算 するために使用します。限られたウィンドウの中では、ウィンドウの移動に伴い、このような予測能力は変化するのではないでしょうか。通貨ペアを選び、それを予測し(あるいは別のパッケージ-たくさんあります)、取引し、すべてのポジションを決済した後に、再び通貨ペアを選びます。

 
Dr.トレーダー

モデル非依存の選択の例として、vtreatパッケージがある。データを何らかの方法で解析し、目標値に対して評価するのです。

虹彩テーブルについては、ランダムな値で10個の新しい予測子が作成されます。designTreatmentsNは、各予測子を評価し、スコアが低いほど良い。この例では、オリジナルの4つの予測変数(グラフの最後のもの)が明らかに際立っており、ほとんどゼロスコアであり、これは非常に良いことです。予測変数の選択では、まず値が大きいものを削除する。
目標値が2つしかない場合(0/1, TRUE/FALSE, -1/1, 2水準の因子など)には、designTreatmentsCという関数があります。


本パッケージは、y-aware pcaでも使用されています。vtreatパッケージは,予測変数をy-aware区間にスケーリングし,コンポーネントは,ほぼ通常の方法で(再スケーリングとセンタリングを行わずに)さらに作成される.ですから、このパッケージを使って、例えばYを意識したランダムフォレストといった面白いことができるようになります。
詳しくはこちら: https://cran.r-project.org/web/packages/vtreat/vignettes/vtreatScaleMode.html

あなたのアヤメとランダムな予測変数のコードを見て、私は全くプログラミングができないことを理解しました、あなたのコードで10行かかったものが3行に収まるのですから...。

そして、このvtreatの選択ですが、RFに内蔵されている同じimportenseとは違うのでしょうか?

 
mytarmailS:

このvtreatの選択は、RFに内蔵されているimportenseとは違うのでしょうか?

Vtreatの方が良い。これは、特定の予測モデルを調整することなく、予測器が対象変数を予測するために全体的にどれだけ良いか/悪いか、すべてを統計的に評価するものです。最大スコアが1/(予測変数の数)の予測変数を使用することが推奨される。例えば、200個の予測変数がある場合、その中から1/200以下の評価を持つものだけを取り出すことができます。予測変数の推定が可能で、すべての推定値がしきい値より高い場合 - モデルをティーチングして新しいデータを予測しようとして失敗する代わりに、他の予測変数の検索を開始する方がよいでしょう。

このパッケージは予測子を1つずつ扱うので、それらの相互作用は考慮されません。また、完全に同一の予測因子や相関の高い予測因子であっても、vtreatは繰り返しのあるものを削除しないので、時々、非常にイライラします。

理由: