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

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

はい、では将来的にそれらを検出し、この特定のクラスタでうまく機能するモデルを選択してください

NS/forestが自らサブモデルを作成し、フィーチャーとして登録することも可能です。
 
mcpd.mcpdreport C# (CSharp) Code Examples - HotExamples
  • csharp.hotexamples.com
C# (CSharp) mcpd.mcpdreport - 6 examples found. These are the top rated real world C# (CSharp) examples of mcpd.mcpdreport extracted from open source projects. You can rate examples to help us improve the quality of examples.
 

HabraのNSトレーニングに関する興味深い記事(一読のみ)ニューラルネットワークによる写真の復元

いつものように、最も貴重なのはユーザーのコメントです。記事中、著者はサードパーティ製ソフトウェアの比較でいつものように自分の仕事の大躍進を説明していますが、ユーザーはすぐに欠点を指摘しました - 緑が優勢であること。

結論:NSトレーニングの技術そのものよりも、インプットデータの準備が重要

Реставрируем фотографии с помощью нейросетей
Реставрируем фотографии с помощью нейросетей
  • habr.com
Всем привет, я работаю программистом-исследователем в команде компьютерного зрения Mail.ru Group. Ко Дню Победы в этом году мы решили сделать проект по реставрации военных фотографий. Что такое реставрация фотографий? Она состоит из трех этапов: находим все дефекты изображения: надломы, потертости, дырки; закрашиваем найденные дефекты...
 
イゴール・マカヌ

結論としては、NSの学習技術そのものよりも、入力データの作成が重要である。

ソルサクは10億ページ前にこう言っていた。

皆さん、いつになったらお互いの話を聞けるようになるのでしょうか?この田舎者の狭量さと愚かさは何なんだ?本当に迷惑で腹立たしいです。

 
イゴール・マカヌ

HabraのNSトレーニングに関する興味深い記事(一読のみ)ニューラルネットワークによる写真の復元

いつものように、最も貴重なのはユーザーのコメントです。記事中、著者はサードパーティ製ソフトウェアの比較でいつものように自分の仕事の大躍進を説明していますが、ユーザーはすぐに欠点を指摘しました - 緑が優勢であること。

結論:NSのトレーニング技術よりもインプットデータの準備が重要

ポイントは、指紋と同様に絵柄が動かず、変化しないことです。そして、パターン認識では機械学習が欠かせない。

しかし、FXのヒストリカルデータにMOを適用すると、あたかもベストな選択肢を見つけたかのような錯覚を起こすだけだ。

しかし、実際には、歴史上の危険な場所をすべて回避する方法を学んだだけで、結果的に大きな利益を得ることができたのです。

しかし、価格設定は常に変化し前進するダイナミックなプロセスであり、価格の行方は誰にも推測できません。したがって、機械学習に基づくロボットは、実際の取引では異常な 状況で必ずミスを犯すことになるのです。

 
ペトロス・シャタフツィヤン

しかし、FXのヒストリカルデータにMOを適用すると、あたかもベストな選択肢を見つけたかのような錯覚を起こすだけだ。

そして、実際には、危険な場所をすべて迂回することを歴史的に学んできただけで、結果的に大きな利益を得ているのです。

これを読むhttps://habr.com/ru/post/443240/

しかし、そんなに悪いものではない、私は百回目の私の意見を示してみる:MOはGA戦略テスターより良くもなく悪くもない。

が、やはり非常に興味深いテーマで、魅力的です ))))

Понимание Q-learning, проблема «Прогулка по скале»
Понимание Q-learning, проблема «Прогулка по скале»
  • habr.com
Привет, Хабр! Предлагаю вашему вниманию перевод статьи «Understanding Q-Learning, the Cliff Walking problem» автора Lucas Vazquez. В последнем посте мы представили проблему «Прогулка по скале» и остановились на страшном алгоритме, который не имел смысла. На этот раз мы раскроем секреты этого серого ящика и увидим, что это совсем не так...
 

まあ、かなり簡単に塗れることがわかりました。例1より。

状態の数、遷移のシーケンス(例えば、履歴)を設定します。つまり、ある状態にある確率です。そして、全州の総確率をカウントする。

あるいは、MAshkiで、初歩的な簡単な例を作ってみましたが、今のところ、まだやり方がわかりません。

//+------------------------------------------------------------------+
//|                                                          HMM.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Math\Alglib\dataanalysis.mqh>
CMCPDState states;
CMCPDReport report;
CMatrixDouble track0, track1, results;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   track0.Resize(5, 2);
   track1.Resize(4,2);
   
   track0[0].Set(0, 1.0);
   track0[0].Set(1, 0.0);
   
   track0[1].Set(0, 0.95);
   track0[1].Set(1, 0.05);
   
   track0[2].Set(0, 0.92750);
   track0[2].Set(1, 0.07250);
   
   track0[3].Set(0, 0.91738);
   track0[3].Set(1, 0.08263);
   
   track0[4].Set(0, 0.91282);
   track0[4].Set(1, 0.08718);
   
   track1[0].Set(0, 0.8);
   track1[0].Set(1, 0.2);
   
   track1[1].Set(0, 0.86);
   track1[1].Set(1, 0.14);
   
   track1[2].Set(0, 0.887);
   track1[2].Set(1, 0.113);
   
   track1[3].Set(0, 0.89915);
   track1[3].Set(1, 0.10085);
   
   CMarkovCPD::MCPDCreate(2, states);
   CMarkovCPD::MCPDAddTrack(states, track0, 5);
   CMarkovCPD::MCPDAddTrack(states, track1, 4);
   CMarkovCPD::MCPDSolve(states);
   CMarkovCPD::MCPDResults(states, results, report);
   
   for(int i=0;i<results.Size();i++)
     {
      Print(results[i][0]);
      Print(results[i][1]);
     }
  }
//+------------------------------------------------------------------+
 

このようなMAを使った戦略(非常にシンプル)は、こちらで解説しています。

https://www.quantstart.com/articles/market-regime-detection-using-hidden-markov-models-in-qstrader

Market Regime Detection using Hidden Markov Models in QSTrader | QuantStart
Market Regime Detection using Hidden Markov Models in QSTrader | QuantStart
  • www.quantstart.com
In the previous article on Hidden Markov Models it was shown how their application to index returns data could be used as a mechanism for discovering latent "market regimes". The returns of the S&P500 were analysed using the R statistical programming environment. It was seen that periods of differing volatility were detected, using both...
 
マキシム・ドミトリエフスキー

まあ、かなり簡単に塗れることがわかりました。例1より。

状態の数、遷移のシーケンス(例えば、履歴)を設定します。つまり、ある状態にある確率です。そして、全州の総確率をカウントする。

あるいは、MAshkiで、初歩的な簡単な例を作ってみましたが、今のところ、まだやり方がわかりません。

//+------------------------------------------------------------------+
//|                                                          HMM.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Math\Alglib\dataanalysis.mqh>
CMCPDState states;
CMCPDReport report;
CMatrixDouble track0, track1, results;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   track0.Resize(5, 2);
   track1.Resize(4,2);
   
   track0[0].Set(0, 1.0);
   track0[0].Set(1, 0.0);
   
   track0[1].Set(0, 0.95);
   track0[1].Set(1, 0.05);
   
   track0[2].Set(0, 0.92750);
   track0[2].Set(1, 0.07250);
   
   track0[3].Set(0, 0.91738);
   track0[3].Set(1, 0.08263);
   
   track0[4].Set(0, 0.91282);
   track0[4].Set(1, 0.08718);
   
   track1[0].Set(0, 0.8);
   track1[0].Set(1, 0.2);
   
   track1[1].Set(0, 0.86);
   track1[1].Set(1, 0.14);
   
   track1[2].Set(0, 0.887);
   track1[2].Set(1, 0.113);
   
   track1[3].Set(0, 0.89915);
   track1[3].Set(1, 0.10085);
   
   CMarkovCPD::MCPDCreate(2, states);
   CMarkovCPD::MCPDAddTrack(states, track0, 5);
   CMarkovCPD::MCPDAddTrack(states, track1, 4);
   CMarkovCPD::MCPDSolve(states);
   CMarkovCPD::MCPDResults(states, results, report);
   
   for(int i=0;i<results.Size();i++)
     {
      Print(results[i][0]);
      Print(results[i][1]);
     }
  }
//+------------------------------------------------------------------+

alglibでは、私が理解しているように(おそらく間違っている)、必要なクラスタ数によってトラックを自分でコンパイルする必要があります。Pythonのこれらの例では、適切なクラスタ数を求めれば、それだけでデータを再分配してくれます。

しかし、分類の場合、2つのクラスがあれば、0から始まって1になるまで、1から始まって0になるまで、連鎖することができるだろう。

 
エリブラリウス

alglibでは、私が理解しているように(おそらく間違っている)、トラックを正しいクラスタ数で自分でコンパイルする必要があるのです。Pythonの例では、適切なクラスタ数を要求すると、データそのものを再分配してくれるんです。

しかし、もし分類が2クラスであれば、0から始まって1になるまで、1から始まって0になるまで、このように連鎖させることができるでしょう。

仕組みが全く理解できない。NS経由のクラシフィケーションを利用すればいいのでは?

新しいデータも含めて、pythonで結果を出力する仕組みがよくわかりません。また、alglibでは、新しいデータで、各次元ごとに予測された状態を得るにはどうしたらよいでしょうか。一度にバキバキにしすぎ。

と、alglibに何か問題があるようで、違うモデル