Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
No primeiro comentário do vídeo, observe que você precisa especificar explicitamente a versão 2.10.0 do tensorflow
Obrigado, quero dizer
Não vale a pena experimentar, pois essa previsão não difere de uma ingênua (o valor do preço de fechamento anterior é considerado uma previsão). Nesse caso, você realmente obtém quase o menor erro de aprendizado (RMS), o que não diz nada sobre a capacidade de previsão do modelo. Em vez disso, trata-se de um exemplo didático no ONNX de que até mesmo uma arquitetura complexa pode ser facilmente transferida para o terminal. Não sei o que os autores desse artigo sobre pesquisa de arquiteturas de redes neurais para previsão de séries temporais estavam fumando :) aqui é necessário fazer a estimativa correta ou a classificação em vez da regressão.
Por favor, explique o exemplo da figura em que os outros 20% das velas de teste estão envolvidos. É um avanço? Por que a previsão coincide quase completamente com os preços reais (a julgar pela imagem, parecem dois candlesticks, apenas um está deslocado por uma barra), mas o testador está um pouco triste?
Explique o exemplo da imagem em que os outros 20% das velas de teste estão envolvidos. É uma previsão? Por que a previsão coincide quase completamente com os preços reais (a julgar pela imagem, parecem dois candlesticks, apenas um é deslocado por uma barra), mas no testador há alguma tristeza?
Você respondeu à sua própria pergunta, que obtém uma MA defasada como previsão (geralmente com um único deslocamento para trás). Esse é um truque bem conhecido quando se treina por meio de métricas padrão, pois elas são minimizadas com esse resultado.
Acima, adicionei um link para ler sobre outras métricas.https://stackoverflow.com/questions/65316205/implementation-os-nmae-as-metric-with-keras
Você respondeu à sua própria pergunta, que obtém uma MA defasada como previsão (geralmente com um único deslocamento para trás). Esse é um truque bem conhecido quando se treina por meio de métricas padrão, pois elas são minimizadas com esse resultado.
Acima, adicionei um link para ler sobre outras métricas.É necessário um artigo sobre esse tópico.
É necessário um artigo sobre esse tópico.
Aparentemente, as métricas do setor de energia também não se encaixam :) Não conheço uma boa solução, então mudei para a classificação.
No Google, para obter a melhor métrica de previsão, aparece MAPE (erro percentual absoluto médio).
Para usar explicitamente as métricas na otimização de modelos keras, elas devem ser especificadas explicitamente como uma função de perda, e não como em #13.
Uma implementação de mais de 100 métricas de regressão em Python pode ser encontrada aqui (Critério de informação de Akaike, distância de Aitchison, R-quadrado ajustado de Amemiya, Critério de previsão de Amemiya, Viés como e dado por Gupta, Critério de informação bayesiano, pontuação de Brier, coeficiente de correlação de Pearson, diferença centralizada da raiz quadrada média (RMS), MSE decomposto desenvolvido por Kobayashi e Salam...).
Exemplo com otimização da métrica MAPE (keras deve ser usado em vez de funções matemáticas numpy, porque tensores).
# 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])
Como é a aparência de sua otimização
gráfico preditivo:
No entanto, usar o MAPE na otimização aqui também produziu uma mudança.
Talvez precisemos considerar direções mais complexas de otimizações na forma de produtos de métricas.
Esse tópico requer uma pesquisa detalhada.
O Google para a melhor métrica de previsão mostra MAPE (erro percentual absoluto médio)
Para usar explicitamente as métricas na otimização dos modelos keras, elas devem ser especificadas explicitamente como uma função de perda, e não como em #13.
A implementação de mais de 100 métricas de regressão em Python pode ser encontrada aqui (Critério de informação de Akaike, distância de Aitchison, R-quadrado ajustado de Amemiya, Critério de previsão de Amemiya, Viés como e dado por Gupta, Critério de informação bayesiano, pontuação de Brier, coeficiente de correlação de Pearson, diferença centralizada da raiz quadrada média (RMS), MSE decomposto desenvolvido por Kobayashi e Salam...).
No entanto, quando o MAPE foi usado no processo de otimização, uma mudança também foi obtida aqui.
Talvez seja necessário considerar direções mais complexas de otimizações na forma de produtos de métricas.
Esse tópico requer um estudo detalhado.
Na minha opinião, o problema nem sempre está na métrica, mas na estrutura dos dados selecionados para a previsão - nesse caso, o conjunto de amostras mais "simples" foi usado para o exemplo. Tente, por exemplo, amostrar vetores através do espaço de incorporação (pegue amostras com um passo em que a autocorrelação da série desapareça) - você obterá uma previsão mais parecida com a real - isso significa não apenas a ausência de atraso do tipo MA, mas também que, às vezes, ela estará muito errada ;-).
Se você cortar e colar partes da série sem histórico de notícias, o resultado deverá ser aceitável.
Na minha opinião, o problema nem sempre está na métrica, mas na estrutura dos dados selecionados para a previsão - nesse caso, o conjunto de amostras mais "simples" foi usado para o exemplo. Tente, por exemplo, amostrar vetores através do espaço de incorporação (pegue amostras com um passo em que a autocorrelação da série desapareça) - você obterá uma previsão mais semelhante à previsão real - isso significa não apenas a ausência de atraso semelhante ao MA, mas também que, às vezes, ela estará muito errada ;-).
Isso requer processos de pré-processamento de dados mais complexos e um tratamento separado do tópico. Parece que muito aqui depende da natureza das relações entre os dados (os mercados têm relações complexas).
Até onde entendo, se não houver novas informações (ou se seu papel for insignificante no sentido das transformações lineares Processamento ideal de sinais, 1.4 Cancelamento de correlação 1.5 Ortogonalização de Gram-Schmidt), então a melhor previsão será o valor passado (mas se ele for levado em conta corretamente, não deverá estar muito errado, embora precise de experimentos).
Quanto às métricas ("direções" de otimização dos pesos da rede) que acredito ser necessário entender (para séries cronológicas financeiras), a questão requer um artigo separado.
Convidamos todos a compartilhar suas experiências.
Qualquer projeto de aprendizado de máquina consiste em três estágios:
O uso de modelos ONNX no µl resolve o problema de implementação. É verdade que nem todos os modelos são fáceis.
O treinamento e a otimização dos modelos são resolvidos por um processo separado em Python.
Mas de todos os itens acima, o primeiro estágio é o mais demorado, altamente criativo e o mais importante. E é impossível realizá-la no µl. Não consideramos o dimensionamento primitivo como pré-processamento. E a sabedoria popular diz: "Lixo dentro - lixo fora". Há muito a ser desenvolvido e implementado adicionalmente na MCL para o uso completo do MO somente na MCL. Não é possível abraçar o imenso, especialmente porque ele está em constante expansão.
Portanto, para executar um pré-processo, crie-o em outra linguagem (quem tiver domínio de R/Python/Julia etc.) ou tente convertê-lo em ONNX.
A vantagem de implementar o ONNX até o momento é que aprenderemos a converter, criar, simplificar e otimizar os modelos ONNX. Isso pode ser útil no futuro.