Discussão do artigo "Avaliação e seleção de variáveis para os modelos de aprendizado da máquina" - página 4

 
JulInParis:

Oi Vlad,

Estou tentando executar novamente o seu exemplo, passo a passo.

Na seção Dados de entrada, a função In(p=16) lida com um objeto de preço. Qual é o formato ou a classe do R (zoo, xts ou dataframe) e como ele se parece (nomes das colunas etc.)? Sem essas informações, é impossível executar o comando x <- In(p = 16) ...

Com os melhores cumprimentos.

Julien

Olá, Julien,

> class(price)
[1] "matrix"
> colnames(price)
[1] "Open"  "High"  "Low"   "Close" "Med"   "CO"

Я приложил снимок сессии. Откройте его в Rstudio и проводите эксперименты.

Удачи

Владимир

Arquivos anexados:
EURUSD30.zip  302 kb
 
Zhi Long Yang:
Muito obrigado ao autor do artigo. Acabei de começar e estou tendo um problema. Instalei o RStudio, e não o Revolution R Open 3.2.1, como sugerido pelo autor. O pacote "RandomUniformForests" eo pacote "RoughSets" foram carregados, mas a função nearZeroVar() e a função findLinearCombos() não são chamadas corretamente. Os pacotes "RandomUniformForests" e "RoughSets" foram carregados, masa função nearZeroVar() e afunção findLinearCombos() não funcionam corretamente. Essas funções são específicas do Revolution R Open?

O Revolution R Open (agora mantido pela Microsoft e renomeado MRO) é uma versão aprimorada do R. O RStudio é apenas um IDE, não comparável ao R. As duas funções mencionadas estão no artigo original do autor. As duas funções mencionadas estão claramente identificadas como funções do pacote caret no artigo original do autor. Além disso, o autor do artigo original usou o russo, talvez o inglês ainda possa se comunicar, mas o chinês parece se comunicar.
 

Смотрите caret: :nearZeroVar () // caret::findLinearCombos ()

Удачи

 
Vladimir Perervenko:

Oi Julien,

> class(price)
[1] "matrix"
> colnames(price)
[1] "Open"  "High"  "Low"   "Close" "Med"   "CO"

Я приложил снимок сессии. Откройте его в Rstudio и проводите эксперименты.

Удачи

Владимир


Prezados,


Alguém pode me dizer o que significa a variável --Dig-- definida na função ZZ . É uma constante? Se sim, qual deve ser o valor dessa constante?

 
hzmarrou :


Prezados,


Alguém pode me dizer o que significa a variável --Dig-- definida na função ZZ . É uma constante? Se sim, qual deve ser o valor dessa constante?

Respondi a você na próxima ramificação.
 

Olá, Vladimir,


Desculpe-me por esta pergunta boba, mas estou tentando construir meu próprio modelo (muito simples) a partir do seu belo exemplo e estou me perguntando por que você está deslocando as diferenças de ZZ para frente na função ZZ:




dz <- zz %>% diff %>% c(0,.)

...quero dizer, afinal, queremos treinar um modelo para prever o valor FUTURO do Ziguezague, então, qual é o sentido de treinar um modelo usando preditores ( indicadores técnicos ) que resumem as cotações de mercado no final do dia N com um valor-alvo que é o sinal da diferença entre o valor do Ziguezague do dia N em relação ao seu valor N-1 (isso é o que você está fazendo após o deslocamento)? Não deveríamos usar o sinal da diferença entre o valor do Ziguezague no dia (N+1) e o valor do Ziguezague no dia N em vez disso (ou seja, não precisaríamos mudar)?

Sei que devo ter deixado passar alguma coisa óbvia em sua metodologia, mas se puder dedicar 5 minutos para esclarecer isso para mim, ficarei muito satisfeito.


Com os melhores cumprimentos.


Julien

 
JulInParis :

Olá, Vladimir,


Desculpe-me por esta pergunta boba, mas estou tentando construir meu próprio modelo (muito simples) a partir do seu belo exemplo e estou me perguntando por que você está deslocando as diferenças de ZZ para frente na função ZZ:




dz <- zz %>% diff %>% c(0,. )

...quero dizer, afinal, queremos treinar um modelo para prever o valor FUTURO do Ziguezague, então, qual é o sentido de treinar um modelo usando preditores ( indicadores técnicos ) que resumem as cotações de mercado no final do dia N com um valor-alvo que é o sinal da diferença entre o valor do Ziguezague do dia N em relação ao seu valor N-1 (isso é o que você está fazendo após o deslocamento)? Não deveríamos usar o sinal da diferença entre o valor do Ziguezague no dia (N+1) e o valor do Ziguezague no dia N em vez disso (ou seja, não precisaríamos mudar)?

Sei que devo ter deixado passar alguma coisa óbvia em sua metodologia, mas se puder dedicar 5 minutos para esclarecer isso para mim, ficarei muito satisfeito.


Com os melhores cumprimentos.


Julien

A pergunta está correta. Há um erro de digitação no artigo. Deveria ser assim:

1. calcular as entradas

 x <- In(p = 16 ) 

2. calcular o alvo

 out1 <- ZZ(ch = 25 )
 

> head(out1) zz sig [1,] 84.213 0 [2,] 84.199 -1 [3,] 84.185 -1 [4,] 84.171 -1 [5,] 84.157 -1 [6,] 84.143 -1 > tail(out1) zz sig [4995,] 89.3965 0 [4996,] 89.3965 0 [4997,] 89.3965 0 [4998,] 89.3965 0 [4999,] 89.3965 0 [5000,] 89.3965 0

3. Combinar x e out nos dados. Em que:

  • Exclua os exemplos em que sig == 0
  • Criar uma nova variável Сlass (fator)
  • Mudamos a variável Class para 1 barra no "futuro"
  • Removemos a variável sig do conjunto

 data <- cbind(x, sig = out1[ , 2 ]) %>% tbl_df %>% 
   dplyr::filter(., sig != 0 ) %>%
  mutate(., Class = factor(sig, ordered = F) %>% dplyr::lead()) %>% 
  dplyr::select(-sig) %>% 
  na.omit() 

> data %>% str() Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 4944 obs. of 18 variables: $ DX : num 0.355 0.541 6.324 3.026 9.511 ... $ ADX : num 12 11.3 11 10.5 10.4 ... $ oscDX : num 0.303 0.427 5.012 2.459 -8.641 ... $ ar : num -18.8 -18.8 -18.8 -18.8 -12.5 ... $ tr : num 0.032 0.051 0.037 0.004 0.011 ... $ atr : num 0.0422 0.0432 0.0425 0.038 0.0348 ... $ cci : num -14.75 20.6 27.23 6.22 -33.27 ... $ chv : num 0.0422 0.03 -0.0439 -0.0456 -0.1172 ... $ cmo : num -16.3 -20.1 -26.5 -39.2 -40.7 ... $ sign : num -0.0137 -0.013 -0.0117 -0.0107 -0.0108 ... $ vsig : num -0.00352 0.00655 0.0132 0.01059 -0.00103 ... $ rsi : num 45.7 49.8 50 46.8 42.4 ... $ slowD : num 0.408 0.438 0.447 0.43 0.405 ... $ oscK : num 0.0137 0.039 -0.0116 -0.0427 -0.0322 ... $ SMI : num -18.2 -16.6 -15.8 -16.2 -17.1 ... $ signal: num -12.8 -13.6 -14 -14.5 -15 ... $ vol : num 0.01005 0.01004 0.00985 0.00975 0.00946 ... $ Class : Factor w/ 2 levels "-1","1": 1 1 1 1 1 1 1 1 1 1 ... - attr(*, "na.action")=Class 'omit' Named int [1:34] 1 2 3 4 5 6 7 8 9 10 ... .. ..- attr(*, "names")= chr [1:34] "1" "2" "3" "4" ...

Mais adiante no texto.

Boa sorte

 

Há um grande problema na aplicação do sinal de ziguezague como variável-alvo.

A base de todos os modelos é baseada em pontos de ziguezague já existentes a priori (-1, 1), outros pontos com condição = 0 são excluídos.

Na prática, você não sabe se o ponto no tempo é um ponto em ziguezague (-1, 1) ou não, e há uma alta probabilidade de que seja um ponto com condição = 0, porque não é possível distinguir entre os dois estados (-1, 1) e (0).

Portanto, o mesmo cálculo e julgamento são necessários para o ponto em 0. Dessa vez, o modelo de treinamento e o modelo real terão um grande desvio;

 
freewalk :

O sinal de ziguezague como variável-alvo é muito problemático de aplicar.

A base de todos os modelos é baseada em um ponto de ziguezague já existente a priori (-1, 1), outros pontos com condição = 0 são excluídos.

Na prática, você não sabe se o ponto no tempo é um ponto em ziguezague (-1, 1) ou não, e há uma grande probabilidade de que seja um ponto com condição = 0, porque não é possível distinguir entre os dois estados (-1, 1) e (0).

Portanto, o mesmo cálculo e julgamento são necessários para o ponto em 0. Nesse ponto, o modelo de treinamento e o modelo real terão um grande desvio;

Desenho de um gráfico simples ilustrando os números (-1, 1 (0) ????

Por favor, leia o artigo com atenção? E ao lado dele? E não sabe como usar o ZZ?

Talvez a tradução não esteja boa?

Especifique com mais precisão seus comentários, por favor, pode melhorar o inglês?