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

 

Gostaria de acrescentar minha opinião: nos últimos dias também tenho pensado em reduzir o número de variáveis de entrada para acelerar o processo de otimização. E devo dizer que tenho tido algum sucesso na peneiração de insumos desnecessários nos dias de hoje.

Pergunta: Que variáveis de entrada devem ser removidas da amostra de treinamento, pois são noise????

Na verdade, esta questão não é trivial, se soubéssemos quais os inputs que são ruído e quais os que não são. Seria fácil construir um modelo. Mas quando temos todos os inputs de uma forma ou de outra relacionados com o output. O que então????? Quais remover?

Para mim a resposta é muito simples.... Você só precisa manter os insumos que têm uma lei de distribuição normal. Quando um histograma tem uma distribuição normal e o centro do mesmo está no meio da faixa. Estas são as variáveis que podem ser úteis para o treinamento. Não estou a dizer que há um alfa de saída em tais variáveis. Pode não estar lá. Mas a busca em si será mais completa e em tais variáveis o algoritmo tem mais chances de pegar e aumentar o número de inputs. Aqui está um exemplo:

Este input é considerado bom. Como tem uma distribuição normal e a parte central do histograma está no meio da faixa

Mas estes dados têm uma distribuição distorcida com outliers fora do histograma principal. Este histograma mostra que os dados estão enviesados para um lado que dificilmente será útil na construção do modelo

Na fase inicial de seleção dos inputs, não podemos julgar o significado de um input para o output. Porque este é o trabalho para o optimista. Na fase inicial, só podemos julgar a distribuição da variável em relação a zero. E se essa distribuição for normal (os dados são distribuídos uniformemente de um lado e do outro em relação a zero), então o otimizador muito provavelmente terá mais escolha, ao contrário dos dados oblíquos em relação a zero onde a maioria dos dados está na zona negativa ou vice-versa.

Então é assim....

 

Depende do modelo que você os escolher :) se depois de remover uma característica não-informativa, o modelo não perde muito em precisão, então você não precisa dele. Apague-o, recicle-o novamente e veja se há algo extra novamente.

E se você tiver um modelo de regressão com um processo não estacionário na saída, você arruinará tudo com esta abordagem, porque ele será retrabalhado com ruído normalmente distribuído

 
Maxim Dmitrievsky:

Depende do modelo que você os escolher :) se depois de remover uma característica não-informativa, o modelo não perde muito em precisão, então você não precisa dele. Apague-o, recicle-o novamente e veja se há algo extra novamente.

E se você tem um modelo de regressão com um processo não estacionário na saída, com esta abordagem você arruinará tudo vice versa, porque ele irá se retrair sobre ruídos normalmente distribuídos


Classificação em relação a zero. Para estes propósitos esta abordagem é a mais correcta IMHO!

 
Mihail Marchukajtes:

Estes dados, por outro lado, têm uma distribuição oblíqua com outliers fora do histograma principal. Este histograma indica que os dados estão inclinados para um lado, o que é improvável que seja útil para a construção do modelo.

Nos artigos de Vladimir, há um ponto sobre a remoção de outliers, se os outliers da sua figura nº 2 forem removidos, você terá uma distribuição mais normal.

E há também a centralização dos dados de entrada - isso irá melhorar ainda mais a situação.

 
elibrarius:

Nos artigos de Vladimir, há um ponto sobre a remoção de outliers, se os outliers da sua figura nº 2 forem removidos, você terá uma distribuição mais normal.

E depois há a centralização das entradas - vai melhorar ainda mais as coisas.


O que faremos quando este outlier chegar nos novos dados? Como é que o modelo o interpreta?

Remover um outlier dos dados significa remover todo o vector de entrada num determinado outlier, e se houver dados importantes nesse vector em outras entradas. Se a natureza do input é propensa a tais aberrações, é melhor não tomar esse input de todo. IMHO.

 
Mihail Marchukajtes:

Classificação relativa a zero. Para estes propósitos, esta abordagem é a mais correcta IMHO!


Sim, se as saídas forem distribuídas aproximadamente de acordo com a mesma lei, se não - a mesma requalificação

 
elibrarius:

Nos artigos de Vladimir, há um ponto sobre a remoção de outliers, se os outliers da sua figura nº 2 forem removidos, você terá uma distribuição mais normal.

E depois há a centralização dos dados de entrada - vai melhorar ainda mais as coisas.


A remoção de outliers é uma medida estatística ou uma muleta (a la o desejo de tornar tudo estacionário), o que pode piorar significativamente as previsões sobre o forex e levar todo o sistema a nada (só funcionará onde o mercado é normalmente distribuído).

Você precisa entender onde NS está sendo usado e para que propósito... e não apenas fazer o que você quer de um livro :)

Vladimir não tem nenhuma prova de robustez dos seus modelos... apenas testes muito duros de modelos no mesmo R

por isso não sei no que acreditar nesta vida... tudo tem de ser verificado duas vezes.

 
Maxim Dmitrievsky:

Sim, se os resultados forem distribuídos aproximadamente a mesma lei, se não, será o mesmo sobretreinamento


Bem, eu sempre equilibro a saída para um número igual de classes "0" e "1". Ou seja, tenho a saída equilibrada e tomo inputs com uma distribuição normal em relação a zero. O Optimizer tem de funcionar várias vezes, mas como regra, quanto mais inputs forem utilizados no modelo, melhor será o seu desempenho. Portanto, seleciono o modelo mais paramétrico com o resultado máximo na seção de teste. A seguir, vou usar o boosting e outros truques...

 
Mihail Marchukajtes:

O que fazer quando este outlier chegar nos novos dados? Como é que o modelo o interpreta?

Remover o outlier dos dados significa remover todo o vector de entrada para um dado outlier, no caso de existirem dados importantes nesse vector para outras entradas. Se a natureza do input é propensa a tais aberrações, é melhor não tomar esse input de todo. IMHO.

Em novos dados, os outliers também são removidos, pelo intervalo obtido durante o treinamento. Suponha que você removeu de -100 para +100 durante o treinamento, lembrado - e removido pelos mesmos níveis nos novos dados. Você deve fazê-lo em valores absolutos e então você pode normalizar. Sem remover outliers, meu centro dos dados apagados continuou mudando e se tornou incomparável) consigo mesmo uma semana antes.

E os outliers só aparecem nos momentos de notícias ou eventos extraordinários, mas cada vez a força desses outliers será diferente. Decidi por mim mesmo que é melhor descartá-los, e Vladimir, eu mesmo não me lembrei disso, aparentemente isso é confirmado pela pesquisa de muitas pessoas.

 
Mihail Marchukajtes:


Bem, eu sempre equilibro a saída para um número igual de classes "0" e "1". Ou seja, eu equilibro a saída e tomo as entradas com uma distribuição normal em relação a zero. O Optimizer tem de funcionar várias vezes, mas como regra, quanto mais inputs forem utilizados no modelo, melhor será o seu desempenho. Portanto, seleciono o modelo mais paramétrico com o resultado máximo na seção de teste. Depois continuamos com o impulso e outras coisas...


Então não é finalmente o JPredictor? :)

Razão: