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
Nel primo commento del video, si noti che è necessario specificare esplicitamente la versione di tensorflow 2.10.0
Grazie, intendo
Non ha senso fare esperimenti, perché una previsione di questo tipo non differisce da una previsione ingenua (il valore del prezzo di chiusura precedente viene preso come previsione). In questo caso, si ottiene quasi il minimo errore di apprendimento (RMS), che non dice nulla sulla capacità predittiva del modello. Si tratta piuttosto di un esempio didattico su ONNX che dimostra come anche un'architettura complessa possa essere facilmente trasferita al terminale. Non so cosa si siano fumati gli autori di quell'articolo sulla ricerca di architetture di reti neurali per la previsione delle serie temporali :) qui è necessaria una stima corretta, oppure una classificazione invece di una regressione.
Per favore, spiegate l'esempio dell'immagine in cui è coinvolto l'altro 20% di candele di prova. Si tratta di un forward? Perché la previsione coincide quasi completamente con i prezzi reali (a giudicare dall'immagine, sembrano due candele, solo una è spostata di una barra), ma il tester è un po' triste?
Si prega di spiegare l'esempio dell'immagine in cui è coinvolto il restante 20% delle candele di prova. Si tratta di una previsione? Perché la previsione coincide quasi completamente con i prezzi reali (a giudicare dall'immagine, sembrano due candele, solo una è spostata di una barra), ma nel tester c'è un po' di tristezza?
Avete risposto alla vostra stessa domanda, ovvero che ottenete una MA ritardata come previsione (di solito con un solo spostamento indietro). Si tratta di un trucco ben noto quando ci si allena con le metriche standard, che vengono minimizzate con questo risultato.
Sopra ho aggiunto un link dove leggere altre metriche.https://stackoverflow.com/questions/65316205/implementation-os-nmae-as-metric-with-keras
Avete risposto alla vostra stessa domanda, ovvero che ottenete una MA ritardata come previsione (di solito con un singolo spostamento all'indietro). Si tratta di un trucco ben noto quando ci si allena con le metriche standard, che vengono minimizzate con questo risultato.
Sopra ho aggiunto un link dove leggere altre metriche.È necessario un articolo su questo argomento.
È necessario un articolo su questo argomento.
A quanto pare, nemmeno le metriche del settore energetico sono adatte :) non conosco una buona soluzione, quindi sono passato alla classificazione.
Su Google per la migliore metrica di previsione, viene fuori MAPE (errore percentuale medio assoluto).
Per utilizzare esplicitamente le metriche nell'ottimizzazione dei modelli di keras, devono essere specificate esplicitamente come funzione di perdita, non come in #13.
Un'implementazione di oltre 100 metriche di regressione in Python è disponibile qui (Akaike Information Criterion, distanza di Aitchison, Amemiya's Adjusted R-squared, Amemiya's Prediction Criterion, Bias come e dato da Gupta, Bayesian Information Criterion, Brier score, Pearson correlation coefficient, Centered root-mean-square (RMS) difference, Decomposed MSE sviluppato da Kobayashi e Salam...).
Esempio di ottimizzazione della metrica MAPE (si dovrebbe usare keras invece delle funzioni matematiche di numpy, perché si tratta di tensori).
# example from https://github.com/AtrCheema/SeqMetrics/blob/master/SeqMetrics/_rgr.py
# Mean Absolute Percentage Error (MAPE)
# The MAPE is often used when the quantity to predict is known to remain way above zero_.
# It is useful when the size or size of a prediction variable is significant in evaluating the accuracy of a prediction_.
# It has advantages f scale-independency and interpretability.
# However, it has the significant disadvantage that it produces infinite or undefined values for zero or close-to-zero actual values_.
# .. _zero:
# https://doi.org/10.1016/j.neucom.2015.12.114 // Mean Absolute Percentage Error for regression models
# .. _prediction:
# https://doi.org/10.1088/1742-6596/930/1/012002 // Forecasting Error Calculation with Mean Absolute Deviation and Mean Absolute Percentage Error
# .. _values:
# https://doi.org/10.1016/j.ijforecast.2015.12.003 // A new metric of absolute percentage error for intermittent demand forecasts
from keras import backend as K
def MAPE_metric(y_true, y_pred):
return (K.mean(K.abs((y_true - y_pred) / (y_true+1e-8)) * 100))
#define the model
model = Sequential()
model.add(Conv1D(filters=256, kernel_size=2,activation='relu',padding = 'same',input_shape=(120,1)))
model.add(MaxPooling1D(pool_size=2))
model.add(LSTM(100, return_sequences = True))
model.add(Dropout(0.3))
model.add(LSTM(100, return_sequences = False))
model.add(Dropout(0.3))
model.add(Dense(units=1, activation = 'sigmoid'))
model.compile(optimizer='adam', loss=MAPE_metric , metrics = [MAPE_metric])
come si presenta l'ottimizzazione
grafico predittivo:
Tuttavia, l'uso di MAPE nell'ottimizzazione ha prodotto uno spostamento.
Forse dobbiamo considerare direzioni più complesse di ottimizzazione sotto forma di prodotti di metriche.
L'argomento richiede una ricerca approfondita.
La ricerca su Google della migliore metrica di previsione mostra il MAPE (errore percentuale medio assoluto).
Per utilizzare esplicitamente le metriche nell'ottimizzazione dei modelli di keras, queste devono essere specificate esplicitamente come funzione di perdita, non come in #13.
L'implementazione di oltre 100 metriche di regressione in Python può essere trovata qui (Akaike Information Criterion, distanza di Aitchison, Amemiya's Adjusted R-squared, Amemiya's Prediction Criterion, Bias come e dato da Gupta, Bayesian Information Criterion, Brier score, Pearson correlation coefficient, Centered root-mean-square (RMS) difference, Decomposed MSE sviluppato da Kobayashi e Salam...).
Tuttavia, quando il MAPE è stato utilizzato nel processo di ottimizzazione, anche in questo caso si è ottenuto uno spostamento.
Forse dobbiamo considerare direzioni più complesse di ottimizzazione sotto forma di prodotti di metriche.
L'argomento richiede uno studio approfondito.
IMHO, il problema non è sempre nella metrica, ma nella struttura dei dati selezionati per la previsione - in questo caso, per l'esempio è stato preso l'insieme di campioni più "semplice". Provate, ad esempio, a campionare i vettori attraverso lo spazio di incorporazione (prendete campioni con un passo in cui l'autocorrelazione della serie scompare) - otterrete una previsione più simile a quella reale - ciò significa non solo l'assenza di un ritardo simile alla MA, ma anche che a volte sarà molto sbagliata ;-).
Se si eliminano e si incollano insieme parti della serie senza sfondo di notizie, il risultato dovrebbe essere accettabile.
IMHO, il problema non è sempre nella metrica, ma nella struttura dei dati selezionati per la previsione - in questo caso è stata presa la serie di campioni più "semplice" per l'esempio. Provate, ad esempio, a campionare i vettori attraverso lo spazio di incorporazione (prendete i campioni con un passo in cui l'autocorrelazione della serie scompare) - otterrete una previsione più simile a quella reale - questo significa non solo l'assenza di un ritardo simile alla MA, ma anche che a volte sarà molto sbagliata ;-).
Ciò richiede processi di pre-elaborazione dei dati più complessi e una trattazione separata dell'argomento. Sembra che molto dipenda dalla natura delle relazioni tra i dati (i mercati hanno relazioni complesse).
Per quanto ne so, se non ci sono nuove informazioni (o il loro ruolo è insignificante nel senso delle trasformazioni lineari Elaborazione ottimale del segnale, 1.4 Cancellazione della correlazione 1.5 Ortogonalizzazione di Gram-Schmidt), allora la migliore previsione sarà il valore passato (ma se viene preso in considerazione correttamente, non dovrebbe sbagliare molto, anche se ha bisogno di esperimenti).
Per quanto riguarda le metriche ("direzioni" di ottimizzazione dei pesi della rete) che ritengo sia necessario comprendere (per le serie temporali finanziarie), la questione richiede un articolo a parte.
Invitiamo tutti a condividere le proprie esperienze.
Qualsiasi progetto di apprendimento automatico si compone di tre fasi:
L'utilizzo dei modelli ONNX in µl risolve il problema dell'implementazione. È vero che non tutti i modelli e non sono del tutto semplici.
L'addestramento e l'ottimizzazione dei modelli sono risolti con un processo separato in Python.
Ma di tutto ciò, la prima fase è quella che richiede più tempo, più creativa e più importante. Ed è impossibile realizzarla su µl. Non consideriamo la scalatura primitiva come una preelaborazione. E la saggezza popolare dice: "Garbage in - rubbish out". C'è troppo da sviluppare e implementare in MCL per poter utilizzare appieno il MO solo su MCL. Non si può abbracciare l'immenso, soprattutto perché è in continua espansione.
Pertanto, per eseguire un preprocesso, o lo si realizza in un altro linguaggio (chi ha padronanza di R/Python/Julia, ecc.) o si cerca di convertirlo in ONNX.
Il vantaggio di aver implementato ONNX finora è che impareremo a convertire, creare, semplificare e ottimizzare i modelli ONNX. Potrebbe essere utile in futuro.