L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 2109

 
Maxim Dmitrievsky:

selezionare tutti i file e scaricarli, saranno zippati

diverse lunghezze di campione, allora se una parte

Grazie, è vero - si può scaricare come archivio, il che è bello!

Ma diverse lunghezze di campionamento non vanno bene, stavo pensando di selezionare le colonne più casuali dove piccole deviazioni sono accettabili.

Penso che non sia necessario applicare questo metodo al campione - altrimenti come posso usarlo nella vita reale.

Lo sto eseguendo per l'allenamento, vediamo cosa succede.

 
Aleksey Vyazmikin:

Grazie, è vero - si può scaricare un archivio, il che è bello!

Ma le diverse lunghezze del campione sono cattive, ho pensato di evidenziare le colonne più casuali, dove piccole deviazioni sono accettabili.

Penso che non sia necessario applicare questo metodo al campione - altrimenti come posso usarlo nella vita reale.

Lo sto eseguendo per l'allenamento, vediamo cosa succede.

Non ne ho bisogno per gli esami, ma potrebbe tornare utile.

 
elibrarius:

Troppo pigro per convertire)
Lasciatemi spiegare:

1) ordiniamo la colonna
2) contiamo il numero medio di elementi in un quanto, ad esempio 10000 elementi / 255 quanti = 39,21
3) nel ciclo, ci spostiamo di 39,21 elementi in ogni passo e aggiungiamo il valore dalla matrice ordinata alla matrice dei valori dei quanti. Cioè il valore 0 dell'array = valore 0 quantum, 39° valore = 1 quantum, 78° valore = 2 quantum, ecc.

Se il valore è già presente nell'array, cioè se entriamo in una zona con molti duplicati, saltiamo il duplicato e non lo aggiungiamo.

Ad ogni passo, aggiungiamo esattamente 39,21, e poi arrotondiamo la somma per selezionare un elemento della matrice, in modo che sia uguale. Cioè invece di 195 (39*5 = 195) prendete 196 ( 39,21 * 5 = (int) 196,05).

Con la distribuzione uniforme è chiaro - creerei un array di valori unici e lo userei per il taglio.

Ma ci sono altri metodi per dividere la griglia:

    THolder<IBinarizer> MakeBinarizer(const EBorderSelectionType type) {
        switch (type) {
            case EBorderSelectionType::UniformAndQuantiles:
                return MakeHolder<TMedianPlusUniformBinarizer>();
            case EBorderSelectionType::GreedyLogSum:
                return MakeHolder<TGreedyBinarizer<EPenaltyType::MaxSumLog>>();
            case EBorderSelectionType::GreedyMinEntropy:
                return MakeHolder<TGreedyBinarizer<EPenaltyType::MinEntropy>>();
            case EBorderSelectionType::MaxLogSum:
                return MakeHolder<TExactBinarizer<EPenaltyType::MaxSumLog>>();
            case EBorderSelectionType::MinEntropy:
                return MakeHolder<TExactBinarizer<EPenaltyType::MinEntropy>>();
            case EBorderSelectionType::Median:
                return MakeHolder<TMedianBinarizer>();
            case EBorderSelectionType::Uniform:
                return MakeHolder<TUniformBinarizer>();
        }
 
Aleksey Vyazmikin:

Con la distribuzione uniforme vedo - creerei prima un array di valori unici e lo userei per tagliare.

Ma ci sono altri metodi per dividere la griglia:

Ci devono essere molti campioni, altrimenti il modello non imparerà nulla.

 
Maxim Dmitrievsky:

ci devono essere molti campioni, altrimenti il modello non imparerà nulla

Questi sono i metodi di quantizzazione del campionamento per CatBoost - questi sono i confini su cui va poi l'enumerazione/apprendimento.

I miei esperimenti mostrano che la griglia dovrebbe essere scelta per ogni predittore separatamente, poi si osserva un aumento della qualità, ma non è in grado di farlo CatBoost e non sono in grado di costruire una griglia e devo costruire griglie e caricarle in csv, e poi iterarle per stimare il comportamento degli obiettivi in esse. Penso che sia uno strumento molto promettente, ma ho bisogno di tradurre il codice in MQL.

 
Aleksey Vyazmikin:

Questi sono i metodi di quantizzazione del campionamento per CatBoost - questi sono i confini con cui l'enumerazione/apprendimento procede.

I miei esperimenti mostrano che la griglia dovrebbe essere scelta per ogni predittore separatamente, poi si osserva un guadagno di qualità, ma CatBoost non può farlo e io non posso costruire una griglia e devo costruire griglie e caricarle in csv e poi iterare attraverso di esse per valutare il comportamento del target in esse. Penso che questa sia una caratteristica molto promettente, ma ho bisogno di tradurre il codice in MQL.

È nelle impostazioni del modello stesso (parametri)? Non so cosa sia

se non è nelle impostazioni, allora è una stronzata.

 
Maxim Dmitrievsky:

È nelle impostazioni del modello stesso (parametri)? Non so cosa sia

Se non è nelle impostazioni, è una stronzata.

È nelle impostazioni, almeno per la linea di comando

--confine-tipo

Il modo diquantizzazione per le caratteristiche numeriche.

Valori possibili:
  • Mediano
  • Uniforme
  • UniformAndQuantiles
  • MaxLogSum
  • MinEntropia
  • GreedyLogSum
Quantization - CatBoost. Documentation
  • catboost.ai
Mode How splits are chosen Combine the splits obtained in the following modes, after first halving the quantization size provided by the starting parameters for each of them: Maximize the value of the following expression inside each bucket: Minimize the value of the following expression inside each bucket: Maximize the greedy approximation of...
 
Aleksey Vyazmikin:

È nelle impostazioni, almeno per la linea di comando

--confine-tipo

Il modo diquantizzazione per le caratteristiche numeriche.

Valori possibili:
  • Mediano
  • Uniforme
  • UniformAndQuantiles
  • MaxLogSum
  • MinEntropia
  • GreedyLogSum

Fa una grande differenza? Dovrebbe essere all'interno di una percentuale

 
Aleksey Vyazmikin:

Con la distribuzione uniforme vedo - creerei prima un array di valori unici e lo userei per tagliare.

Ma ci sono altri metodi per dividere la griglia:

Se avete valori unici, sarà un casino. Per esempio, avete 100 stringhe di cui 10 sono uniche, 2 hanno 45 stringhe e 8 ne hanno 1. Diviso per 5 quanti, è possibile che solo 5 per 1 saranno scelti, e i 2 più rappresentativi (per 45) saranno saltati.
 
Maxim Dmitrievsky:

e fa una grande differenza? Dovrebbe essere entro una percentuale

La scelta della giusta ripartizione ha un impatto significativo sul risultato.

Ecco un esempio su Recall - fino al 50% di variazione - per me è significativo.

Aumentando i limiti da 16 a 512 in incrementi di 16 - anche se non in ordine sull'istogramma - i miei titoli sono un po' un ostacolo.


Sto ancora sperimentando la selezione delle maglie, ma è già ovvio che ci sono diversi predittori per i quali sono necessarie diverse maglie, per osservare la logica, e non solo per adattarle.