NS + indicadores. Experimento. - página 11

 
Figar0 >>:

Пора поднять веточку, все-таки она посвящена входам НС и новую тему заводить не стану...

Появилась пара совсем простых теоритических вопросов-раздумий.

*

Ать). Подавая в НС варианты входов, которые утрировано выглядят примерно так:

а) Open[0]-Open[1], Open[0]-Open[2], Open[0]-Open[3], Open[0]-Open[4],..., Open[0]-Open[N]

б) Open[0]-Open[1], Open[1]-Open[2], Open[2]-Open[3], Open[3]-Open[4],..., Open[N-1]-Open[N]

рассчитывал получить примерно одинаковый результат. Все-таки входы весьма тавтологичны. Ан нет, результаты далеко не всегда даже рядом лежат, как и на участке обучения так и вне его. Пробовал разные варианты сетей, разные нейросетевые пакеты, везде картина примерно одинакова... Почему? несовершенство механизма обучения? "Слабость" сети? Многого от нее хочу?

*

Два). Хочу услышать мнение опытных или считающих себя таковыми нейросетевиков, как далеко должны быть входы от цены в нащей прикладной задаче прогнозирования ценового ВР? Мои опыты показывают, что использование всяческих индикаторов, "производных N-го порядка" от цены, в лучшем случае, вообщем-то ничего не дает. Цена, максимум сглаживание, экстремумы, все остальное от опиум для НС.. Не считаете?

En) La información es "tautológica" para ti, para mí, para muchos otros μl programadores... ¿Has probado a hacer una correlación mutua y ver la correlación de las entradas? Fuera del área de aprendizaje, por experiencia personal, la diferencia aparece sólo debido a la no estacionalidad de la entrada...

Dos)En cuanto a "lo lejos que deben estar los insumos del precio" - relativamente, al contrario, para mí el uso de derivados mejora el criterio... Personalmente, no lo creo. De lo que deberían ser las entradas depende la salida, el problema depende de cómo se te ocurra (a grandes rasgos).

 
Figar0 >>:

Ать). Подавая в НС варианты входов, которые утрировано выглядят примерно так:

а) Open[0]-Open[1], Open[0]-Open[2], Open[0]-Open[3], Open[0]-Open[4],..., Open[0]-Open[N]

б) Open[0]-Open[1], Open[1]-Open[2], Open[2]-Open[3], Open[3]-Open[4],..., Open[N-1]-Open[N]

рассчитывал получить примерно одинаковый результат. Все-таки входы весьма тавтологичны. Ан нет, результаты далеко не всегда даже рядом лежат, как и на участке обучения так и вне его. Пробовал разные варианты сетей, разные нейросетевые пакеты, везде картина примерно одинакова... Почему? несовершенство механизма обучения? "Слабость" сети? Многого от нее хочу?

A primera vista, la información introducida en la entrada de la red en los casos a) y b) es efectivamente tautológica. El cerebro, a través de los ojos, toma la información gráfica en forma de fórmulas escritas.

Los símbolos de las fórmulas en sí no llevan ninguna información útil para el cerebro, la información está contenida en los valores de esos símbolos.

Prácticamente no ve la diferencia al principio. No lo he visto. :)

No ve la diferencia hasta que empieza a entender qué números se esconden bajo los signos de las fórmulas. Aquí es donde queda claro inmediatamente cuál es la diferencia, una gran diferencia.


Aquí hay una captura de pantalla del gráfico a),

Vemos una línea casi perfecta desde el infinito hasta el valor de la diferencia entre Open[0]-Open[1]:



Veamos ahora el gráfico b):



La diferencia, como se dice, es evidente. En el segundo caso, el valor de nuestra función "salta" alrededor de 0, en límites bien definidos.

Cualquier NS tiene límites de sensibilidad de las entradas determinados por la función de activación de las neuronas y los límites de los pesos. No se puede exigir a la red que aprenda algo que no ha aprendido dentro de los patrones de la función de aprendizaje y dentro de sus límites de sensibilidad. Esto significa que el NS puede calcular correctamente sólo sobre los datos de entrada, incluso si no estaban en la muestra de entrenamiento, pero al mismo tiempo, si los valores presentados a la entrada pertenecen al área de determinación de la función de entrenamiento y se encuentran dentro de la sensibilidad de la red. Estas son dos condiciones necesarias para que cualquier NS funcione correctamente.

Figar0 >>:
Dos). Quiero saber la opinión de los experimentados o que se consideren experimentados en redes neuronales, ¿a qué distancia de las entradas de precios debe estar nuestro problema aplicado de previsión de la RV de los precios? Mi experiencia demuestra que el uso de todo tipo de indicadores, "derivados de enésimo orden" del precio, generalmente no da nada en el mejor de los casos. El precio, el alisado máximo, los extremos, todo lo demás de NS opio... ¿No crees?

Los indicadores derivados del precio, que tienen diferencias principales entre ellos en los principios de cálculo, pueden y deben ser utilizados. Las barras vecinas separadas por sí mismas no aportan ninguna información útil. Sólo se puede obtener información útil si se considera la interacción de "grupos" de barras o, en otras palabras, "ventanas".

 
joo писал(а) >>

A primera vista, la información introducida en la entrada de la red en los casos a) y b) es efectivamente tautológica.

Aquí hay una captura de pantalla del gráfico a),

Algo me dice que no has interpretado correctamente la fórmula a).

Su gráfico es algo así como (variante de):

f[0] = Open[0]-Open[1] Ya veo.

f[1] = Open[0]-Open[2] Es decir, ¿mirando hacia adelante?

O sustituye Open[0] por el valor actual, es decir

f[1] = Open[1]-Open[2] es decir, la fórmula b)

O ejem.

f[1] = Open[1]-Open[3] Pero esto no se deduce del contexto

Según entiendo (al menos es lo que tenía en mente con "experimentos" similares con las entradas), todo es una matriz de N-1 dígitos en el "punto 0", es decir, f[0][N-1]

en el punto f[1][N-1] será Open[1]-Open[2], Open[1]-Open[3], ...

Significa que hay que dibujar un plano de n-1 dimensiones.

El hecho de que los resultados sean diferentes es natural. Pero no he decidido qué entradas son "más correctas" (para las mismas salidas).

SZY. Busqué hace tiempo y en "cajas negras".

 
SergNF >>:

Что-то мне подсказывает, что Вы не правильно графически интерпретировали формулу a).

Y usted está consultando este "Algo" para nada.

Haz un indicador y verás.

SergNF >>
El

hecho de que los resultados sean diferentes es natural

.

Pero qué entradas son "correctas" (para las mismas salidas

)

aún no lo he decidido.

¿Qué quiere decir que los resultados son diferentes? ¡Que las entradas son lo mismo que las salidas! Y cuáles de ellos son "correctos", describe el post anterior.

 
joo писал(а) >>

Y tú te dejas aconsejar por ese "Algo" para nada.

Probablemente tengas razón :)

Haz un indicador y verás.

¡¡¡¡¡Gráfico" superior del vector de entrada!!!!! DBuffer[i]=Cerrar[i]-Cerrar[i+DPeriod];

¡¡¡¡¡Gráfico" inferior del vector de entrada!!!!! DBuffer[i]=Cerrar[i+DPeriod]-Cerrar[i+DPeriod+1];


Lo que sigue es un análisis lingüístico del post original y... De nuevo a la cuestión de la corrección de la redacción de los TdR. ;)

 
SergNF >>:

Наверное Вы правы :)

Верхний "график" входного вектора!!!!! DBuffer[i]=Close[i]-Close[i+DPeriod];

Нижний "график" входного вектора!!!!! DBuffer[i]=Close[i+DPeriod]-Close[i+DPeriod+1];


Дальше будет лингвистический разбор исходного поста и ... опять к вопросу о корректности формулировок в ТЗ. ;)

Sí, por lo que los TdR de quien pregunta no son buenos, ya que dos personas han interpretado la pregunta de forma diferente. :)

Deberíamos esperar a Figar0 para ver qué tiene que decir.

 
StatBars писал(а) >>

Lo que deben ser las entradas depende de la salida (tarea), la tarea (salida) de cómo se llega (a grandes rasgos).

¿Qué resultados puede haber? Las señales según las cuales se espera obtener un crecimiento suave de los fondos propios sin desviaciones) Aunque la tarea puede, en efecto, ser establecida de manera diferente por el NS....

joo escribió >>

Significa que los TdR del preguntador no son buenos, ya que dos personas han interpretado la pregunta de forma diferente. :)

Debemos esperar a Figar0, lo que tiene que decir.

Sinceramente, no pensé que hubiera tanta diferencia de opiniones... El coste de elaborar NS en sus estrechos mundos. SergNF ha entendido correctamente mi "ToR") Dos vectores de entrada, donde uno se puede obtener fácilmente a partir del otro y con resultados diferentes en la salida. Y parece que empiezo a entender por qué son diferentes, mañana haré un par de experimentos y trataré de poner este entendimiento en letras...

 
Figar0 >>:

Какие могут быть выходы? Сигналы, работая по которым надеемся получить плавный рост эквити без просадок) Хотя задачу НС можно действительно поставить по разному....

Las señales para las que esperamos obtener una subida suave es un tipo de problema, y puede haber muchos principios, pero muchos seguirán siendo muy similares (al menos en términos de correlación). Y la salida estaba pensada en este mismo contexto.

¿Qué te parece?

Estoy de acuerdo en que no debemos compartir experiencias, en cualquier caso, muchas cosas serían más fáciles por un lado, y la información importante sobre el proyecto y los desarrollos seguiría permaneciendo oculta, es decir, por ejemplo, tengo algo que compartir que hará la vida más fácil a los demás, pero al mismo tiempo no revelaré mis secretos de ninguna manera :)

 
Figar0 писал(а) >>

Y creo que estoy empezando a entender por qué diferente, voy a hacer algunos experimentos mañana y tratar de poner esa comprensión en las letras ...

Bueno, parece que hay un entendimiento definitivo, una conclusión:

- Las entradas a) y b) son las mismas, y los resultados diferentes se deben a un mecanismo de aprendizaje imperfecto y a errores de cálculo en la conversión de datos. Es decir, si utilizo para la entrada incrementos de cualquier cosa: indicadores, precio, seguiré tomando la diferencia del informe cero o de los puntos adyacentes. Lo he aprendido sólo experimentalmente, habiendo simplificado el NS al límite y haciendo posible el aprendizaje por enumeración exhaustiva de pesos. Los resultados coinciden con un cent...

Después de digerir esta conclusión, he caído en el estudio de la AG.

StatBars escribió >>

Estoy de acuerdo en que es un desperdicio no compartir la experiencia, en todo caso, muchas cosas serían más fáciles por un lado, y la información importante sobre el proyecto y los desarrollos seguirían ocultos, es decir, por ejemplo, tengo algo que compartir que facilitará la vida de los demás, pero al mismo tiempo no revelaré mis secretos :)

Definitivamente es un desperdicio... No es mala idea sincronizar el reloj al menos de vez en cuando)

Empezaré por mí mismo. De momento estoy preparando mis redes en MQL, y las estoy entrenando sólo en el probador/optimizador del terminal. Sin embargo, investigo algunos componentes de los insumos en Estadística. Este enfoque tiene tanto desventajas como ciertas ventajas. La mayor ventaja es que se aprende la red directamente en el entorno de la aplicación y se puede enseñar hasta el objetivo final: el beneficio. Como arquitectura me he detenido experimentalmente en MLP con pocas capas: entrantes, salientes y una o dos ocultas. Una aproximación más que suficiente, en mi opinión. De momento estoy pensando en añadir backlinks a MLP. Número de entradas utilizadas ~ 50 a 200, más complicaría la arquitectura y la formación, y creo que sería redundante.

Quizás algo de mi descripción sea extraña, quizás no, pero soy un autodidacta de las redes neuronales, además, guardando celosamente mi cerebro del exceso de literatura polvorienta)

 

Utilizo MQL para preprocesar los datos, cargarlos en el formato interno y analizar los resultados de la red. Sólo entreno redes en NSH2. Por supuesto, también hay redes MCL y C++, pero NSH2 es mejor...

Las redes no suelen ser más que las habituales de 3 capas (MLP), no se necesita más.

Por cierto, sobre las entradas, como máximo alimenté 128, por algunos experimentos descubrí que más de 20-30 entradas ya es un fuerte exceso, y lo más probable es que eliminar las que no son importantes mejore mucho el criterio de aprendizaje. Si son menos de 40 entradas la cuestión puede seguir siendo discutible, pero más de 40 entradas es 100% exagerado.

El criterio de aprendizaje es estándar en NSH2 - sko.

Asegúrese de utilizar una muestra de prueba para evitar el ajuste de la red. Por otra parte, la división de la muestra secuencialmente - la primera parte de la muestra digamos de 2005.01.01 - 2006.01.01 - muestra de entrenamiento, muestra de prueba - 2006.01.01 - 2006.04.01. Muchos pueden dudar de que tal manera de deshacerse de la red de reentrenamiento, pero estoy 100% seguro de que se deshace de reentrenamiento, si no se deshace de, entonces el problema en otro, es decir, no recomiendo cambiar la partición de la muestra, en lugar de entrenar exactamente así (con 2 muestras). Considera qué es más importante para ti: la red debe ser estable para empezar, pero tienes que trabajar en ella para que sea lo suficientemente rentable también :) O la red es rentable, pero no se sabe cuándo dejará de serlo, es decir, primero vemos los beneficios y luego resolvemos la estabilidad de la red. No me refería a un crecimiento suave de la equidad aquí, sino al hecho de que la red está mostrando diferentes resultados en diferentes pruebas a futuro (drenajes depo y viceversa).

La primera es más importante para mí personalmente, ya que me estoy desarrollando en esta dirección. Ahora he conseguido ciertos resultados, por ejemplo: (Ya lo he dicho en el foro, pero lo repito) hay "muestra general", entreno la red en un 20-30% de la muestra general y después del entrenamiento la red funciona igual en todas partes, en toda la muestra, y la fecha de la "muestra general" es desde 2003 hasta ahora.

Con la rentabilidad de la red, también, ya me he acercado mucho a una solución. La red reconoce el 84% de las muestras y el 87% es un umbral mínimo para el crecimiento estable-suave de

de la equidad. Cuando empecé a resolver este problema, la tasa de reconocimiento era del 70%.

Razón de la queja: