Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 233

 
Vladimir Perervenko:

No obtuve buenos resultados. Necesita predictores (a diferencia de otros modelos) que estén altamente correlacionados.

No pude encontrar ninguno que diera resultados aceptables. Sin embargo, hace tiempo que no experimento. No tengo mucho tiempo. Puedes probarlo. La muestra tiene un código totalmente funcional.

Buena suerte

PS. Si lo pruebas, en las matrices de entrada los predictores deben ser filas y no columnas.

Gracias, pero estoy por desgracia ahora se dedican a una completamente diferente, en un futuro próximo simplemente no puede sentarse, me encontré con un método de trabajo, pero todo sigue en bruto, la investigación acaba de comenzar y siento que se prolongará durante mucho tiempo, un montón de trabajo ...

Otra pregunta, no me pegues) ¿Es posible utilizar paquetes estándar de MO, forrests, redes, vectores, convoluciones, etc. en la formación sin un profesor?

Sospecho que se puede, pero no he podido averiguar cómo hacerlo.

Por ejemplo en forrest

data("iris")

library(randomForest)

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


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

Creo que lo enseñé sin profesor.

según el traductor de google ----> clasificaciónno supervisada

> 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

¿pero cómo reconocerlo? ))

predict(model , set[1,])



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


¿Puede ayudarme a resolver esto?

 
mytarmailS:

Gracias pero desgraciadamente estoy haciendo algo completamente diferente en este momento, no podré sentarme por un tiempo, he encontrado un método de trabajo, pero aún está crudo, la investigación apenas comienza y siento que tomará mucho tiempo, hay mucho trabajo por hacer...

Otra pregunta, no me pegues) ¿Es posible utilizar paquetes estándar de MO, forrests, redes, vectores, convoluciones, etc. en la formación sin un profesor?

Sospecho que se puede, pero no he podido averiguar cómo hacerlo.

Por ejemplo en forrest

data("iris")

library(randomForest)

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


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

Creo que lo enseñé sin profesor.

según el traductor de google ----> clasificaciónno supervisada

> 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

¿pero cómo reconocerlo? ))

predict(model , set[1,])



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


¿Hay alguna manera de que me aclare esto?

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

Le recomiendo encarecidamente que utilice RandomUniformForest. Hay un montón de características que otros "andamios" no tienen. Específicamente sobre el aprendizaje no supervisado :

Aprendizaje no supervisado con bosques aleatorios uniformes

Descripción

El modo no supervisado de los Bosques Aleatorios Uniformes está diseñado para proporcionar, en todos los casos, agrupación, reducción de la dimensión, fácil visualización, importancia profunda de las variables, relaciones entre las observaciones, las variables y los clusters. También cuenta con dos puntos específicos: la evaluación sencilla (análisis de clústeres) y la agrupación dinámica, que permite cambiar sobre la marcha cualquier forma de agrupación. Se utiliza un motor de tres capas: matriz de disimilitud, escalado multidimensional (MDS) o descomposición espectral, y k-means o agrupación jerárquica. El modo no supervisado no requiere que se conozca el número de conglomerados, gracias al estadístico gap, y hereda de las principales propiedades algorítmicas del modo supervisado, permitiendo (casi) cualquier tipo de variable.

Buena suerte

 
Vladimir Perervenko:

Sí lo es, la pregunta general es si es posible enseñar sin un profesor todos estos paquetes populares de MOE - randomforest , nnet , svm ...... etc.

Forrest, sólo tomándolo como ejemplo...

En realidad, me gustaría entrenar una red de convolución sin un maestro

 
mytarmailS:

Sí lo es, la pregunta es general, ¿se pueden enseñar todos estos paquetes populares de MOE - randomforest , nnet , svm ...... sin un profesor etc.

Forrest, sólo tomándolo como ejemplo...

En realidad, es la red convolucional la que me gustaría enseñar sin un profesor.

¿Qué quieres enseñar?

¿Cuál es la idea que hay detrás?

Sólo conozco estos modelos para enseñarlo sin profesor: AutoEncoder, RBM, RF de diferentes variedades, modelos de clustering. Pero las convolucionales son imposibles...

Buena suerte

 
Vladimir Perervenko:

¿Qué quieres enseñarle?

¿Cuál es la idea?

Sólo conozco estos modelos de aprendizaje sin profesor: AutoEncoder, RBM, RF de diferentes variedades, modelos de clustering. Pero los de convolución son imposibles...

Buena suerte

Pues bien, como una red convolucional puede detectar patrones similares que siguen siendo ligeramente diferentes en su forma, esto la diferencia de las MOs "lineales" convencionales

como Forrest, redes generales, etc.

Y quiero enseñar sin profesor porque es mucho mejor dividirlo primero en grupos, como "naturalmente, por similitud" y luego emparejarlo con el objetivo, que enseñar inmediatamente con el objetivo y crear/ajustar los grupos al objetivo

Escribí sobre la idea del cluster, funciona mejor que cualquier MO convencional para mi objetivo, si lees...

Todavía hay un problema con todo esto y es que ninguna situación en el mercado es exactamente igual, es la no estacionariedad, y aquí veo dos maneras, es una red convolucional o algoritmo dtw o algún tipo de interpolación o extrapolación, ni siquiera sé su nombre exacto.

La idea es que las agrupaciones se adapten mejor a la no estacionalidad.

 

Por favor, ayúdame a entender...

hay un 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

Todo está bien, todo funciona, pero hay un problema en la línea

idx <- 1:i

En cada iteración el vector idx se incrementa, y si hay muchos datos el código se vuelve salvajemente lento, por supuesto, y cuanto más avanza...

He resuelto el problema de forma sencilla: en cada iteración, sólo se tomarán los últimos 100 valores del vector en lugar de todo el

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]   )
                  
}

Pero la salida de este código ya parece desordenada

[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

¿Qué diablos pasa? Todo parece estar correcto, ¿hay un error o algo así?

 
¿perplejo? :), aparentemente...
 

mytarmailS:


¿Qué demonios pasa? No pasa nada, ¿es un error o algo así?

Se llama "ropa interior", es como si estuvieras empujando descaradamente tu ropa interior en la cara de las damas y los caballeros, y eso no sienta bien a los que te rodean. Es mejor esconder la ropa interior. ¿Ha visto, por ejemplo, a Nikolay Kositsyn o a Reshetov, mostrando su ropa interior?
 
pantural:

En realidad se llama "hay un error, pero no hay un ejemplo de cómo reproducirlo". Necesitas una tabla especial con más de 100 columnas, y entonces algo irá mal en ella. Y el ejemplo es un trozo de tabla pequeño en el que no se puede comprobar nada, y además por texto y no por archivo RData.

Al azar, creo que el error está en los índices. Los valores en s3 serán siempre de 1 a 100, independientemente del índice inicial i.
Si se desplaza s1 en (i-100)-1 con respecto al inicio de la tabla dat, este desplazamiento deberá tenerse en cuenta cuando se vuelva a acceder a dat con el nuevo índice obtenido. La última línea debería ser print(dat[i-101+s3]). Puede ser 100 en lugar de 101. O 102. En algún lugar de esos números :)

 

pantural:
Se llama "ropa interior", es como si estuvieras metiendo tu ropa interior descaradamente en la cara de las damas y los caballeros, y eso no sienta bien a los que te rodean. Es mejor esconder la ropa interior. ¿Ha visto a Nikolay Kositsyn o a Reshetov, por ejemplo, enseñando la ropa interior?

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

Puedes llamarlo "spoof", pero en la comunidad de R es costumbre citar código reproducible cuando se hace una pregunta. Y eso es correcto. Las historias sin citar el código son palabras vacías. El objetivo de este hilo es enseñar con ejemplos de MdD.

¿Por qué te apuntas a todos los que te rodean? No hace falta que pongas normas, nadie te ha autorizado a hacerlo.

Muy bien hace mytarmailS y otros participantes que dan ejemplos de código que muchos pueden aprender algo útil para sí mismos.