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

 
Vladimir Perervenko:

Eu não obtive bons resultados. Você precisa de preditores (ao contrário de outros modelos) que são altamente correlacionados.

Não consegui encontrar nenhum que desse resultados aceitáveis. Não faço experiências há muito tempo, no entanto. Eu não tenho muito tempo. Pode tentar. A amostra tem um código totalmente funcional.

Boa sorte.

PS. Se você tentar, nas matrizes de entrada os preditores devem ser linhas e não colunas.

Obrigado, mas infelizmente estou agora empenhado num trabalho completamente diferente, num futuro próximo não me posso sentar, deparei com um método de trabalho, mas tudo ainda em bruto, a pesquisa só agora começou e sinto que vai arrastar-se por muito tempo, muito trabalho...

Outra pergunta, não me vença) É possível usar pacotes de MO padrão, forrests, redes, vetores, convoluções, etc. em treinamento sem um professor?

Suspeito que sim, mas não consegui descobrir como o fazer.

Por exemplo, na floresta

data("iris")

library(randomForest)

label <- factor(iris$Species)
set <- iris[,-ncol(iris)]


model <- randomForest(x = set,data = set , mtry=4, ntree=20)

Acho que o ensinei sem um professor.

segundo o tradutor google ----> classificaçãonão supervisionada

> model

Call:
randomForest(x = set, ntree = 20, mtry = 4, data = set)
               Type of random forest: unsupervised
                     Number of trees: 20
No. of variables tried at each split: 4

mas como reconhecer? ))

predict(model , set[1,])



Error in predict.randomForest(model, set[1, ]) :
  No forest component in the object


Podes ajudar-me a resolver isto?

 
mytarmailS:

Obrigado, mas infelizmente estou fazendo algo completamente diferente no momento, não vou poder sentar por um tempo, encontrei um método de trabalho, mas ainda está cru, a pesquisa está apenas começando e sinto que vai demorar muito tempo, há muito trabalho a fazer...

Outra pergunta, não me vença) É possível usar pacotes de MO padrão, forrests, redes, vetores, convoluções, etc. em treinamento sem um professor?

Suspeito que sim, mas não consegui descobrir como o fazer.

Por exemplo, na floresta

data("iris")

library(randomForest)

label <- factor(iris$Species)
set <- iris[,-ncol(iris)]


model <- randomForest(x = set,data = set , mtry=4, ntree=20)

Acho que o ensinei sem um professor.

segundo o tradutor google ----> classificaçãonão supervisionada

> model

Call:
randomForest(x = set, ntree = 20, mtry = 4, data = set)
               Type of random forest: unsupervised
                     Number of trees: 20
No. of variables tried at each split: 4

mas como reconhecer? ))

predict(model , set[1,])



Error in predict.randomForest(model, set[1, ]) :
  No forest component in the object


Há alguma maneira de me esclareceres isto?

================================================

Eu recomendo fortemente que você use o RandomUniformForest. Há lá muitas características que outros "andaimes" não têm. Especificamente sobre a aprendizagem não supervisionada :

Aprendizagem sem Supervisão com Florestas Uniformes Aleatórias

Descrição

O modo sem supervisão de Florestas Uniformes Aleatórias foi concebido para proporcionar, em todos os casos, agrupamento, redução de dimensões, fácil visualização, importância de variáveis profundas, relações entre observações, variáveis e agrupamentos. Também vem com dois pontos específicos: fácil avaliação (análise de agrupamento) e agrupamento dinâmico, permitindo mudar de forma instantânea qualquer forma de agrupamento. Um motor de três camadas é usado: matriz de dissimilaridade, Escala Multidimensional (MDS) ou decomposição espectral, e meios k ou agrupamento hierárquico. O modo não supervisionado não requer que o número de clusters seja conhecido, graças à estatística de gap, e herda as principais propriedades algorítmicas do modo supervisionado, permitindo (quase) qualquer tipo de variável.

Boa sorte.

 
Vladimir Perervenko:

Sim é, a questão geral é se é possível ensinar sem um professor todos estes populares pacotes MOE - randomforest , nnet , svm ...... etc

Forrest, tomando isto como exemplo...

Na verdade, eu gostaria de treinar uma rede de convolução sem um professor

 
mytarmailS:

Sim é, a questão é geral, todos estes populares pacotes MOE - randomforest , nnet , svm ...... podem ser ensinados sem um professor etc

Forrest, tomando isto como exemplo...

Na verdade, é a rede convolucional que eu gostaria de ensinar sem um professor.

O que você quer ensinar?

Qual é a ideia por detrás disto?

Só conheço estes modelos para ensinar sem um professor: AutoEncoder, RBM, RF de diferentes variedades, modelos de clustering. Mas as convolucionais são impossíveis...

Boa sorte.

 
Vladimir Perervenko:

O que queres ensinar-lhe?

Qual é a ideia?

Só conheço estes modelos para aprender sem um professor: AutoEncoder, RBM, RF de diferentes variedades, modelos de clustering. Mas as de convolução são impossíveis...

Boa sorte.

bem, porque uma rede convolucional pode detectar padrões semelhantes que ainda são ligeiramente diferentes na forma, isto torna-a diferente das OP "lineares" convencionais.

como Forrest, redes gerais, etc...

E eu quero ensinar sem um professor porque é muito melhor primeiro dividi-lo em clusters, como "naturalmente, por semelhança" e depois combiná-lo com o alvo, do que ensinar imediatamente com o alvo e tipo de criar/ajustar os clusters ao alvo

Eu escrevi sobre a ideia do cluster, funciona melhor do que qualquer MOs convencional para o meu alvo, se você ler...

Ainda há um problema com tudo isso e é que nenhuma situação no mercado é exatamente a mesma, é a não-estacionariedade, e aqui eu vejo duas maneiras, ou é uma rede convolucional ou algoritmo dtw ou algum tipo de interpolação ou extrapolação, eu nem sei seu nome exato.

A idéia é tornar os clusters mais adaptativos à não-estacionariedade.

 

Por favor, ajude-me a entender...

há um código como este:

#есть вектор с некими нужными событиями "999" и не нужными "0"

X <- rep(0,1000)
Y <- rep(999,100)

dat <- sample(c(X, Y))
dat
> dat
   [1]   0 999   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  [28]   0   0   0 999 999   0   0   0   0   0   0   0   0   0   0 999   0   0   0   0   0   0   0   0   0 999   0
  [55]   0   0   0   0 999   0   0   0   0   0 999   0   0   0   0   0 999   0   0   0   0   0   0   0   0   0   0
  [82]   0   0   0   0   0   0   0   0 999   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
[109]   0   0   0   0   0   0   0   0 999   0   0   0 999   0   0   0   0   0   0   0   0   0   0   0   0   0   0
[136]   0   0   0   0   0   0   0 999   0   0   0   0   0 999   0 999   0   0   0   0   0   0   0   0   0   0   0

#///в каждой итерации цыкла я хочу видеть последние три нуждые события те когда было "999"

for(i in 101:length(dat)){
    
      idx <- 1:i
      
                  s1 <- dat[idx]
                  s2 <- which(s1!=0)  # s2 - получаем индексы нужного события те когда s1 было не ноль
                  s3 <- tail(s2,3)    # оставляем три поледних индекса
                  
                  print(  dat[s3]   )
                  
}

[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999

Está tudo bem, tudo funciona, mas há um problema em jogo.

idx <- 1:i

A cada iteração o vector idx aumenta, e se houver muitos dados o código torna-se extremamente lento, claro, e quanto mais se avança...

Resolvi o problema de uma forma simples - a cada iteração, apenas os últimos 100 valores do vector serão tomados em vez do todo.

idx <- (i-100):i

for(i in 101:length(dat)){
    

      idx <- (i-100):i # последние 100 значени  вместо idx <- 1:i
      
                  s1 <- dat[idx]
                  s2 <- which(s1!=0)  # s2 - получаем индексы нужного события те когда s1 было не ноль
                  s3 <- tail(s2,3)    # оставляем три поледних индекса
                  
                  print(  dat[s3]   )
                  
}

Mas a saída deste código já parece confusa.

[1] 0 0 0
[1] 0 0 0
[1] 0 0 0
[1] 0 0 0
[1] 0 0 0
[1] 0 0 0
[1] 999   0   0
[1] 0 0 0
[1]   0   0 999
[1] 999   0   0
[1] 0 0 0
[1] 0 0 0

Que diabos está errado? Tudo parece estar correto, há algum bicho ou algo assim?

 
intrigado? :), aparentemente...
 

mytarmailS:


Que diabos está acontecendo? Está tudo bem, é um bicho ou algo assim?

Chama-se "roupa interior", é como se estivesses a enfiar sem vergonha a tua roupa interior na cara de senhoras e senhores, e isso não fica bem com aqueles à tua volta. É melhor esconder a sua roupa interior. Já viu, por exemplo, Nikolay Kositsyn ou Reshetov, a mostrar a sua roupa interior?
 
pantural:

Na verdade é chamado de "há um bug, mas não há exemplo de como reproduzi-lo". Você precisa de uma tabela especial com mais de 100 colunas, e então algo vai dar errado com ela. E o exemplo é um pequeno pedaço de tabela em que você não pode verificar nada, e também por texto e não por arquivo RData.

Pura e aleatoriamente - acho que o erro está nos índices. Os valores em s3 serão sempre de 1 a 100, independentemente do índice inicial i.
Se você mudar s1 por (i-100)-1 em relação ao início da tabela de dados, então esta mudança deve ser levada em conta quando você acessar os dados novamente com o novo índice obtido. A última linha deve ser impressa(dat[i-101+s3]). Podem ser 100 em vez de 101. Ou 102. Em algum lugar nesses números :)

 

pantural:
Chama-se "roupa interior", é como se estivesses a meter sem vergonha a tua roupa interior na cara de senhoras e senhores, e isso não fica bem com aqueles à tua volta. É melhor esconder a sua roupa interior. Você viu Nikolay Kositsyn ou Reshetov, por exemplo, mostrando suas roupas íntimas?

========================

Você pode chamá-lo de "falso", mas na comunidade R é costume citar códigos reprodutíveis quando se faz uma pergunta. E isso é correcto. Histórias sem citar código são palavras vazias. O propósito deste tópico é ensinar com exemplos de MoD.

Porque te estás a inscrever para todos à tua volta? Não há necessidade de fazer regras, ninguém o autorizou a fazê-lo.

Tudo bem, mytarmailS e outros participantes, que dão exemplos de código que muitos podem aprender algo útil para si mesmos.

Razão: