L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 2032
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Per una foresta, c'è un'opzione per guardare l'importanza e i cluster. In catbust è probabilmente plot_tree.
Preparerò i dati e li posterò.
Ho fatto una versione di prova per 6 colonne, ci sono voluti 11GB. Notepad++ non può aprirlo, dice che il file è troppo grande. BD Browser per SQLite è rimasto sospeso per circa 20 minuti.Mostra una foto di come sono fatti gli ammassi di alberi, non so ancora cosa intendi.
Perché aprirlo? :) Faccio solo una mini copia con una struttura simile per il debug.
Mi chiedo come addestrino gli alberi senza prendere tutti i dati in memoria. Se la tabella è di 6 gigabyte, allora si dovrebbero usare circa 6 gigabyte di memoria. L'albero deve ordinare ogni colonna nel suo insieme. Se non mettiamo tutto in memoria, ma leggiamo i dati dal disco ogni volta, sarà troppo lento.
L'unica variante è mantenere i dati in memoria nel tipo float invece che double, ma questo ridurrà la precisione. Per noi con 5 cifre di precisione, potrebbe non essere troppo male, ma catbust è un software universale, penso che i problemi fisici e matematici dovrebbero essere risolti in doppia precisione.
Non ho studiato il codice, ma se ci pensate logicamente, CatBoost probabilmente converte la tabella di dati campione e memorizza esattamente la variante convertita, il che si presta a una compressione veloce.
La trasformazione avviene su una griglia di quantizzazione di ogni predittore (sono disponibili 6 algoritmi), e, per esempio, da 1000 valori diversi di una variabile rimangono 32 varianti (che cadono nella gamma di una griglia di quantizzazione) e tale vettore di dati è facilmente compresso, oltre alle cifre già solo interi (a giudicare dalle restrizioni della dimensione di una griglia - tipo dati ushort - 2 byte su numero), e la tabella di quantizzazione si trova semplicemente in memoria ed è usata già allora alla creazione del modello in un codice. Ora abbiamo già ridotto le dimensioni, e inoltre è possibile ridurre il volume scegliendo non tutti i predittori per la valutazione, ma la loro parte, che si raccomanda di fare a grandi campioni, a che l'algoritmo del randomizzatore permette di utilizzare in altri alberi quei predittori, che non hanno ottenuto in "bag" in una volta, a causa di questo allenamento sarà anche più veloce, ma ci saranno più alberi nel modello. Sicuramente ci sono altri trucchi, ma il principale è la quantizzazione.
La quantizzazione dovrebbe essere considerata separatamente, idealmente ogni predittore dovrebbe essere abbinato alla propria griglia e i dati dovrebbero essere presentati per l'allenamento insieme alla griglia, permette all'algoritmo di farlo.
Così, il campione può essere autoquantizzato e sarà ben compresso.
Non ho studiato il codice, ma se ci pensi logicamente, CatBoost probabilmente trasforma la tabella dei dati campione e memorizza esattamente le varianti trasformate, che sono adatte alla compressione veloce.
La trasformazione avviene su una griglia di quantizzazione di ogni predittore (sono disponibili 6 algoritmi), e, per esempio, da 1000 valori diversi di una variabile rimangono 32 varianti (che cadono nella gamma di una griglia di quantizzazione) e tale vettore di dati è facilmente compresso, oltre alle cifre già solo interi (a giudicare dalle restrizioni della dimensione di una griglia - tipo dati ushort - 2 byte su numero), e la tabella di quantizzazione si trova semplicemente in memoria ed è usata già allora alla creazione del modello in un codice. Ora abbiamo già ridotto le dimensioni, e inoltre è possibile ridurre il volume scegliendo non tutti i predittori per la valutazione, ma la loro parte, che si raccomanda di fare a grandi campioni, a che l'algoritmo del randomizzatore permette di utilizzare in altri alberi quei predittori, che non hanno ottenuto in "bag" in una volta, a causa di questo allenamento sarà anche più veloce, ma ci saranno più alberi nel modello. Sicuramente ci sono altri trucchi, ma il principale è la quantizzazione.
La quantizzazione dovrebbe essere considerata separatamente, idealmente ogni predittore dovrebbe essere abbinato alla propria griglia e i dati dovrebbero essere presentati per l'allenamento insieme alla griglia, permette all'algoritmo di farlo.
Ecco perché il campione può essere quantizzato da solo e sarà ben compresso.
Ora capisco a cosa serve questa griglia, si scopre che è per la compressione. Ed è più veloce da ordinare.
Giusto, mi ricordo, sembra avere una griglia predefinita di 1024 varianti divise. Se sostituisci tutti i dati con numeri divisi, puoi memorizzare in formato ushort, che è 2 byte invece di 8, 4 volte la compressione. Probabilmente è per questo che avevi 2gb invece di 6 e li hai usati.
Il default è 254, ma non ricordo quanto ho impostato allora. Probabilmente sono stati consumati meno di 2gb di memoria - ricordo che ero molto sorpreso che fosse così poco.
Comunque, questo approccio permette di comprimere significativamente i dati anche il campionamento stesso. Non si può fare con le reti neurali
Ora capisco a cosa serve questa griglia, risulta per la compressione. Ed è più veloce per ordinarlo.
Il default è 254, ma non ricordo quanto ho impostato allora. Probabilmente sono stati consumati meno di 2gb di memoria - ricordo che ero molto sorpreso che fosse così piccolo.
Puoi usare uchar allora, è 1 byte.
Grid permette di adattarsi meno, perché viene usato un intervallo di valori. Ma non è sempre buono, per catturare i livelli teorici dovresti tagliare tu stesso la griglia.
Il valore massimo in ushort è 65 mila - se si imposta una tale griglia, si può non preoccuparsi di farlo manualmente.
https://www.mql5.com/ru/articles/8385
non è un fatto che sia una buona implementazione )
Passerò su quello russo.
Ho letto quello))) è pieno di errori nei calcoli e la rete dà risposte piuttosto casuali
Allora potete usare uchar , è 1 byte.
In ushort il valore massimo è 65k - se si imposta una tale griglia, non ci si deve preoccupare manualmente
La loro dimensione massima è65535, ma non posso influenzare le variabili nel codice.
Per quanto riguarda la dimensione massima - no, non garantisce il risultato, perché può essere adattata alla striscia di dati e saltare quelli vicini.
Generalmente è bene avere un algoritmo di apprendimento che controlla sempre la ragionevolezza della divisione di chiusura (A>10 && A<=15), ma di solito accade casualmente - non c'è una tale condizione obbligatoria, anche se a volte viene riprodotta.
Ho letto questo))) ci sono molti errori nei calcoli e la rete dà risposte piuttosto casuali
Vuoi scrivere tu stesso la rete?
Vod qui è un minimo di parole e un massimo di codice in python, ma anche in inglese.
https://datascience-enthusiast.com/DL/Building_a_Recurrent_Neural_Network-Step_by_Step_v1.html
Vuoi scrivere tu stesso la rete?
C'è un minimo di parole e un massimo di codice in Python, ma anche in inglese.
https://datascience-enthusiast.com/DL/Building_a_Recurrent_Neural_Network-Step_by_Step_v1.html
Sì, voglio farlo io stesso) perché in tutti gli articoli, gli esempi di funzioni di attivazione sono contati in modo errato) per esempio sigmoide è contato come 1/1+exp(-x) ovunque. Ho bisogno di 1,0/1,0+exp(-x). Sembra essere lo stesso, ma il terminale dà calcoli diversi) vedi se hai gli stessi calcoli) da qui l'errore.