Interpolación, aproximación y similares (paquete alglib) - página 13

 
Алексей Тарабанов:

Pues de eso se trata. Cualquier polinomio de interpolación no es adecuado para la extrapolación. La de Fourier es exactamente igual a la serie original, y los polinomios como el de Lagrange o el de Taylor producen curvas tipo avalancha con una tasa de cambio de precios creciente. El suavizado suaviza la imagen, pero no mucho, y no es correcto ya que se pierde la conexión con la fuente original.

Existe un método de extrapolación sencillo, claro y eficaz, que no está relacionado con la interpolación. Tendencia.

Tardas en recuperarte del estrés de lo que has leído, al igual que los lectores anteriores, es un tema diferente para discutir aquí

 
Maxim Dmitrievsky:

Eres tan lento para recuperarte del estrés de la lectura como los anteriores lectores, ahora es off-topic

Sí, ya es un off-topic aquí.

 

Hola Maxim,

Hace unos días se buscaban soluciones del núcleo para n vectores de entrada en lugar de 2. ¿Ha encontrado esa solución o está tratando de implementar alguna otra forma?

Si no me equivoco, en lugar de K (x, y), donde K es la función del núcleo, se busca la salida de K (x1, x2, x3, ..., xn). ¿Estoy en lo cierto al entenderlo?

Lo que he aprendido es que el núcleo de la función es el valor escalar. Así que debería ser la suma de todos los productos de puntos. Debería ser algo así:

K (x1, x2, x3, ... xn) = Suma de todos los z (i). Z (i + 1) para todo i donde 0 <i < n

Puede ser para un bucle en MQL5 con la suma de todas las funciones de la función del núcleo.

No tengo forma de probarlo. Pero, ¿has probado algo similar? ¿O me estoy perdiendo algo en la comprensión?

 
FxTrader562:

Hola Maxim,

Hace unos días se buscaban soluciones del núcleo para n vectores de entrada en lugar de 2. ¿Ha encontrado esa solución o está tratando de implementar alguna otra forma?

Si no me equivoco, en lugar de K (x, y), donde K es la función del núcleo, se busca la salida de K (x1, x2, x3, ..., xn). ¿Estoy en lo cierto al entenderlo?

Lo que he aprendido es que el núcleo de la función es el valor escalar. Así que debería ser la suma de todos los productos de puntos. Debería ser algo así:

K (x1, x2, x3, ... xn) = Suma de todos los z (i). Z (i + 1) para todo i donde 0 <i < n

Puede ser para un bucle en MQL5 con la suma de todas las funciones de la función del núcleo.

No tengo forma de probarlo. Pero, ¿has probado algo similar? ¿O me estoy perdiendo algo en la comprensión?

Hola, en realidad no sé cómo hacer esto ahora, porque esos algoritmos (como SVM o proceso gaussiano) sólo funciona con productos internos, no con un mapeo de características. Estoy buscando ahora una buena idea de cómo hacerlo mejor

 
Maxim Dmitrievsky :

Hola, la verdad es que no sé cómo hacerlo ahora, porque esos algoritmos (como el SVM o el proceso gaussiano) sólo funcionan con productos internos, no con un mapeo de características. Ahora estoy buscando una buena idea para hacerlo mejor.

Según tengo entendido, el truco del kernel es un subconjunto del algoritmo SVM y, por lo tanto, ¿quieres decir que ya no quieres implementar el truco del kernel?

Lo que usted llama como mapeo de características se expresa en términos de producto de puntos o producto interno de los polinomios del espacio superior en el truco del núcleo y por lo que en mi entendimiento es sólo una simple multiplicación de las funciones del núcleo.

Para que quede claro, en K(x,y) ¿piensas utilizar el precio de cierre de dos velas consecutivas como x e y para obtener el núcleo o intentas implementar algo más?

 
FxTrader562:

Según tengo entendido, el truco del kernel es un subconjunto del algoritmo SVM, por lo que quiere decir que ya no quiere implementar el truco del kernel.

Lo que usted llama como mapeo de características se expresa en términos de producto de puntos o producto interno de los polinomios del espacio superior en el truco del núcleo y por lo que en mi entendimiento es sólo una simple multiplicación de las funciones del núcleo.

Para que quede claro, en K(x,y) ¿piensas utilizar el precio de cierre de dos velas consecutivas como x e y para obtener el núcleo o intentas implementar algo más?

Quiero decir que no entiendo cómo cambiar los vectores de entrada después de la multiplicación, son absolutamente iguales entonces. Dice que hay que usar la matriz Gram para colocar los vectores (feature mapping), y luego algunas manipulaciones con ella. Aquí está el código de muestra con SVM

https://pythonprogramming.net/soft-margin-kernel-cvxopt-svm-machine-learning-tutorial/

def polynomial_kernel(x, y, p=3):
    return (1 + np.dot(x, y)) ** p

# Gram matrix
        K = np.zeros((n_samples, n_samples))
        for i in range(n_samples):
            for j in range(n_samples):
                K[i,j] = self.kernel(X[i], X[j]) ??? Gram matrix 'K' is simmetrical. What we must do next, dont understand the code below

        P = cvxopt.matrix(np.outer(y,y) * K)
        q = cvxopt.matrix(np.ones(n_samples) * -1)
        A = cvxopt.matrix(y, (1,n_samples))
        b = cvxopt.matrix(0.0)

Ahora sólo estoy aprendiendo sobre espacios vectoriales para entenderlo

tal vez sea mejor que vayamos al foro en )

Python Programming Tutorials
  • pythonprogramming.net
Python Programming tutorials from beginner to advanced on a massive variety of topics. All video and text tutorials are free.
 
Maxim Dmitrievsky:

Quiero decir que no entiendo cómo cambiar los vectores de entrada después de la multiplicación, son absolutamente iguales entonces. Dice que hay que usar la matriz Gram para colocar los vectores (feature mapping), y luego algunas manipulaciones con ella. Aquí está el código de muestra con SVM

https://pythonprogramming.net/soft-margin-kernel-cvxopt-svm-machine-learning-tutorial/

Ahora sólo estoy aprendiendo sobre espacios vectoriales para entenderlo

tal vez sea mejor que vayamos al foro en )

Por supuesto, el material de referencia se da en los otros foros donde se resuelve la matriz de Gram en el vídeo. Yo también estoy tratando de entenderlo.

Además, ¿ya ha entendido e implementado hasta ahora en MQL5? Si no, no tiene sentido seguir intentándolo:)

 
FxTrader562:

Por supuesto, el material de referencia se da en los otros foros donde se resuelve la matriz de Gram en el vídeo. Yo también estoy tratando de entenderlo. Aquí hay otra referencia de vídeo rápida específica para la matriz de gramos:

https://www.youtube.com/watch?v=8JiMUqbByGA

Además, ¿ya ha entendido e implementado hasta ahora en MQL5? Si no, no tiene sentido seguir intentándolo:)

Es un simple bucle que calcula la matriz de gramos... pero luego trabajando el solucionador cuadrático, no estoy seguro para qué... o es sólo la lógica de SVM ya :)

gracias por el video

 
Maxim Dmitrievsky:

Es un simple bucle que calcula la matriz de gramos... pero luego trabajando el solucionador cuadrático, no estoy seguro para qué... o es sólo la lógica de SVM ya :)

gracias por el video

Exactamente...como dije se puede implementar probablemente solo con un bucle for en MQL5.

Bueno, no hay que preocuparse por otras cosas mientras se logre el objetivo final:)

Quiero decir que mientras podamos tomar las entradas en Mql5 y obtener las salidas como núcleos como se espera, entonces otras cosas no importan. Porque de todos modos la parte final será la parte de pruebas donde se revelará si se ha implementado correctamente o no en base a los resultados.

Por cierto, SVM es sólo una técnica de clasificación y el truco del kernel lo hace fácil debido al simple producto de puntos. No creo que todo lo de SVM necesita ser implementado en el truco de kernel, porque en el truco de kernel todo se hace por la propia función y por lo tanto, nada que hacer mucho.

Además, este vídeo explica la SVM en detalle junto con un código de ejemplo en python utilizando el truco del kernel. Puedes echar un vistazo:

https://www.youtube.com/watch?v=N1vOgolbjSc&t=157s

 
FxTrader562:

Pero no entiendo cómo trabajar con la matriz Gram ahora, porque esto no es una nueva característica transformada, es sólo la matriz con el producto escalar de las antiguas características