Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 3322

 
Ninguém estava discutindo nada, você entrou em uma conversa sobre a complexidade do modelo ou reagiu a uma publicação, por isso é conhecido como um otimizador.
 
Maxim Dmitrievsky #:
Ninguém discutiu nada, você interferiu em uma conversa sobre a complexidade do modelo ou reagiu a uma postagem, então você é conhecido como um otimizador.

É isso, Maxim. Não há motivo para mais discussões, todos já descobriram tudo. Sanych está assistindo aqui, que vem discutindo comigo há séculos que é prejudicial procurar um global, ao que eu respondi "dependendo do tipo de global", e Sanych ainda não entendeu que ele está procurando um global no final.

Espero que a discussão retorne a uma direção calma, amigável e construtiva.

E todos que leem este tópico regularmente se lembram de quem, o que e quando foi dito, não incluam a inconsciência - isso é inútil. Cometi um erro hoje - desenhei o gráfico errado, admiti calmamente o erro e disse isso. É normal admitir seus erros, Maxim.

 
Andrey Dik #:

Por que não? Sim. Não tenho uma ideia diferente, mas é que muitas pessoas não gostam de chamar as coisas por seus nomes próprios por algum motivo.

Quando exatamente interromper o aprendizado é uma questão de escolha de metodologia, eu estava apenas enfatizando que é impossível interromper o aprendizado sem detectar um extremo global (bem, ou forçosamente, o que não terá nenhuma utilidade prática).

Vejo apenas um mal-entendido dos oponentes - anteriormente, houve uma conversa sobre otimização e que o overfitting em um testador e o treinamento de um modelo são coisas diferentes. Só que, no aprendizado de máquina, o processo de seleção de preditores geralmente é uma tarefa separada, enquanto no testador de terminal você pode alterar com frequência as leituras desses preditores - um exemplo simples aqui é a pesquisa de configurações de indicadores, mas, ao mesmo tempo, no testador você pode usar variáveis para processar os valores desses indicadores - limites móveis, regras de comparação, coeficientes com significado lógico diferente.

Portanto, sem ver o código do Expert Advisor, não se pode dizer sem ambiguidade como é o processo de otimização - criação de regras ou busca de preditores que funcionam melhor com regras fixas, ou uma e outra parte é implementada. Daí toda a discussão, em minha opinião, sobre esse tópico.

Considerando que o ajuste excessivo de tudo e qualquer coisa é geralmente aplicado, Maxim argumenta que isso não é aprender com um professor, pois a lógica de marcação pode estar ausente e as situações não são semelhantes entre si, o que complica o processo de aprendizado. E com razão, em essência, temos muitas classes diferentes que são agrupadas com base em gostos e desgostos, mas elas podem não ser semelhantes em atributos umas às outras. Anteriormente, sugeri um método para eliminar gradualmente esses dados, por meio da aprendizagem incremental, isolando a ausência de contradições na amostra inicial usando um modelo treinado e, em seguida, treinando os dados restantes. Essa não é a única solução. O tópico realmente merece atenção.

Sobre o critério de parada - aqui, é claro, você pode escolher o seu critério e procurar o valor ideal, dependendo do que é mais prioritário nas respostas do modelo. No entanto, ele não precisa ser necessariamente um critério de aprendizado de máquina - às vezes, você pode simplesmente definir um número fixo de iterações, ou seja, pode treinar sem esse critério. A questão é sempre diferente: como escolher um modelo que funcione com novos dados. É melhor procurar critérios que respondam a essa pergunta.

 
Andrey Dik #:


Assim, o aprendizado em aprendizado de máquina pode ser visto como uma otimização, em que o objetivo é encontrar a combinação de parâmetros do modelo que minimize a função de perda e obtenha o melhor desempenho do modelo.
Eu discordo. Essa é apenas uma pequena parte do MOE. Transformadores, o aprendizado causal no MOE definitivamente não é otimização em geral.
 
Andrey Dik #:

Bingo!

Agora você finalmente percebeu que qualquer aprendizado nada mais é do que otimização com busca de um extremo global. Ou talvez você ainda não tenha percebido, mas perceberá.

Não pode ser de outra forma, você sempre precisa de um critério inequívoco para interromper o aprendizado e esse critério é sempre projetado de forma que seja um extremo global. Normalmente, um critério integral é projetado (nem sempre). Você chamou de critérios integrais.

Sempre achei que a busca de extremos em uma função é uma análise funcional, assim como o desenvolvimento de um algoritmo pode ser chamado de otimização. Afinal de contas, escolhemos o melhor de acordo com alguns critérios)
 
Ah, esses termos e sua interpretação))))))
É como se fosse um tipo de negócio sagrado)))))
 

O problema dos neurônios em Python são belas imagens de estatísticas em uma escala macro. Assim que você começa a analisá-las, verifica-se que o neurônio se torna uma média móvel - ele está próximo do preço de previsão, mas não adivinha a direção. A direção é estimada em 50/50, portanto, é impossível negociar com esses neurônios.

Experimentei os artigos aqui e, com o ChatGPT, coletamos 10.000 neurônios em 3 camadas, ou 10 camadas de 1.000 neurônios, ou uma camada de 100.000 neurônios (meu RTX 3080 estava completamente entupido e, se você pegar mais, o python escreveu que não há memória suficiente), e RNN, e LSTM, e CNN, e CNN-LSTM, e CNN-BiLSTM, e CNN-BiLSTM-MLP com duas regulagens e desistências, e Q-learning. O DQN só falhou, o Chat escreveu o Actor-Critic por algumas páginas, mas o código acabou apresentando erros que nem eu nem o Chat conseguimos corrigir.

Tudo isso não funciona. O resultado é o mesmo em todos os lugares - transformando-se em uma média móvel. Inseri tudo o que era possível no tópico "o que inserir na rede neural" e muitas outras coisas.

E aqui estou eu cortando cebolas na cozinha, com o YouTube tocando ao fundo e recomendações sendo dadas a um cara de cabelo encaracolado que está prestes a criar uma rede neural que prevê preços. Ok, vamos lá, eu digo a mim mesmo, tente.

E então ele abre o Google-collab e começa a escrever código Python (acho que é Python). Joga lá os preços de fechamento, se não me engano - do dia, do bitcoin. Treina o código. Verifica. Aqui, limpei meus olhos do arco e comecei a olhar o resultado.

O resultado é o seguinte: a previsão vai ao lado do preço real, mas... com um palpite direcional. Então, digamos que era 35000, a previsão é 37500, o fato é 37100. Próxima etapa: previsão de 35700, fato de 35300. Previsão 34000, fato - 35000. E assim por diante. Ele escreveu uma rede que prevê não o próximo preço, mas 12, eu acho, próximos preços em uma linha de cada vez. E aqui eles coincidiram após cada passo na direção.


Pergunta: é realmente possível escrever algo que funcione em Python?

 
Andrey Dik #:

Isso é tudo, Maxim. Não faz sentido continuar a discussão, pois tudo já foi descoberto. Aqui, aqui perto, e Sanych observa que, desde tempos imemoriais, argumentou comigo que, digamos, a pesquisa global é prejudicial, ao que respondi "dependendo de qual global", e Sanych também ainda não percebeu que, no final, está procurando um global.

Espero que a discussão retorne a uma direção calma, amigável e construtiva.

E todos que leem este tópico regularmente se lembram de quem, o que e quando foi dito, não incluam a inconsciência - isso é inútil. Cometi um erro hoje - desenhei o gráfico errado, admiti calmamente o erro e disse isso. É normal admitir seus erros, Maxim.

Não faça isso por mim.

Estávamos discutindo o testador, não o MO.

No MO, eles não estão procurando um ótimo, mas uma coincidência de um erro no treinamento, teste e validação. Em seguida, eles o executam passo a passo em mais um arquivo. Em todos os lugares deve haver aproximadamente o mesmo erro.

Não há espaço para otimização aqui.

 
СанСаныч Фоменко #:

Não faça isso por mim.

A discussão foi sobre o testador, não sobre o MO.

No MO, eles não estão procurando um ótimo, mas uma coincidência de um erro no treinamento, teste e validação. E, em seguida, executam-no passo a passo em mais um arquivo. Deve haver aproximadamente o mesmo erro em todos os lugares.

Não há espaço para otimização aqui.

Vermelho é otimização, no seu caso soará como "reduzir a variação" ou "definir uma variação fixa de um determinado valor", dependendo do que estiver fazendo)))

 
Andrey Dik #:

Vermelho é otimização e, no seu caso, soaria como "reduzir a variação" ou "definir uma variação fixa de um determinado valor", dependendo do que você estiver fazendo)))

De alguma forma, você não está entendendo o texto.

A otimização(?) SÓ é possível na linha em que o modelo é treinado. Durante o treinamento, há um algoritmo e você pode ver a otimização com uma lupa. Depois, há um teste desse modelo, que não tem NENHUM feedback com a "otimização", porque não há parâmetros no modelo que possam afetar os resultados do teste. Para afetar, você precisa fazer algo em relação aos preditores e/ou ao professor.

No MOE, ou seja, no pré-processamento, no ajuste do modelo e na estimativa do modelo, NÃO pode haver otimização porque o erro resultante é uma propriedade dessas três etapas.

Razão: