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

 
SanSanych Fomenko:


Se você pegar quase qualquer livro sobre datamining, os procedimentos para remover os preditores correlatos são necessariamente descritos.

Os preditores interactivos não estão necessariamente correlacionados... Eles interagem em .....

E a presença de interação produz resultados da espécie:

> summary(lm(data = train_sample_list[[1]], price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16))


Call:

lm(formula = price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16, 

    data = train_sample_list[[1]])


Residuals:

      Min        1Q    Median        3Q       Max 

-0.035970 -0.000824  0.000001  0.000847  0.027278 


Coefficients:

                                          Estimate Std. Error t value Pr(>|t|)    

(Intercept)                              3.883e-05  3.146e-05   1.234  0.21714    

price_diff_lag_11                        4.828e-02  9.092e-03   5.310 1.12e-07 ***

price_diff_min_lag_16                   -3.055e-02  1.141e-02  -2.678  0.00743 ** 

price_diff_lag_11:price_diff_min_lag_16 -3.520e+00  3.515e-01 -10.014  < 2e-16 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1


Residual standard error: 0.0024 on 10465 degrees of freedom

Multiple R-squared:  0.01611, Adjusted R-squared:  0.01583 

F-statistic: 57.11 on 3 and 10465 DF,  p-value: < 2.2e-16

Todos os preditores são significativos (e a sua interacção). As estatísticas F são espectaculares...

 
Alexey Burnakov:

Os preditores interactivos não se correlacionarão necessariamente... Eles interagem em .....

E a presença de interação produz os resultados da espécie:

> summary(lm(data = train_sample_list[[1]], price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16))


Call:

lm(formula = price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16, 

    data = train_sample_list[[1]])


Residuals:

      Min        1Q    Median        3Q       Max 

-0.035970 -0.000824  0.000001  0.000847  0.027278 


Coefficients:

                                          Estimate Std. Error t value Pr(>|t|)    

(Intercept)                              3.883e-05  3.146e-05   1.234  0.21714    

price_diff_lag_11                        4.828e-02  9.092e-03   5.310 1.12e-07 ***

price_diff_min_lag_16                   -3.055e-02  1.141e-02  -2.678  0.00743 ** 

price_diff_lag_11:price_diff_min_lag_16 -3.520e+00  3.515e-01 -10.014  < 2e-16 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1


Residual standard error: 0.0024 on 10465 degrees of freedom

Multiple R-squared:  0.01611, Adjusted R-squared:  0.01583 

F-statistic: 57.11 on 3 and 10465 DF,  p-value: < 2.2e-16

Todos os preditores são significativos (e a sua interacção). As estatísticas F são espectaculares...

Bem, talvez eu tenha tido uma ideia diferente sobre o significado da palavra "interacção".
 

Vizard_:

Sem dados...

Sem dados, então não há nada para discutir.

Descansa... tu!

 
Vizard_:
Yur, pelo menos não sejas estúpido) Só me esqueci de quem te disse em 9 anos que a tua rede não está devidamente configurada, e com um politanalista pode puxar a fórmula))))
Não há pretensões e segredos, eu estou usando ferramentas padrão dm, às vezes com pequenas edições. Se só estás interessado nas referências, ouve,
mas a realidade é um pouco diferente... A experiência anterior estava em dados reais. Fi-lo com dados artificiais simples. O primeiro conjunto foi absolutamente reconhecido
corretamente. Acabei de adicionar ......... A resposta deve ser 100%, mas o jPrediction 11 é tão afiado "ii", que ele consegue dar))))) Em suma, afina,

O dispositivo ainda não funciona. Não te vou dar os dados, estás a exibir-te, vais descobrir sozinho... Versão 20 talvez eu olhe novamente, se o "anúncio" for como hoje))))


Você está ciente de que múltiplas otimizações sempre produzem resultados diferentes. Isto é otimização, se chegasse sempre à mesma resposta seria certamente bom, mas é muito estranho, tente otimizar algumas vezes, tenho certeza que 8 em cada 10 vezes você recebe o seu 100% Então é assim que é....
 
SanSanych Fomenko:
Bem, talvez eu tenha tido uma ideia diferente do significado da palavra "interacção".


Existem regras claras para tratar as interações em modelos lineares. Eles são um pouco mais complicados do que o tratamento de combinação linear:https://www.r-bloggers.com/interpreting-interaction-coefficient-in-r-part1-lm/

Mas você tem que cavar através de muitas combinações para encontrar interações significativas. Isso é uma vergonha.

Interpreting interaction coefficient in R (Part1 lm)
Interpreting interaction coefficient in R (Part1 lm)
  • grumble10
  • www.r-bloggers.com
Interaction are the funny interesting part of ecology, the most fun during data analysis is when you try to understand and to derive explanations from the estimated coefficients of your model. However you do need to know what is behind these estimate, there is a mathematical foundation between them that you need to be aware of before being able...
 
Mihail Marchukajtes:
Você está ciente de que múltiplas otimizações sempre produzem resultados diferentes? É otimização, se desse sempre o mesmo resultado seria bom, mas é muito estranho, tente otimizar várias vezes, tenho certeza que você vai conseguir os 100% por 8 em cada 10 vezes. Então é assim....

Ele nem percebe que a amostra geral antes do treinamento é dividida em partes ao acaso: alguns padrões vão para a parte de treinamento, outros para testar parte. E com tal quebra, pode muito bem acontecer que alguns padrões necessários para esclarecer os padrões estejam lotados na parte do teste e não representados na parte do treinamento. E como o algoritmo só treina na parte de treinamento e não tem habilidades telepáticas para descobrir o que está na parte de teste, erros ocorrerão ao calcular a capacidade de generalização. Ou seja, não acontece nada de surpreendente.

Mas quando os padrões que devem especificar padrões acabam por se distribuir uniformemente por diferentes partes da amostra, a capacidade de aprendizagem é maior do que no caso descrito acima.

Em outras palavras, há um efeito caso a caso e qualquer aleatoriedade pode mais cedo ou mais tarde mostrar seu lado indesejável.

É bem possível que se possa encontrar um método pelo qual a amostra geral seja dividida em partes não aleatórias, mas deterministicamente? Mas, até agora, a experiência tem mostrado que todo o determinismo na divisão de amostras é repleto de ajuste, seguido de sobre-aprendizagem.

 
Yury Reshetov:

Talvez seja possível encontrar um método pelo qual a amostra geral seja dividida em partes de uma forma determinista e não aleatória? Mas, até agora, a experiência mostra que todo o determinismo na partição de amostras está repleto de encaixe e posterior reciclagem.

Talvez você queira fazer o treinamento várias vezes e dividir a amostra aleatoriamente a cada vez? E então a partir deste conjunto pronto de modelos treinados podemos escolher e, em geral, podemos avaliar quão bom é o modelo.
Assim, podemos negar a probabilidade de obter um modelo ajustado aleatoriamente sem sermos reféns do determinismo.

 
Andrey Dik:
Talvez você precise fazer o treinamento várias vezes e dividir a amostra aleatoriamente a cada vez? E a partir deste conjunto pronto de modelos treinados você pode escolher e em geral você pode avaliar se o modelo é bom ou não.
Assim podemos reduzir a zero a probabilidade de obter um modelo ajustado aleatoriamente, sem sermos reféns do determinismo.

Isto já está implementado no jPrediction, ou seja, várias partições de amostra diferentes são calculadas em paralelo em diferentes núcleos de CPU (dois classificadores binários são um terrário por núcleo livre). O processador acaba por estar 100% carregado. O problema é que o número de núcleos na CPU é limitado, portanto a probabilidade de distribuição desigual de padrões só pode ser reduzida, mas é muito problemático minimizá-los. A menos que você treine os padrões em supercomputadores e não em PCs.

Por exemplo, se você computar padrões no supercomputador chinês Tianhe-2, ele tem 3.120.000 núcleos. A probabilidade de distribuição desigual dos padrões por partes da amostra seria insignificante. Se calcularmos padrões em uma equipe de 4 núcleos (mais alguns núcleos reservados a outras tarefas), não é surpreendente que, mais cedo ou mais tarde, possamos encontrar irregularidade.

 
Lembro-vos que ninguém me perguntou porque faço isto, mas eu faço a variável de saída igual ao número de um e zeros. Faço-o ajustando o lucro dos sinais de -10 pips para +50 pips. Se a quantidade de um e zeros for igual, o modelo raramente é dividido em dois. Mais uma vez, não é importante como dividir, é importante que a divisão seja estável.....
 
Yury Reshetov:

Isto já está implementado no jPrediction, ou seja, várias partições de amostra diferentes são calculadas em paralelo em diferentes núcleos de CPU (dois classificadores binários são um terrário por núcleo livre). O processador acaba por estar 100% carregado. O problema é que o número de núcleos na CPU é limitado, portanto a probabilidade de distribuição desigual do padrão só pode ser reduzida, mas é muito problemático minimizá-los. A menos que você treine os padrões em supercomputadores e não em PCs.

Por exemplo, se você computar padrões no supercomputador chinês Tianhe-2, ele tem 3.120.000 núcleos. A probabilidade de distribuição desigual dos padrões por partes da amostra seria insignificante. Se você computar padrões em uma equipe de 4 núcleos (e reservar um par de núcleos para outras tarefas), não é surpreendente que, mais cedo ou mais tarde, você vai encontrar irregularidade.

Quero dizer, é uma coisa útil a fazer. Portanto, em vez de 4 partições, obviamente não o suficiente, você deveria fazer 40 partições. Para 4 núcleos levaria 10 vezes mais tempo a contar, mas suponho que o tempo pode ser sacrificado em favor da robustez.

"Se pode ser feito e se vai fazer algum bem, deve ser feito". (c) Papo Carlo Albertovich.