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

 
mytarmailS #:
どうせ空っぽになるんだし

まあ、そうだね。

 
mytarmailS #:
ターゲティングによる機械学習が機能せず、一発学習が機能しないのは悲しいことだ......。

バイアスを減らすために対称的な特徴を取り除く。

例えば、増分を絶対増分(ボラティリティ)に置き換える。

時に役立つ

 
Maxim Dmitrievsky #:

バイアスを減らすために対称的な特徴を取り除く

例:増分を絶対増分に置き換える(ボラティリティ)

役に立つこともある。

いや、もっと複雑だ。
 
Aleksey Vyazmikin #:

私のアイデアは、多くの統計的特徴によって安定した量子セグメントを選択するモデルを得ることである。誰でもこのプロジェクトに参加できる。

、ののークオリティーにークオリティーとークオリティーとークオリティーとークオリティーとークオリティーとークオリティーーーー

何も知的なことはない。例えば10000行を100個に分ける、つまりソートして下から100行ずつ数えていき、次の行が100行目と重なる(つまり重複する)場合は、すべて最初の1個を参照する。重複行があれば、次の100行+重複行を2番目の量子に入力し始める。度重なる行が度重なる。

1つのツリーでさえ、これらの量子セグメント(重複を含む100のソートされた文字列)よりも、(データに基づいて訓練されているため)何桁も有用な情報を含んでいる。

 
Forester #:

どうしてそんなにクオンツにこだわるんだ?

知的な要素はまったくない。例えば10000行を100個に分ける、つまりソートして下から100行ずつ数えていき、次の行が100行目と重なったら(つまり重複したら)、その行をすべて最初の行に参照する。重複があれば、次の100行+重複行を2番目の量子に入力し始める。そして、行がなくなるまで続ける。

1本のツリーであっても、これらの量子セグメント(重複を含む100行をソートしただけのもの)よりも、(データに基づいて訓練されているため)何桁も有用な情報を含んでいる。

量子セグメントは、CatBoostモデルを構築するためのレンガなのだ。私が理解したところでは、当初、この方法でメモリの節約と一般的な計算の高速化という問題が解決された。副次的な利益は、予測指標の組み合わせのバリエーションを減らすことであり、多重共線性を減らすための一歩が踏み出され、一般的にトレーニングのスピードと質に貢献する。さらに、データ・ドリフトの問題も解決される。

量子セグメントデータにおける確率的推定の可能性を探るということです。あなたの提案する定量化の方法(実際には、このプロセスの目的は、同種のグループをふるいにかけることであると想像するのがよいでしょう - アナログ - クラスタリング)を用いて、データを例の数に応じて20等分の量子セグメントに分割すると、各量子セグメントには5%のデータしか残っていないことがわかります。CatBoostはデフォルトで254のセパレータ、つまり255のセグメントを作成する。そして、これらのセグメントからツリーが作成される。すべての量子セグメントは等しく有用であると仮定し、決定木を構築する方法によって、グループをサブグループに分割することによって、それらの配置を決定する。パーティショニングはルートと他の予測因子の両方によって行われる。1つの木を取るとしても,6回の分割の後,正のクラス "1 "の元の例のいくつが最終リストに残るだろうか?分割選択は、量子分割の累積数のメトリクスに基づいていることを考慮に入れなければなりません。ツリーの構築方法そのものを考慮すると、量子セグメントへの予測子の分割がより質的に行われれば行われるほど、リーフで同じ精度を達成するために必要な分割数が少なくなることは明らかです。すべての分割は仮説であり、すべての仮説が真であることはありえない。そのため、量子セグメントがどちらかのクラスに属する可能性を考慮して分割を行えば、同じような精度を達成するために必要な分割の数を減らすことができ、その結果、潜在的に誤った仮説(分割)の数を減らすことができる。さらに、もし予測子をグローバルに3つの領域(2つはクラスメンバーシップ、1つは不確実性)に即座に分割できれば、モデルは平均的に小さくなり、統計的性能も向上します。

例えば、予測変数がRSIオシレーターで、参加者の重要な行動は70、50、30のレベル付近で発生するとします。その後、人口の残りの部分からこれらの3つの値を分離するような方法で量子テーブルを構築することは合理的である。そうでなければ、分割されたうちの1つが、クラスメンバーシップの量子区分でより多くの例をランダムに持つことになり、誤った仮説に関する誤ったルールを得ることになります。

定量化された予測変数のスコアで棒グラフを描き、各列についてクラス・メンバーシップ "1 "の確率の曲線を描くことができます。もし曲線が直線になる可能性が高ければ、私はそのような予測因子をベンチに入れるでしょう。私の考えでは、良い予測変数は、傾斜した線か、いくつかの列でスパイクを持つ。

定量化を通じて、私は値動きの確率に影響を与える個別の事象を探していると言える。

 
このルールはまさに
rsi>69 & rsi<71....
それがすべての数量化だ。
木製のAMOを木に割って、正しいものを取り出すんだ。

何が定量化だ。君はナンセンスだ、哀れだよ。

3行のコードですべて解決する......。
そして、あなたは狂った教授のように、何年もこの定量化に取り組んできた。
 
mytarmailS #:
このルールは
rsi>69 & rsi<71....
これだけだ。
木製のAMOを木に割って、正しいものを取り出す...。

何が定量化だ。くだらないことを言うな、情けない。

すべて3行のコードで解決する...。
そして、あなたは何年もこの数値化媒体をいじってきた、まるでおかしな教授のようにね。

クオンツテーブルを作るには様々な方法がある。確かに、例のパーセンテージに関するシートで与えられた制約条件を使って、単一の予測変数にツリーを構築する既製のパッケージでそれを行うことができると思います。そのパッケージがどのようなもので、私が必要とする形式のデータをどのように入手するのか、私にはわかりません。

重要なのは、単に分割することではなく、新しいデータでクラスメンバーシップが維持される確率を高める、この量子分割を評価する基準を見つけることです。

なぜこんなことをしているかというと、これが質的モデルを構築する鍵だからだ。

なぜ時間がかかるかというと、たくさんの実験とテストスクリプトが必要だからだ。OpenCLを少し理解していて、コードもビデオカードで部分的にカウントしている。

 
Aleksey Vyazmikin #:

重要なのは、単にパーティショニングすることではなく、新しいデータでもクラスメンバーシップが維持される可能性を高める、 この量子カットオフの評価基準を見つける ことである。

同じキャットバスターのコードを見たことがあるだろうか?あなたはそれを使っている。サードパーティーのパッケージは使っていない。しかし、これはとても小さな関数だ(私が説明したものよりもさらに単純で、重複の数だけ分離点をずらすわけではない)。
出てきたものについてのコメントを書いた。入力はソートされた列。

static THashSet<float> GenerateMedianBorders(
    const TVector<float>& featureValues, const TMaybe<TVector<float>>& initialBorders, int maxBordersCount) {
    THashSet<float> result;
    ui64 total = featureValues.size(); //число строк в столбце
    if (total == 0 || featureValues.front() == featureValues.back()) { // проверки
        return result;
    }

    for (int i = 0; i < maxBordersCount; ++i) { // цикл по числу квантов
        ui64 i1 = (i + 1) * total / (maxBordersCount + 1); // номер строки начала кванта номер i
        i1 = Min(i1, total - 1); // не больше числа строк 
        float val1 = featureValues[i1]; // значение в строке i1
        if (val1 != featureValues[0]) { // если != значению в 0-й строке, чтобы не было дубля с 0-й строкой
            result.insert(RegularBorder(val1, featureValues, initialBorders)); // сохранить значение в массив границ разделяющих кванты (не смотрел, но очевидно, что дубликаты пропустит и не создаст им квант)
        }
    }
    return result;
}

ご覧のように、すべてが非常にシンプルで、知的なものは何もありません - 例えば100行を数えるだけです。
少し複雑なバリアントは、重複の数にシフトすることができ、また、量子のサイズを最適化することができます(例えば、10000行のうち9000行が重複している場合、単純な関数は11量子になります:例えば、10000行のうち9000行が重複している場合、単純な関数は11の量子になります:最初の1000行から10個、11番目で残りの9000の重複分、または最初の1000行を99の量子に分割することができます+ 9000の重複と1量子)。
しかし、これらにも知的なものは何もない。必要な文字列の数を単純に数えることが基本であることは同じだ。

https://github.com/catboost/catboost/blob/3cde523d326e08b32caf1b8b138c2c5303dc52e5/library/cpp/grid_creator/binarization.cpp
このページの関数を1週間勉強すれば、数年分の時間を節約できる。

P.s.次の 量子の 文字列がちょうど100個ではなく、315個や88個や4121個になる主な理由は、超難解な計算式(文字列を予測力に応じて組み合わせる。
catboost/binarization.cpp at 3cde523d326e08b32caf1b8b138c2c5303dc52e5 · catboost/catboost
catboost/binarization.cpp at 3cde523d326e08b32caf1b8b138c2c5303dc52e5 · catboost/catboost
  • catboost
  • github.com
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 
明らかに溺れているにもかかわらず、自殺を楽しんでいる人を救助する必要があるのだろうか?
あなたが救いの手を差し伸べても、彼はそれを拒否し、あなたと口論し、自分では何もしようとせず、こう自分の条件を言う:
「私を自分で救い出すか、私の好きな音楽に合わせて私を頭から抱えて海から運び出すか、あるいはそうしないか。
そして、私を救おうとする気はまったくない。


 
Forester #:

同じキャットバスターのコードを見たことがある?あなたはそれを使っている。サードパーティーのパッケージは使っていない。しかし、これはとても小さな関数だ(私が説明したものよりもさらに単純で、重複の数によって分離点をずらすわけではない)。
出てきたものについてのコメントを書いた。入力はソートされた列です。

もちろん見た。さらに、私はMQL5ですべての定量法を再現するための作業費を支払う用意がある。これまでのところ、試みは失敗しています。

フォレスター#:

ご覧のように、すべては非常にシンプルで、知的なものは何もありません。

あなたは最もシンプルな方法を示した。

それに、私は独創的な数量化方法があるなどと書いただろうか?私が書いたこととどう矛盾するのですか?

理由: