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

 
Dr. Trader:

A Genética tenta encontrar os parâmetros corretos para um número limitado de chamadas de função. Reduzindo o número de variantes deste parâmetro (30 em vez de 200) o geneticista pode investigar a região de 1 a 30 com mais detalhes. E com razão, se você conhece os limites específicos para encontrar algum parâmetro de modelo, é melhor dar essa informação ao geneticista imediatamente.


Em alternativa:

Adicione esta linha (a verde) ao código, então o geneticista terá 500 indivíduos na população em vez dos 50 padrão. E ela será capaz de testar 10 vezes mais modelos (mas o tempo de execução do script também aumentará 10 vezes), sendo capaz de experimentar o maior número possível de combinações de parâmetros de modelos. Mesmo com um máximo de 200 neurónios acho que a genética pode encontrar melhores resultados com 0,85 também, ou pelo menos chegar perto dele.

Não consigo entender de que genética estás a falar. Não há genética na MLT. Basta ver a teoria do ELM ou a descrição do pacote elmNN:

"O algoritmo ELM é um método de treinamento alternativo para SLFN ( Single Hidden Layer Feedforward Networks ) que não precisa de nenhum ajuste iterativo ou parâmetros de configuração como taxa de aprendizagem, momentum, etc., que são questões atuais dos tradicionais algoritmos de aprendizagem baseados em gradientes ( como backpropagation ).

A formação de um SLFN com ELM é um modelo de aprendizagem em três etapas:

Dado um conjunto de treinamento P = {(xi , ti )|xi E R , ti E R , i = 1,..., N}, função de saída de nó oculto G(a, b, x), e o número de nós ocultos L

1) Atribuir aleatoriamente parâmetros de nós ocultos (ai , bi ), i = 1,..., L. Isso significa que os pesos do arco entre a camada de entrada e a camada oculta e a camada oculta são gerados aleatoriamente.

2) Calcular a matriz de saída de camada oculta H usando uma das funções de ativação disponíveis.

3) Calcular os pesos de saída B: B = ginv(H) %*% T ( multiplicação matricial ), onde T é a meta de saída do conjunto de treinamento.

ginv(H) é o inverso generalizado da matriz de saída de camadas ocultas H. Isto é calculado pela função do pacote MASS ginv.

Uma vez que o SLFN tenha sido treinado, o resultado de um conjunto de teste genérico é simplesmente Y = H %*% B ( multiplicação de matriz ). Características salientes:

- A velocidade de aprendizagem do ELM é extremamente rápida.

- Ao contrário dos tradicionais algoritmos de aprendizagem baseados em gradientes que só funcionam para funções de activação diferenciáveis, o ELM funciona para todas as funções de activação contínua não contida em segmentos não contíguos.

- Ao contrário dos tradicionais algoritmos de aprendizagem baseados em gradientes que enfrentam vários problemas como mínimos locais, taxa de aprendizagem inadequada e sobreajustamento, etc., o ELM tende a alcançar as soluções de forma simples sem tais questões triviais.

- O algoritmo de aprendizagem ELM parece muito mais simples do que outros algoritmos de aprendizagem populares: redes neurais e máquinas vetoriais de suporte".

Mesmo com um pequeno número de neurónios, é impossível obter duas redes neurais idênticas. O limiar para a transferência de saída contínua para uma classe está sendo definido incorretamente. Limiar = 0,5 é o pior caso. Aceitável = mediana/ Mas há outras mais avançadas.

Boa sorte.

 
Maxim Dmitrievsky:

Oh, vai ser algo para ler, já me tinha esquecido do que é. Ou melhor, esqueceu a diferença entre GBM e XGboost... ou não sabia

gbm pode impulsionar qualquer modelo, xgb parece estar nas árvores

Sei que o impulso é ligeiramente melhor do que o ensacamento, através do qual a floresta é construída. Não sei nada sobre requalificação.


A reinicialização NÃO tem nada a ver com o tipo de modelo.

Um modelo é requalificado em dois casos:

  • a presença de preditores de ruído é um grande problema e é resolvido SOMENTE através da instalação de preditores
  • sobreposição do modelo - "otimização" de seus parâmetros, geralmente em uma pequena amostra. Este tipo de sobreajuste é resolvido pela experiência do desenvolvedor.

 
SanSanych Fomenko:

SanSanych, pare de ficar histérico

 
Vladimir Perervenko:

Não consigo entender de que genética estás a falar. Não há genética no ELM. Basta olhar para a teoria ELM ou para a descrição do pacote elmNN:

"O algoritmo ELM é um método de treinamento alternativo para SLFN ( Single Hidden Layer Feedforward Networks ) que não precisa de nenhum ajuste iterativo ou parâmetros de configuração como taxa de aprendizagem, momentum, etc., que são questões atuais dos tradicionais algoritmos de aprendizagem baseados em gradientes ( como backpropagation ).

O treinamento de um SLFN com ELM é um modelo de aprendizagem em três etapas:

Dado um conjunto de treinamento P = {(xi , ti )|xi E R , ti E R , i = 1,..., N}, função de saída de nó oculto G(a, b, x), e o número de nós ocultos L

1) Atribuir aleatoriamente parâmetros de nós ocultos (ai , bi ), i = 1,..., L. Isso significa que os pesos do arco entre a camada de entrada e a camada oculta e a camada oculta são gerados aleatoriamente.

2) Calcular a matriz de saída de camada oculta H usando uma das funções de ativação disponíveis.

3) Calcular os pesos de saída B: B = ginv(H) %*% T ( multiplicação matricial ), onde T é a meta de saída do conjunto de treinamento.

ginv(H) é o inverso generalizado da matriz de saída de camadas ocultas H. Isto é calculado pela função do pacote MASS ginv.

Uma vez que o SLFN tenha sido treinado, o resultado de um conjunto de teste genérico é simplesmente Y = H %*% B ( multiplicação de matriz ). Características salientes:

- A velocidade de aprendizagem do ELM é extremamente rápida.

- Ao contrário dos tradicionais algoritmos de aprendizagem baseados em gradientes que só funcionam para funções de activação diferenciáveis, o ELM funciona para todas as funções de activação contínua não contida em segmentos não contíguos.

- Ao contrário dos tradicionais algoritmos de aprendizagem baseados em gradientes que enfrentam vários problemas como mínimos locais, taxa de aprendizagem inadequada e sobreajustamento, etc., o ELM tende a alcançar as soluções de forma simples sem tais questões triviais.

- O algoritmo de aprendizagem ELM parece muito mais simples do que outros algoritmos de aprendizagem populares: redes neurais e máquinas vetoriais de suporte".

Mesmo com um pequeno número de neurónios, é impossível obter duas redes neurais idênticas. O limiar para a transferência de saída contínua para uma classe está sendo definido incorretamente. Limiar = 0,5 é o pior caso. Aceitável = mediana/ Mas há outras mais avançadas.

Boa sorte.

No meu pequeno ficheiro de treino há 100% de correspondência entre sessões de treino...

 

Durante que período de tempo você descarrega os dados?

Eu tenho um intervalo de 2 anos e uma diferença de dados de 15 segundos. Preditores: 30 naturais e mais de 1000 geradas no formato "(double)(val1 < val2)".

No início também pensei que o número de preditores deveria ser reduzido, mas a prática mostrou que mais é melhor.

Naturalmente, 1000 preditores em 2 anos dá cerca de 3GB de volume. Usar R para tais volumes não é sério.

Python venceu R em datamining, porque há Cython e Jython, que se ligaram a projetos como TensorFlow, Spark, MXNet...

 
Dr. Trader:

A Genética tenta encontrar os parâmetros corretos para um número limitado de chamadas de função. Reduzindo o número de variantes deste parâmetro (30 em vez de 200) o geneticista pode investigar a região de 1 a 30 com mais detalhes. E com razão, se você conhece os limites específicos para encontrar algum parâmetro de modelo, é melhor dar essa informação ao geneticista imediatamente.


Em alternativa:

Adicione esta linha (a verde) ao código, então o geneticista terá 500 indivíduos na população em vez dos 50 padrão. E ela será capaz de testar 10 vezes mais modelos (mas o tempo de execução do script também aumentará 10 vezes), sendo capaz de experimentar o maior número possível de combinações de parâmetros de modelos. Mesmo com o número máximo de neurônios de 200, acho que a genética será capaz de encontrar melhores resultados com 0,85 também, ou pelo menos chegar perto dele.

Obrigado!!!! Melhorou muito. Bem, vamos ver como corre... O principal é ganhar constantemente...

 
Vladimir Perervenko:

Não consigo entender de que genética estás a falar.

Está no guião que mostrei ao Mikhail há cem páginas. O algoritmo genético está passando pelos parâmetros para elmnn (função de ativação, grão gpsh, número de neurônios ocultos). A função de aptidão para a genética treina um comité de modelos elmnn utilizando estes parâmetros, avaliados via kfold, etc.

Eu mesmo escrevi este roteiro, quando me inspirei no seu artigo sobre otimização elmnn e Bayesian. Mas eu implementei a genética em vez das iscas, funciona muito mais rápido desta forma, e a estimativa do comitê é feita a meu gosto.

 
SanSanych Fomenko:

O modelo é requalificado em dois casos:

  • a presença de preditores de ruído é um grande problema e é resolvido SOMENTE selecionando preditores

A questão não é só para ti, - para todos.

Na prática é assim, ou seja, se há preditores de ruído, NS não pode sair de 50-55%. Se você pegar, ele pode até dar 70%.

Mas porque é que isto é assim?
1) Bem, NS deve selecionar automaticamente pesos próximos de 0 para os preditores de ruído durante o treinamento (é equivalente à sua exclusão da seleção). Nós vimos isso no problema no início do ramo.
2) Se não por treinamento para subestimar pesos, então pelo menos o abandono deve peneirar...

 
Dr. Trader:

Está no guião R, que mostrei ao Michael há cerca de cem páginas. Algoritmo genético tenta parâmetros para elmnn (função de ativação, grão gpsh, número de neurônios ocultos). Na função de aptidão genética, um comitê de modelos elmnn é treinado usando estes parâmetros, estimados via kfold, etc.

Copie-o para o seu blog, talvez outra pessoa precise dele. Não é realista procurar algo aqui.
 
elibrarius:

A questão não é só para ti, - para todos.

Na prática é assim, ou seja, se há preditores de ruído então NS não pode sair de 50-55%. Se você pegar, ele pode até dar 70%.

Mas porque é que isto é assim?
1) Bem, NS deve selecionar automaticamente pesos próximos de 0 para os preditores de ruído durante o treinamento (é equivalente à sua exclusão da seleção). Nós vimos isso no problema no início do ramo.
2) Se não por treinamento para subestimar pesos, então pelo menos o abandono deve peneirar...

Ainda há uma dimensão extra e você tem que traçar uma curva através dela de alguma forma, talvez com um grande erro.

O abandono escolar pelo contrário aumenta o erro, não?