Tiene buena pinta :)
Pero lo que es, y cómo usarlo, todavía tengo que averiguar :)
Tiene buena pinta :)
Pero lo que es, y cómo usarlo, tenemos que averiguar más :)
se puede utilizar como la primera capa oculta - para la reducción de la dimensionalidad o la propia agrupación, se puede utilizar en redes probabilísticas, y un montón de otras opciones.
¡Gracias por el material!
Intentaré aprenderlo con calma :)
Gracias por el nuevo artículo sobre un interesante método de trabajo en red. Si se repasa la literatura, hay docenas, si no cientos de ellos. Pero el problema para los traders no está en la falta de herramientas, sino en utilizarlas correctamente. El artículo sería aún más interesante si contuviera un ejemplo de uso de este método en un Asesor Experto.

Gracias por el nuevo artículo sobre un interesante método de trabajo en red. Si se repasa la literatura, hay docenas, si no cientos de ellos. Pero el problema para los traders no está en la falta de herramientas, sino en utilizarlas correctamente. El artículo sería aún más interesante si contuviera un ejemplo de uso de este método en un Asesor Experto.
1. El artículo es bueno. Se presenta de forma accesible, el código no es complicado.
2. Los inconvenientes del artículo incluyen el hecho de que no se dice nada en absoluto sobre los datos de entrada para la red. Se podría haber escrito unas palabras sobre lo que es de entrada - vector de cotizaciones para el periodo/datos indicadores, vector de desviaciones de precios, cotizaciones normalizadas o algo más. Para el uso práctico del algoritmo, la cuestión de los datos de entrada y su preparación es clave. Recomiendo utilizar un vector de cambios de precios relativos para este tipo de algoritmos: x[i]=precio[i+1]-precio[i].
Además, previamente, se puede normalizar el vector de entrada (x_normal[i]=x[i]/M), para lo cual, se puede utilizar como M la desviación máxima del precio para el periodo considerado (aquí y más abajo, por brevedad, no escribo declaraciones de variables):
M=x[ArrayMaximum(x)]-x[ArrayMinimum(x)];
En este caso, todos los vectores de entrada se encontrarán en un hipercubo unitario de lado [-0,5,0,5], lo que aumentará significativamente la calidad de la agrupación. También puede utilizar la desviación normal estándar o cualquier otra variable de promedio sobre las desviaciones relativas de las cotizaciones a lo largo del periodo como M.
3. El documento sugiere utilizar el cuadrado de la norma de la diferencia como distancia entre el vector de pesos de las neuronas y el vector de entrada:
for(i=0, sum=0; i<m; i++, sum+=Pow(x[i]-w[i],2));
En mi opinión, esta función de distancia no es eficaz, en esta tarea de agrupación. Más eficaz es la función que calcula el producto escalar o producto escalar normalizado, es decir, el coseno del ángulo entre el vector de pesos y el vector de entrada:
for(i=0, norma_x=0, norma_w=0; i<m; i++, norma_x+=x[i]*x[i], norma_w+=w[i]*w[i]); norma_x=sqrt(norma_x); norma_w=sqrt(norma_w); for(i=0, sum=0; i<m; i++, sum+=x[i]*w[i]); if(norma_x*norma_w!=0) sum=sum/(norma_x*norma_w);
Entonces en cada cluster se agruparán vectores similares entre sí por las direcciones de las oscilaciones, pero no por la magnitud de estas oscilaciones, lo que reducirá significativamente la dimensionalidad del problema a resolver y aumentará las características de las distribuciones de pesos de la red neuronal entrenada.
4.Se ha observado correctamente que es necesario definir un criterio de parada para el entrenamiento de la red. El criterio de parada debe determinar el número necesario de clusters de la red entrenada. Y éste (el número), a su vez, depende del problema general que haya que resolver. Si la tarea consiste en pronosticar una serie temporal para 1-2 muestras en adelante, y para ello, por ejemplo, se utilizará un perseptrón multicapa, entonces el número de conglomerados no debería diferir mucho del número de neuronas de la capa de entrada del perseptrón.
En general, el número de barras del historial no supera los 5.300.000 en el gráfico de minutos más detallado (10 años*365 días*24 horas*60 minutos). En el gráfico horario es de 87.000 barras. Es decir, la creación de un clasificador con el número de clusters más de 10000-20000 no se justifica por el efecto de "sobreentrenamiento", cuando cada vector de cotizaciones tiene su propio cluster separado.
Pido disculpas por los posibles errores.
1. Gracias, hice lo que pude por ti:)
2. Sí, estoy de acuerdo. Pero aún así las entradas - este es un gran problema aparte, en el que por sí solo se puede escribir docenas de artículos.
3. Y aquí discrepo completamente. En el caso de entradas normalizadas, la comparación de productos escalares es equivalente a la comparación de normas euclidianas - amplíe las fórmulas.
4. Puesto que el número máximo de clusters ya es uno de los parámetros del algoritmo.
max_nodes
Yo procedería, por ejemplo, de la siguiente manera: medir el error del ganador en los últimos N pasos y evaluar su dinámica de alguna manera (por ejemplo, medir la pendiente de la recta de regresión) Si el error cambia poco, parar. Si el error sigue disminuyendo, y los datos de entrenamiento ya se han agotado, entonces vale la pena considerar su suavizado para suprimir el ruido, o eliminar de alguna manera el déficit de ejemplos.
3. No entiendo dónde está la equivalencia de las fórmulas. La fórmula del coseno del ángulo entre los vectores(x,w)/ (|x||w|) es "poco" parecida a |x-w|^2. Normalizar las entradas no cambia las diferencias fundamentales entre estas medidas:
Hola Alex,
Gracias por la clara explicación sobre el tema.
Sería posible compartir algún código práctico para Reconstrucción precio futuro, por ejemplo a partir de señales óptimas.
La idea es
1. Entrada (Fuente): múltiples monedas (18)
2. Destino: Señal óptima de la divisa que queremos predecir (pic: 2. Optimal_Signals)
3. Encontrar una neuro-conexiones entre la Fuente y el Destino y explotar en el comercio.
Otra pregunta sobre la reconstrucción NN:
¿Es posible en lugar de muestras aleatorias utilizar nuestras muestras en su lugar , como en pic 2:
Nuestro cerebro puede reconstruir la imagen en menos de un segundo, vamos a ver cuánto tiempo se tarda en NN hacer lo mismo, sólo una broma, no es un reto.

Muestras generadas al azar no son muy interesantes de ver, ya que no hay significado detrás o uso, sin embargo, si podemos dibujar puntos nosotros mismos con algún significado detrás de él, sería mucho más divertido. :-0)
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso


Artículo publicado Gas neuronal creciente: implementación en MQL5:
Este artículo muestra un ejemplo de cómo desarrollar un programa MQL5 implementando el algoritmo adaptativo de agrupamiento llamado gas neuronal creciente (GNG). El artículo está dirigido a aquellos usuarios que han estudiado la documentación del lenguaje y tienen cierta capacidad para programar y un conocimiento básico en el área de la neuroinformática.
Autor: Алексей