Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 211
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
1) Desgraciadamente, has formulado la pregunta de forma incompleta y has obtenido una respuesta escueta y educada de "no importa".
Querías una respuesta "tan acordada/convencional" formulándola en la propia pregunta. Pero Duncan se libró de "lo que es correcto" la primera vez y lo repitió la segunda.
2) No has obtenido confirmación de la precisión en R y no has obtenido respuesta a por qué el resultado es diferente en otros paquetes. La pregunta "por qué la respuesta es diferente en otros paquetes" es más importante y es capaz de revelar el tema.
3) Nuestra posición:
выражение для dgamma
(x)= 1/(s^a Gamma(a)) x^(a-1) e^-(x/s)
for x ≥ 0, a > 0 and s > 0в точке 0 является неопределенным.
R cree que se puede incluir este punto en el cálculo pero tomar los valores límite aunque sean infinitos como en el caso de dgamma(0,0.5,1).
Sin embargo, si se calculan las probabilidades dadas al infinito en el punto cero, todas las integrales de dgamma se convierten formalmente en infinitas y por esta lógica pgamma debería ser igual a infinito para todos los valores de x.
Sin embargo, esto contradice los resultados de pgamma, donde todos los valores resultan ser finitos. Son correctos, ya que si en el punto x=0 se supone que la densidad =0.1) Sí, no recibí una respuesta detallada. Aunque lo resumí... No estoy imponiendo mi opinión, yo también estoy cansado de discutir, para ser honesto. Llamo la atención sobre el hecho de que las palabras de esta persona eran casi textuales a nuestro mensaje original. La forma de determinar la densidad en el punto extremo no es importante, lo principal es calcular correctamente las integrales:
Declaramos que, estrictamente hablando, la densidad de la distribución gamma en el punto cero es indefinida. Y tomando el límite de la derecha, la densidad es igual a uno.
A la luz de esto, creemos que la afirmación "errores de cálculo en R" no es correcta. Más concretamente, se trata de una cuestión de convención: lo que debe considerarse igual a la expresión cero a la potencia de cero. Igualar la densidad de la distribución gamma a cero en el punto cero no parece ser ninguna práctica condicional.
2) Ni siquiera se habló de precisión por mi parte. La densidad en el punto cero no tiene que ver con la precisión, sino con la forma en que se deriva como resultado de la función: la no convergencia (NaN) o la equiparación con el límite o con el cero. El punto principal es que no importa para calcular la integral.
3) He releído el texto corregido del artículo. Y me alegro de que hayas decidido no considerar el comportamiento de dgamma como un error.
Pero este :
todas las integrales de dgamma se vuelven formalmente infinitas y por esta lógica pgamma debería ser igual a infinito para todos los valores de x.
Extraño, Renat.
pgamma en principio no puede ser infinito, ya que el ingegral está limitado desde arriba por un valor de 1.
Tomemos la distribución normal. Se define en [-inf,+inf]. Integral de la función de distribución = 1 en todo este intervalo. Pero de alguna manera resulta que la sumatoria (integración) de la densidad en saportes infinitamente grandes no resulta en una suma infinita. Aunque la densidad en todo el soporte de mantenimiento != 0 en cualquier región.
Y para dgmamma el punto x ==0 con su densidad == inf (y por cierto, no has considerado el caso en que la densidad tiende a 1 en este punto y qué conclusiones sobre la integración sacas de esto...) ¿con qué frecuencia se produce? Yo diría que no. La probabilidad de realizar una variable aleatoria en cualquier punto == 0 en cualquier distribución continua... Todos los estadísticos lo saben. La densidad se considera una aproximación de la probabilidad a una región infinitesimal alrededor de x.
De este hecho se desprende que, por muy grande que sea la densidad en el punto extremo, su efecto sobre el ingral total = 0. Piensa en ello...
Creo que lo estás pensando demasiado. ) Pero no voy a discutir y resolverlo. Tal vez algún día me dé cuenta y responda yo mismo en lugar de Duncan. )
Gracias.
R es un sistema increíble que personalmente me ha abierto los ojos sobre lo lejos que estábamos en MetaTrader/MQL de las necesidades reales de "hacer cálculos complejos de forma sencilla y en el momento".
Nosotros (los desarrolladores de C++) llevamos en la sangre el enfoque de "puedes hacerlo todo tú y nosotros te damos la base de bajo nivel y la velocidad de cálculo". Somos fanáticos del rendimiento y somos buenos en ello - MQL5 es genial en 64 bits.
Cuando empecé a trabajar en R me di cuenta de que necesitaba tantas funciones potentes en una línea como fuera posible y poder investigar en general.
Así que hemos dado un giro brusco y hemos empezado a actualizar MetaTrader 5:
Por supuesto, estamos al principio del camino, pero el vector de esfuerzo adecuado ya está claro.
7 pasos en la integración no es ciertamente suficiente. Aquí hay 1.000:
[1] 0.7940968
#а теперь велосипедное интегрирование:
> integration_steps <- seq(0, 0.8, length.out=1001)
> integration_result <- 0
> for(i in 2:length(integration_steps)){
+ integration_result <- integration_result + dgamma(integration_steps[i], 0.5, 1) * (integration_steps[i] - integration_steps[i-1])
+ }
> integration_result
[1] 0.7709089
#погрешность ~0.02, но тут способ уже проще некуда, и так сойдёт :) . Бесконечность при x=0 не мешает.
1) Sí, no recibí una respuesta detallada. Aunque lo estaba resumiendo... No estoy imponiendo mi opinión, yo también estoy cansado de discutir, para ser honesto. Llamo la atención sobre el hecho de que las palabras de esta persona eran casi textuales a nuestro mensaje original.
Fue una respuesta educada, sin detalles ni verificación. Y la respuesta no coincidía con Wolfram Alpha y Matlab, lo cual es un problema.
No hay necesidad de evadir, la cuestión de fondo se ha planteado claramente.
#погрешность ~0.02, но тут способ уже велосипедней некуда, и так сойдёт :) . Бесконечность при x=0 не мешает.
Integrar la función 1/x, de 0 a 1, incluyendo los puntos límite y comparar con el resultado de los cálculos analíticos.
Wolfram dice que la integral no convergerá debido a la singularidad en x=0.
Integrar la función 1/x, de 0 a 1, incluyendo los puntos límite y comparar con el resultado de los cálculos analíticos.
Con el mismo código - 7.485471. R llegó a 76,3342 y dijo que no iría más allá, y que no es un resultado exacto, e incorrecto. Wolfram dijo inmediatamente que el resultado no cuadra, y no respondió nada.
La respuesta correcta no la sé, ¿cuánto?
No me digas que como no se puede encontrar la integral de 1/x, tampoco se puede encontrar la integral de dgamma(x). Las dos funciones tienden al infinito en x -> 0+ , pero tienden a velocidades diferentes, y esa velocidad influye en que se pueda encontrar la integral o no.
Existe una función -log(x). Tiende a infinito en x->0. Se puede hacer sin menos, entonces tiende hacia abajo, no estoy cómodo con eso.
Y tiene una integral de 0 a 1. El infinito no interfiere.
R es un sistema asombroso que personalmente me abrió los ojos sobre lo lejos que estábamos en MetaTrader/MQL de la necesidad real de "hacer cálculos complejos de manera simple y directa ahora".
...
Así que dimos un giro brusco y empezamos a actualizar MetaTrader 5:
Por supuesto, estamos al principio del viaje, pero el vector de esfuerzo adecuado ya está claro.
R, al igual que muchos otros lenguajes de programación, es mucho más conveniente para el aprendizaje automático en comparación con MQL, ya que tiene un conjunto de características incorporadas para el procesamiento de datos de matriz. La cuestión es que una muestra para el aprendizaje automático suele ser una matriz de datos bidimensional, por lo que necesita un funcional para trabajar con matrices:
Hasta que MQL no haya implementado la mencionada funcionalidad necesaria para el manejo de muestras en arrays, la mayoría de los desarrolladores de algoritmos de aprendizaje automático preferirán otros lenguajes de programación que ya tienen todo esto disponible. O utilizarán el MLP sin pretensiones (algoritmo de los años 60) de la biblioteca AlgLib donde, si no recuerdo mal, por comodidad las matrices bidimensionales se representan como unidimensionales.
Por supuesto, las funciones para las densidades de las distribuciones aleatorias son también una funcionalidad necesaria. Pero estas funciones no siempre son necesarias en las tareas de aprendizaje automático, y en algunas tareas no se utilizan en absoluto. Pero las operaciones con muestras, al igual que con las matrices multidimensionales, es algo de lo que no puede prescindir la implementación de los algoritmos de aprendizaje automático para cualquier tarea, a menos que, por supuesto, se trate de una tarea de entrenamiento de una malla para aprender los datos normalizados conocidos a partir de CWR triviales.
R es un sistema asombroso, que personalmente me abrió los ojos sobre lo lejos que estábamos en MetaTrader/MQL de las necesidades reales de "hacer cálculos complejos de forma sencilla y en el momento".
Nosotros (los desarrolladores de C++) llevamos en la sangre el enfoque de "puedes hacerlo todo tú y nosotros te damos la base de bajo nivel y la velocidad de cálculo". Somos fanáticos del rendimiento y somos buenos en ello - MQL5 es genial en 64 bits.
Cuando empecé a trabajar en R me di cuenta de que necesitaba tantas funciones potentes en una línea como fuera posible y poder investigar en general.
Así que hemos dado un giro brusco y hemos empezado a actualizar MetaTrader 5:
Por supuesto, estamos al principio del camino, pero el vector correcto de los esfuerzos ya está claro.
Se trata de una evaluación equilibrada y sorprendentemente objetiva de R.
La parte constructiva del debate no tiene desperdicio. Escuchas los comentarios y sugerencias de los usuarios de R. Nosotros también estamos interesados en mejorar la plataforma.
Por supuesto que está al principio, pero en cualquier caso las vacunas R fortalecerán la ACM.
Buena suerte en su duro trabajo.
En cuanto a las convenciones de las que hablaba Burnakov.
Consideremos tres casos muy diferentes.
1. División por una constante igual a cero.
En R tenemos el resultado
[1] Inf
¿Es un resultado correcto?
Para el intérprete, este resultado debe considerarse correcto, porque no podemos terminar R
Para el compilador, este resultado es correcto. Cuando se produce una situación excepcional, se interrumpe la ejecución del programa y se le da el control para manejar esta situación excepcional, de lo contrario se bloqueará.
¡Fíjate en lo diferente que es!
2. División por una variable, igual a cero.
> 1/a
[1] Inf
En sentido estricto, esta variante difiere de la anterior.
La función 1/a es continua en todas partes excepto en a=0. En este punto el límite a la izquierda = -Inf, y el límite a la derecha = +Inf.
R no entiende esto, pero puede aceptarlo ya que la diferencia entre menos infinito y más infinito tiene sentido en las matemáticas, no en el código del programa
3. División de dos cantidades infinitesimales en su aspiración a cero
[1] NaN
El significado de NaN no tiene ninguna explicación para mí. Pero está bastante claro, dado el punto 2, que R no entiende los límites como tales.
¿Son estos errores de R como sistema de programación? No lo sé. Lo más probable es que la documentación de R debería haber informado sobre tales matices, pero entonces, ¿cómo implementarlo con un desarrollo descentralizado de momento de unas 130.000 funciones? ¿Es necesario?
¿Qué se desprende de esto en el sentido de la discusión que surgió?
Las decisiones se toman en tierra.
1. Tomamos R y transferimos el código a MKL. Al mismo tiempo, tenemos que darnos cuenta de que las variantes mencionadas pueden tener diferentes interpretaciones en diferentes funciones de R
2. Declarar los acuerdos, que los valores serán aceptados en los casos que he mencionado (la lista puede ser incompleta). Comprobamos a fondo el código de R y, si no coincide con nuestra configuración, lo portamos de R a MCL con correcciones según nuestros acuerdos. En este caso, debido al desarrollo centralizado, aplicamos sistemáticamente las convenciones adoptadas y, en este sentido, tenemos un sistema mejor.