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

 
Dr.トレーダー

前回の記事に少し補足です。いいえ、デルタはありません。試してみるしかないですね。

とにかく、あなたのデータで相関関係を探してみました。イエスよりノーの方が多い。たまたま、電車の中で適当に撮った写真の半分に何か書いてあったんです。残りの半分も確認し始めたが、同じ相関はない。全く無いか、あるいは、良い依存関係が見つからないようなデータの作り方をしていることが判明した。

でも、もう一度やってみます。感想を述べます。

アレクセイ

 

このデータには何か足りないものがあるのではないだろうか。最初の記事の課題のように、この6つのエントリーのうち1つでもサンプルから外せば、結果は予測不可能になるのです。FXは明らかに自身の過去の価格、時間帯などに依存します。そして、この「itd」こそが、私のデータに欠けているものであり、それゆえ、モデルは単に規則性を見いだし、論理を記述することができないのです。レはどうやら、最適化の際に「低から高を引く」といった組み合わせをいろいろ試して、その中からベストなものを選ぶということができないようで、そういうものはサンプル自体に追加する必要があるようです。現在、FXのデータをcsvで保存するスクリプトを作り直し、そこに多くの差分と、ジグザグの過去の頂点までの距離をアドバイスに従って追加しています。後日、新しいデータファイルを投稿して実験してみます。

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

予測変数の元のセットをノイズからクリアにする問題を、より高い品質で解決すると思われる記事を多数添付します。残念ながら、今は試す時間がありません。もしかしたら、誰かが試して結果を投稿してくれるかも?

その記述されたプロセスを繰り返すことができました。結果によると、私の予測変数のセットは、0.1%の信頼度で結果を記述している、とか......。私の知識を超えた理論がたくさんあり、すべてを理解したわけではありません。

3つのファイルを追加しました。そこでcsvファイルのパスを変更すれば、実行できるようになります。必要な結果はcsvの最後の列で、それ以外はすべて予測値です。事前に何も正規化せず、そのままのデータを送り込む。

1)主成分回帰 01.記事の序文にあるいくつかのコードですが、コードを実行するとエラーが発生するため、何かが足りないようです。各入力に点数をつけて、グラフを描いてくれるはずなのですが、残念ながら、何をどう応用すればいいのかがわかりません。

2)主成分回帰 03.主成分回帰 その2:Y字回復法。最初の部分は、別の弱いアルゴリズムだと記事に書いてあったので、飛ばしました。
コードは2つのパートに分かれており、各パートの後にRで描かれたチャートを見るために、それらを次々に実行する必要があります。

最初の実行-ファイルから2番目のステップの始まりまですべてをコピーして実行する必要があります(2番目のステップの始まりは太字のSTEP 2で強調表示されています)。Rコンソールには、入力が持つ値が小さいほど良いという表が表示されます。値=1=ゴミさらにグラフ、そこでは表と同じように線が長いほど悪い。

次に、ステップ2のコードを実行する必要があります。最後にグラフができ、入力に関連する線が長いほど信頼性が高い(ステップ1ではその逆だった)。また、コード内にexamplePruneSig変数があり、ステップ1の表のpsig値に従って入力をふるい分ける役割を担っている。すべての入力の尤度の変換値を見たい場合は、変数値=1に設定することができる。第1ステップでは評価が低かった入力が、第2ステップでは良くなったということもあり得るからだ。何らかの閾値をとるか、examplePruneSig = 1/number of_inputsとすることが推奨されるが、厳密な指示はない。

第3段階は、主成分分析(prcomp)そのものである。これはまた新しい発見ですが、要はこの関数は「主成分」(PC)(内部変数のようなもので、目的の結果が依存するもの)をたくさん出力しようとするものなのです。これらの内部変数は、それぞれ異なる入力データに依存する。そして、そのようなPCの中から、結果を確実に判断できる最小限の集合を見つけ出すことが課題となる。そして、結果として得られる予測変数のサンプルは、それ自体がその最小セットに該当するPCの予測変数となるのです。
記事自体はこの問題を解決するものではなく、最初の2台のPCを取り上げ、成功するかしないかを見ているだけです。でも、見落としがあるかもしれないので、prcompを理解している人は自分で読んだ方がいいと思います。
しかし、このステップの最後には、最初の5台のPCと、そのPCが使用する入力の図が描かれることになります。図中の線が長いほど、その入力は重要であることを意味します。

第4、第5、第6ステップ - 訓練データとテストデータで結果を評価する。


3) 主成分回帰 04.主成分回帰03と同じことをする他のパッケージの関数です。しかし、PCをふるい落とし、95%の精度で結果を表現できるものを最低限残すことができるという特典があります。
しかし、適切な例題やグラフがないので、Principal Components Regression 03のようなものを使うしかないのでしょう。


tl;dr:

1)ノイズの多い値をふるい落とす。主成分回帰03 "というファイルを取り出し、2段階目までのコードのみを実行する(2段階目は含まない)。 Rには、psig値が閾値以下の入力のみを取り出した表が格納されるはずである。の場合、ノイズとなりランダムとなる。"0 "が良い。(1/入力数)の閾値は不確実である。この方法は、入力が正しくサンプリングされていることを保証するものではなく、むしろ本当にランダムでノイズの多い値を除去するものである。

2)より複雑なアプローチ狡猾なアルゴリズムで主成分をいくつか作り、それを使って結果を計算することができます。PCは、モデル化されているモデルの中で起こっている何らかの内部プロセスを記述する関数の一種である。そして、モデルそのものの結果が、相互作用するPCの集合体なのです。次に、結果を高い精度で表現するPCの最小セットを取り出し、そのPCに使用される入力を調べます。Principal Components Regression 04 "というファイルによって、そのようなPCの最小セットを得ることができますが、それをさらにどうすればよいかは不明で、使用した予測因子を引き出す必要があります。

ここでもう一度、記事そのものと、それに対するコードを紹介します。

http://www.r-bloggers.com/principal-components-regression-pt-2-y-aware-methods/

https://github.com/WinVector/Examples/blob/master/PCR/YAwarePCA.Rmd


Principal Components Regression, Pt. 2: Y-Aware Methods | R-bloggers
Principal Components Regression, Pt. 2: Y-Aware Methods | R-bloggers
  • Nina Zumel
  • www.r-bloggers.com
In our previous note, we discussed some problems that can arise when using standard principal components analysis (specifically, principal components regression) to model the relationship between independent (x) and dependent (y) variables. In this note, we present some dimensionality reduction techniques that alleviate some of those problems...
 
Dr.トレーダー

このデータには何か足りないものがあるのではないだろうか。最初の記事の課題のように、この6つのエントリーのうち1つでもサンプルから外せば、結果は予測不可能になるのです。FXは明らかに自身の過去の価格、時間帯などに依存します。そして、この「itd」こそが、私のデータに欠けているものであり、それゆえ、モデルは単に規則性を見いだし、論理を記述することができないのです。レはどうやら、最適化の際に「低から高を引く」といった組み合わせをいろいろ試して、その中からベストなものを選ぶということができないようで、そういうものはサンプル自体に追加する必要があるようです。現在、FXのデータをcsvで保存するスクリプトを作り直し、そこに多くの差分と、ジグザグの過去の頂点までの距離をアドバイスに従って追加しています。後日、実験用の新しいデータファイルをアップします。

さらに検索してみた。そして、バリデーションチェックを行った。しかし、発見された依存性は確認されなかった。全体として、データの情報量が不足しているように思います。インプットのリストを広げてみてください、はい。

そして、私のFXのデータはこちらです。https://drive.google.com/drive/folders/0B_Au3ANgcG7CYnhVNWxvbmFjd3c

dat_train_final は、モデル学習用のファイルである。10年間にわたる5つの通貨ペアの履歴と、私のすべての予想が含まれています。

Many_samples - Rで読み込む必要があります。これはリストです。すべての要素に検証用サンプルがあり、全部で49個あります。そのうちのいずれか、またはすべてを検証することができます。

Meet Google Drive – One place for all your files
  • accounts.google.com
Google Drive is a free way to keep your files backed up and easy to reach from any phone, tablet, or computer. Start with 15GB of Google storage – free.
 

リンク先が空のフォルダーになってしまい、ファイルが見れません。

とにかく、ここに私の新しいトレーニングモデル用のファイルがあります。上記のprincipal-components-regression-pt-2-y-aware-methodsの記事に従って解析したところ、信頼できるデータは結果の1%未満であることが判明しました。
(RData by SanSanychではRat_DF1でこの数値が10%以上になっています)なので、またゴミが出たようです。このファイルでモデルを学習するのは難しいので、予測因子を選別するために学習したい場合に適しています。

アーカイブには2つのファイルが含まれています。条件は、最初のファイルでモデルを学習し(テストと検証のためにいくつかのチャンクに分割するのが便利です、デフォルトではRattleは75%/15%/15%に分割します)、入力が選択されてモデルが学習されたら、2番目のファイルで物理テストを行うというものです。もし誤差が45%以下であれば、FXでそのようなモデルを使って取引するチャンスがあります。利益は出ないかもしれませんが、ブローカーから取引 回数に応じたボーナスやリベートを得ることができます。2つ目のファイルの分類誤差が40%以下であれば、これはすでに利益を生む戦略である。

ファイル:
 
Dr.トレーダー

2) 主成分回帰、Pt.2:Yを考慮した手法。最初の部分は、記事によると、別の弱いアルゴリズムとのことなので省略しました。

私が思うに、もしかしたら間違っているかもしれませんが、あなたの結果の不確実性は、主成分法の本質を理解していないことに起因しています。そして、そのエッセンスは次の通りです。

既存の予測変数から、いくつかの新しい有用な特性を持つ新しい予測変数を作成します。

結果は、ヘッダーにPC1、PC2...とある表で示され、表の行の名前は予測変数の名前、各PCの下の列は数字- PCの値を形成するために最初の予測変数に掛ける必要のある係数-です。つまり、あるバーについて、初期予測変数の値を取り、係数を掛けてPC値を求め、次のバーという具合に。その結果、例えばAskのような最初のベクトル以外に、もう1つのベクトルを得ることができます。

表中のPCは全てオーダーメイドです。1つ目は、元の集合の変動を最もよく説明するMS、2つ目は、1つ目のMSから残ったものから変動を最もよく説明するMSです。例えば、PC1=0.6、PC2=0.2とすると、PC1+PC2の合計で変動の0.8を説明することになります。通常、大規模な予測変数のセットでは、これらのまさに「主成分」の5-6個で変動の95%以上を説明するのに十分である。これは、予測変数のほとんどがノイズであり、その中に本当の「主」成分がある場合の話です

古典的な「主成分」について説明しました。この論文は、古典的なものとは対照的に、対象変数に関する変動を計算しており、私たちにとって興味深いものです。一方、閾値は、完全に絶望的な予測変数の集合から何かを選び出すために必要である。これは、私たちには関係ないように思います。例えば、社会学の統計では、追加で何かを収集することは非常に難しいので、それに関連しています。私たちの場合、1つの通貨ペアでも膨大な数の予測器を構築することができます。

これらの基本的な構成要素について、もう一回実行(ヒットアンドアウェイ)してみてはいかがでしょうか?

PS.

1.主成分は、生データの正規化を必要とすることを忘れてはならない

2.その結果、主成分は互いに独立であるという驚くべき性質を持っている。

3.主成分を予測することができる。

 

わかりました、わかりやすい説明ありがとうございました。このモデルのことは、記事で初めて知りました。PC1とPC2,3,4,...は係数ではなく、異なる予測変数の集合に対応するのでは?確かに係数の表を見て、今、どこで何を手に入れればいいのかがすぐにわかりました。

PrincipalComponentRegression04.txtのコードは複雑すぎるようです。さらに、ターゲット変数 に関する変動の定義がないようなので、今朝添付したアーカイブからPrincipalComponentRegression03.txtに 戻りました。

最初の5ステップを行う必要があります。

次のページ

> model$coefficients

(切片) PC1 PC2

0.02075519 0.40407635 -0.42250678

実行結果は、intercept + coef1 * PC1 + coef2 * PC2 + ... となるはずです。+ 残りのPCがある場合

PC1、PC2の値です。:

> proj

> プロジ

PC1 PC2

X_clean 0.00516309881 0.00477076325

X1_clean 0.00142866076 0.00149863842

X2_clean -0.00008292268 0.00001010802

.....

PC1 = X_clean * 0.00516309881 + X1_clean*0.00142866076 +.

後置修飾語 "clean "は、入力であるX, X1, X2,...の元の値を取るための参照なのか、今ひとつ謎です。正規化および変換を行うかどうか。

後で、もっと簡単な例で、すべての値を手動で計算して、計算式が正しいかどうかを比較してみることにします。今のところ推測に過ぎないが )

しかし、その後、この方法は予測因子を取り除くことが目的ではなく、むしろ予測因子の最大数を無視したモデル自体を学習させることが目的であることがわかりました。できることは、各予測変数の平均係数を計算し、閾値以下のものを除外することである。
このモデル自体はneuroncuと非常によく似ているが、活性化関数がなく、内層のニューロンにもシフトがないのが特徴である。しかし、本質は同じです。

もうひとつ、PCの部品を何個持っていくか、という問題があります。もし信頼度が95%以下なら、ステップ3に戻ってproj <-extractProjection(2,princ) を2から3に変更し、ステップ3、4、5を実行して誤差を計算し、95%以下ならステップ3に戻って成分数をもう一度増やさなければなりません。

MT5でRに直接アクセスできれば、完成したモデルをすぐにでも取引できる。このモデルは再トレーニングの問題に悩まされないと理解していますが、もしそうならとても良いことだと思います。つまり、10%の有効性を得て、すでに良い状態になっているのです。

モデルについては、ほぼすべてがクリアされています。MT5で、係数による判定ロジックだけを実装するのは非常に良いと思います。RとMT5との接続方法がよくわからない。mt5からすべてのデータをcsvにエクスポートし、Rで処理し、モデルを訓練し、別のcsvに係数を書き込むことができます。Expert Advisorから係数を読み込んだCSV。さらに、Rにはデータを正規化してPCを計算する関数がたくさんあるので、非常にまずいことになります。MT5で正規化するためにこのコードを繰り返すことは、ほとんど不可能です。考える必要があります。

 
Dr.トレーダー

わかりました、わかりやすい説明ありがとうございました。この機種は記事で初めて知りました。PC1とPC2,3,4,...は係数ではなく、異なる予測変数の集合に対応するのでは?確かに係数の表を見て、今、どこで何を手に入れればいいのかがすぐにわかりました。

PrincipalComponentRegression04.txtのコードは複雑すぎるようです。さらに、ターゲット変数 に関する変動の定義がないようなので、今朝添付したアーカイブからPrincipalComponentRegression03.txtに 戻りました。

最初の5ステップを行う必要があります。

次のページ

(切片) PC1 PC2

0.02075519 0.40407635 -0.42250678

実行結果は、intercept + coef1 * PC1 + coef2 * PC2 + ... となるはずです。+ 残りのPCがある場合

PC1、PC2の値です。:

> プロジ

PC1 PC2

X_clean 0.00516309881 0.00477076325

X1_clean 0.00142866076 0.00149863842

X2_clean -0.00008292268 0.00001010802

.....

PC1 = X_clean * 0.00516309881 + X1_clean*0.00142866076 +.

後置修飾語 "clean "は、入力であるX, X1, X2,...の元の値を取るための参照なのか、今ひとつ謎です。正規化および変換を行うかどうか。

後で、もっと簡単な例で、すべての値を手動で計算して、計算式が正しいかどうかを比較してみることにします。今のところ推測に過ぎないが )

しかしその後、この方法は予測因子を選別するためのものではなく、予測因子の最大数を無視したモデルを学習させるためのものであることが判明しました。できることは、各予測変数の平均係数を計算し、閾値以下のものを除外することである。
このモデル自体はneuroncuと非常によく似ているが、活性化関数がなく、内層のニューロンにもシフトがないのが特徴である。しかし、本質は同じです。

もうひとつ、PCの部品を何個持っていくか、という問題があります。もし信頼度が95%以下なら、ステップ3に戻ってproj <-extractProjection(2,princ) を2から3に変更し、ステップ3、4、5を実行して誤差を計算し、95%以下ならステップ3に戻って成分数をもう一度増やさなければなりません。

MT5でRに直接アクセスできれば、完成したモデルをすぐにでも取引できる。このモデルは再トレーニングの問題に悩まされないと理解していますが、もしそうならとても良いことだと思います。つまり、10%の信頼水準に達していれば良いのです。

モデルについては、ほぼすべてがクリアされています。MT5に実装して、係数で判断するロジックだけを実装すると非常に良いと思います。RとMT5との接続方法がよくわからない。mt5からすべてのデータをcsvにエクスポートし、Rで処理し、モデルを訓練し、別のcsvに係数を書き込むことができます。Expert Advisorから係数を読み込んだCSV。さらに、Rにはデータを正規化してPCを計算する関数がたくさんあるので、非常にまずいことになります。MT5で正規化するためにこのコードを繰り返すことは、ほとんど不可能です。考えなければなりません。

私が見た限りでは、Principal Components Regression, Pt.2: Y-Aware Methods

文章を浅く見た限りでは、対象機能に応じたスケーリングがされているというのがゼストだと理解しています。従来のPCAでは、目的関数は全く考慮されていない。このことから、おそらく第1成分は、予測変数のセット全体の変動を説明するのではなく、目標関数を説明するために最も重要な成分であると思われます!


また、PCの部品をいくつ持っていくかも問題です。

これが騒がれる理由です。直感的には、閾値は存在しない。もし最初の5つのコンポーネントが変動の95%以上を説明しないなら,新しい予測変数の集合を探すべきである.間違っているかもしれませんが。

モデルについては、ほぼすべてクリアしています。MT5で実装されると非常に良いと思います。

MT4ではすべて正常に動作しています。ソースコード付きのパスカル・ライブラリがあります。私自身は試していませんが、私としては、MT4がpascalでライブラリにアピールできるのであれば、MT5でもできるはずです。

Rの魅力はこんな感じです。

1.OnInitでRとの接続を設定します。特別に用意されたデータがある場合は、作業領域が読み込まれます。これとは別に、1つまたは複数の関数に配置されたRのコードが読み込まれる。もちろん、各関数の文字列の数は任意であり、ロジックによって決定される。

2.エキスパートアドバイザーやインジケーターの本体は、これらの関数を呼び出します。

Rは端末のウィンドウに縛られない豊富なグラフィックスを備えていることを考えると、端末と並行してデータを可視化する大きなチャンスがあるのです。

 
サンサニッチ・フォメンコ
ここで私は、読む、読む...。と、実数(回帰)か名目値(分類)かという形式的な観点から、まず対象変数が何であるかを理解することができない。また、予測変数が目的変数にどの程度影響するかを議論するのであれば、まさにこの目的変数の実体的な意味を知っておくとよいでしょう。

逆説的だが、分類は回帰と同じである。

回帰の場合のみ出力が実数であり、分類の場合は確率である。

そして、回帰の場合は連続曲線、分類の場合はインパルス(0,1)または(-1,+1)が対象となる。

この出力は、適切なクラスに変換されます (ifelse(y > 0.5, 1, 0)) 。

 
Dr.トレーダー

リンク先には空のフォルダが表示されるだけで、ファイルが見れません。


this is training:https://drive.google.com/file/d/0B_Au3ANgcG7CN2tTUHBkdEdpVEU/view?usp=sharing

this is validation: https://drive.google.com/file/d/0B_Au3ANgcG7CZmFWclFOd0RqNFk/view?usp=sharing

バリデーションは次のように処理されます。 load(validation_file)

各リスト項目は、独立した観測を行うユニークな検証サンプルを含んでいます。検証用サンプルはランダムな時点から採取されているため、サンプル間のオーバーラップはほとんどありません。各検証サンプルは、貿易の点推定値として扱うことができる。

これは、分単位で発生するトレードをシミュレートしないようにするためです。取引は約12時間ごとにモデル化されます。

理由: