記事についてのディスカッション - ページ 10

削除済み  
elibrarius:

どれですか?

F1、MCCの方が良さそうだ。

全リストはこちら

https://catboost.ai/docs/concepts/loss-functions-classification.html

Classification: objectives and metrics - CatBoost. Documentation
  • catboost.ai
If the target type is not binary, then every object with target value and weight is replaced with two objects for the metric calculation: Target values must be in the range [0; 1]. If the target type is not binary...
 
Maxim Dmitrievsky:

F1、MCCの方が良いようだ

全リストはこちら

https://catboost.ai/docs/concepts/loss-functions-classification.html

なぜ彼らが優れているのかを推測するのは難しい。
 
Maxim Dmitrievsky:

もう一度言う。

まあ、そうだね。

もう少し積み重ねる。ああ、積み重ねることは意味がある。どの程度かはまだ未解決だけどね。

素晴らしい記事と巨人の仕事!

混合モデルに入力する前に、データセットの方向が変わった後に立っているラベルを削除した。

X['labels'].loc[X['labels'].diff(2)!=0] = np.nan
X = X.dropna().reset_index(drop=True)

観察によると、より多くのモデルが良い結果を出している。

Iteration:  0 R^2:  0.5260017837414628
Iteration:  1 R^2:  0.6331497253790681
Iteration:  2 R^2:  0.029844101542724655
Iteration:  3 R^2:  0.792134192720112
Iteration:  4 R^2:  -0.5575595243513453
Iteration:  5 R^2:  0.6266442030501214
Iteration:  6 R^2:  0.22435035980633944
Iteration:  7 R^2:  0.38384379495564724
Iteration:  8 R^2:  0.028795249767878173
Iteration:  9 R^2:  0.4976165963899961
Iteration:  10 R^2:  0.38091909530246537
Iteration:  11 R^2:  0.6668471456765452
Iteration:  12 R^2:  0.9173487144971179
Iteration:  13 R^2:  0.31007344321289365
Iteration:  14 R^2:  0.4391449002278133
Iteration:  15 R^2:  0.8643834389201246
Iteration:  16 R^2:  0.1609614914253078
Iteration:  17 R^2:  -0.593998636390909
Iteration:  18 R^2:  0.7253019217609338
Iteration:  19 R^2:  0.11872614816490491
Iteration:  20 R^2:  0.0023909994463473527
Iteration:  21 R^2:  0.6486563192357756
Iteration:  22 R^2:  0.011546691763490213
Iteration:  23 R^2:  0.8085201529889603
Iteration:  24 R^2:  0.9233877589157101
Iteration:  25 R^2:  -0.08743681307491602
Iteration:  26 R^2:  0.6132492793114834
Iteration:  27 R^2:  0.0016322532208268292
Iteration:  28 R^2:  -0.2241780583190326
Iteration:  29 R^2:  0.6739577294046565
Iteration:  30 R^2:  0.43270922254052624
Iteration:  31 R^2:  -0.40571688327667377
Iteration:  32 R^2:  0.8558895655918841
Iteration:  33 R^2:  0.22222950417101828
Iteration:  34 R^2:  0.8718519436072187
Iteration:  35 R^2:  0.3103828388939166
Iteration:  36 R^2:  -0.3274785257455094
Iteration:  37 R^2:  -0.056797883380174774
Iteration:  38 R^2:  0.7372428685425149
Iteration:  39 R^2:  0.46650446544282376
Iteration:  40 R^2:  0.7158974618001703
Iteration:  41 R^2:  -0.08982821839565835
Iteration:  42 R^2:  -0.004541876992860683
Iteration:  43 R^2:  0.39737057218337546
Iteration:  44 R^2:  -0.35131421135378293
Iteration:  45 R^2:  -0.003237278102928842
Iteration:  46 R^2:  0.37272998002935753
Iteration:  47 R^2:  -0.5554473442698793
Iteration:  48 R^2:  0.38766288235168855
Iteration:  49 R^2:  0.8582912360226171

testerとterminalのベストテストの結果:


一般的に、美しい作品だ。私はこれを使ってすべてのターゲットをテストし、ゴミ箱に捨てました)))

削除済み  
welimorn:

素晴らしい記事であり、至難の業だ!

混合モデルに入力する前に、データセットの方向が変わった後に立っているラベルを削除した。

観察によると、より多くのモデルが肯定的な結果を得ている。

テスターと端末での最良のテスト結果:


一般的に、美しい仕事です。このテスターの助けを借りて、ターゲットにしたものをすべてチェックし、ゴミ箱に捨てました)))

はい、クラスタリングの前に落とすことができます

フィードバックをありがとう :)

Z.Ы一度にすべてのモデルをテストすることができます、平均。プレー。すべてのモデルのためのパーサーはまだ作られていません、まだ疑問です。しかし、時にはいくつかのモデルのアンサンブルは本当に改善されます。

def test_models(result):
    pr_tst = get_prices(FULL_DATE, STOP_DATE)
    X = pr_tst[pr_tst.columns[1:]]
    X.columns = [''] * len(X.columns)

    #test the learned model
    p = 0
    for i in range(len(result)):
        p += result[i][2].predict_proba(X)

    p = p/len(result)
    p2 = [x[0]<0.5 for x in p]
    pr2 = pr_tst.iloc[:len(p2)].copy()
    pr2['labels'] = p2
    R2 = tester(pr2, MARKUP, plot=True)

test_models(res)
ZYZY.テーマの発展として、同じメトリックR2によって訓練されたモデルの異なる組み合わせの列挙を行うことができます。そして最良のアンサンブルを維持する。モデルが多ければ、遺伝学でも可能だ。
 
こんにちは、マキシム、

またまた素敵な記事をありがとう!:)

私は2015年から2020年までのEURUSDのH1データを取り、3つのセットに分けました:

1.トレーニングセット:2015.01.01から2018.01.01まで
これはGMMのトレーニングにのみ使用されます。

2.検証セット:2018.01.01から2019.01.01まで
このセットはTraining Setとともに、ブルートフォース 関数で 最適なモデルを見つけるために使用される。

3.テストセット:2019.01.01から2020.01.01まで
このセットは、ブルートフォース・アルゴリズムから得られた最良のモデルをテストするためにのみ使用される。

以下は、全データセットに対するバックテストの結果である、


私は自分のコードを再チェックしましたが、何か間違っているかもしれません。いずれにせよ、この結果について何かおわかりになるかもしれません。よろしく、Rasoul


Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
削除済み  
Rasoul Mojtahedzadeh:
こんにちは、マキシム、

またまた素敵な記事をありがとう!:)

私は2015年から2020年までのEURUSDのH1データを取り、3つのセットに分けました:

1.トレーニングセット:2015.01.01から2018.01.01まで
これはGMMのトレーニングにのみ使用する。

2.検証セット:2018.01.01から2019.01.01まで
このセットはトレーニングセットとともに、ブルートフォース(総当り) 関数で 最良のモデルを見つけるために使用される。

3.テストセット:2019.01.01から2020.01.01まで
このセットは、ブルートフォース・アルゴリズムで得られた最良のモデルをテストするためにのみ使用される。

以下は、全データセットに対するバックテストの結果である、


自分のコードを再チェックしたが、何か間違っているかもしれない。いずれにせよ、この結果について何かお分かりになるかもしれません。よろしく、Rasoul


こんにちは、Rasoul。トレーニングセットのサイズを小さくしてみてください。それは様々な設定によりますが、重要なトリックは、学習サイズを小さくすることで、新しいデータに対する汎化が良くなるということです。次回はこの効果について説明したいと思います。
 
Maxim Dmitrievsky

csvファイルでデータをアップロードする方法を教えてください。


この方法で試してみましたが、読み込まれませんでした。


ファイルの形式は

時間,終値

2020,11,15,1.3587

2020,11,16,1.3472


def get_prices(START, STOP):
    prices = pd.read_csv('file.csv', columns=['time', 'close']).set_index('time')
    prices.index = pd.to_datetime(prices.index, unit='s')
    prices = prices.dropna()
    pr = prices.copy()
    count = 0
    for i in MA_PERIODS:
        returns = pr - pr.rolling(i).mean()
        for l in range(LOOK_BACK):
            prices[str(count)] = returns.shift(l)
            count += 1
    return prices.dropna()
削除済み  
Evgeni Gavrilovi:

csvファイルでデータをアップロードする方法を教えてください。

def get_prices(look_back = 15):
    prices = pd.DataFrame(mt5.copy_rates_range(SYMBOL, TIMEFRAME, START_DATE, STOP_DATE), 
                            columns=['time', 'close']).set_index('time')
    prices.index = pd.to_datetime(prices.index, unit='s')
    prices = prices.dropna()
    pr = prices.copy()
    count = 0
    for i in MA_PERIODS:
        returns = pr - pr.rolling(i).mean()
        for l in range(look_back):
            prices[str(count)] = returns.shift(l)
            count += 1
    
    prices = prices.dropna()
    prices.to_csv('pr.csv', sep=';')
pr = pd.read_csv('pr.csv', sep=';')

つまり、ターミナルからデータをロードし、ファイルに保存する例です。そして、それをcolab

 
Maxim Dmitrievsky:
こんにちは、Rasoul。トレーニングセットのサイズを小さくしてみてください。様々な設定によりますが、重要なコツは、学習サイズを小さくすることで、新しいデータに対する汎化がより良くなることです。次回はこの効果について説明しようと思います。

それはいいね。この論文の適用範囲について、特に異なるIOメソッドへの適用について、記事に書いてもらえるとうれしい。なぜかNSには70/30を推奨している。そして論理的には、IMHOは50/50の方がより安定した結果が得られるはずだ。

削除済み  
Stanislav Korotky:

これは良いことだ。この論文の適用範囲、特にMOの異なる手法への適用範囲について、記事中に言及してもらえるとうれしい。なぜかNSでは70/30が推奨されている。そして論理的には、IMHOは50/50の方がより安定した結果が得られるはずだと考えている。

能動的学習と受動的学習がある。受動的学習とは、データを手作業でマークアップ し、それに基づいてトレーニングすることである。この場合、データはたくさんあるはずだが、正しいマークアップの問題がある。つまり、"教師 "はデータをマークアップし、従来通り、同じ分布からデータを抽出し、うまく汎化できるようにしなければならない。この点では、訓練生の何割がテストを受けてもほとんど違いはない。それは単なるモデル・チェックであり、データを手動でどれだけうまくラベリングできたかのチェックなのだ。

能動学習では、モデルは最適な方法でデータをマークアップするように学習する。この記事は、まさにそのようなGMMによる分割のケースである。つまり、教師ありの学習と教師なしの学習の両方が使われる。この場合、モデルは小さく分割されたデータで学習し、残りのデータ自体を最適な方法で分割しなければならない。これは比較的新しいアプローチである(2017年頃から)。次の記事で詳しく見てみたい。

文章中に「データ」が多すぎる。)