Monday 16 October 2017

Moving Average Spark


Spark-Timeseries es una biblioteca de Python y Scala para analizar conjuntos de datos de series temporales a gran escala. Está alojado aquí. Scaladoc está disponible aquí. Python doc está disponible aquí. Un conjunto de abstracciones para manipular datos de series de tiempo, similar a lo que se proporciona para conjuntos de datos más pequeños en Pandas. Matlab. Y Rs zoo y xts paquetes. Modelos, pruebas y funciones que permiten tratar series temporales desde una perspectiva estadística, similar a lo que se proporciona en StatsModels y una variedad de paquetes Matlab y R. La biblioteca está orientada a casos de uso en finanzas (munging tick, building risk models), pero tiene la intención de ser lo suficientemente general como para que otros campos con datos de series temporales continuas, como la meteorología, puedan hacer uso de ella. La biblioteca actualmente espera que las series temporales univariadas individuales puedan caber fácilmente en la memoria en cada máquina, pero que las colecciones de series temporales univariadas pueden necesitar ser distribuidas a través de muchas máquinas. Si bien las series de tiempo que violan esta expectativa plantean un montón de divertidos problemas de programación distribuidos, que no tienden a aparecer muy a menudo en las finanzas, donde una matriz con un valor por cada minuto de cada día de negociación durante diez años necesita menos de un par de millones de elementos . Dependencias La biblioteca se encuentra en algunas otras excelentes bibliotecas de Java y Scala. Breeze para álgebra lineal de tipo NumPy, BLAS. JodaTime para fechas y horas. Apache Commons Math para la funcionalidad general de matemáticas y estadísticas. Apache Spark para computación distribuida con capacidades en memoria. Funcionalidad Series temporales Manipulación Alineación Retardo Corte por fecha-hora Imputación de valor faltante Conversión entre diferentes series de datos de series de tiempo Serie de tiempo Matemáticas y Estadísticas Modelos de media móvil ponderada exponencialmente (EWMA) Modelos de media móvil integrada autoregresiva (ARIMA) Modelos heterocigotos condororregresivos Falta la imputación de datos Prueba de Dickey-Fuller aumentada Prueba de Durbin-Watson Prueba de Breusch-Godfrey Prueba de Breusch-Pagan Tengo datos de transmisión en tiempo real entrando en chispa y me gustaría hacer una predicción de media móvil en esos datos de series de tiempo. ¿Hay alguna manera de implementar esta chispa de uso en Java Ive ya se ha referido. Gist. github / samklr / 27411098f04fc46dcd05 / revisiones y Apache Spark Moving Average, pero ambos códigos están escritos en Scala. Dado que no estoy familiarizado con Scala, no soy capaz de juzgar si lo encuentro útil o incluso convertir el código a Java. Desde que empecé a aprender Spark, una de las cosas que me dio más dolor es la API de Java que envuelve la API Scala utilizada en Spark. Por lo tanto, me gustaría compartir este problema que tenía usando la biblioteca de aprendizaje de máquina de chispa en caso de que es útil para cualquier persona que está aprendiendo Spark. Además, es bueno tener una mirada a las posibilidades que las ventanas corredizas nos dan cuando trabajamos en datos cronometrados. Como escribí en mi post anterior. Creé un nuevo módulo independiente para hacer estudios sobre datos de stock utilizando Spark. Uno de los estudios más interesantes (y básicos) uno puede hacer sobre datos de la acción, es calcular las medias móviles simples. ¿Qué es un promedio móvil simple (SMA)? Si tomamos una ventana de tiempo de longitud N, la SMA es: Fuente: Wikipedia: en. wikipedia. org/wiki/Movingaverage Espera, lo que En claro Inglés: Para cada elemento, tomamos la N elementos precedentes y calcular el promedio. El objetivo es suavizar los datos con el fin de detectar fácilmente patrones subyacentes en los datos. Una solución posible: Spark MLLib Buscando en Internet, encontré que el Spark Machine Learning Libray tiene una operación de ventana deslizante sobre un RDD. Usando esto, sería muy fácil calcular el SMA como se describe en esta respuesta de StackOverflow. Nota: El RDD debe ordenarse antes de aplicar la función deslizante. La advertencia es que el código anterior está escrito en Scala. Además, necesitas encapsular la función calculando los promedios de valor en una clase diferente (aparentemente hay un problema de serialización al trabajar con clases de función anónimas). Entonces, ¿cómo se ve el resultado del cálculo Como he tomado 3 series temporales: Los datos originales de Mapfre (una compañía de seguros española - Ticker: MAP. MC) desde 2017 hasta hoy. El resultado del cálculo para SMA (30) días. El resultado del cálculo para SMA (200) días. La interpretación del gráfico es bastante clara: La línea de precios (rojo) es bastante caótico. El SMA (30) (azul) da una mejor visión sobre el precio, sin muchos picos. El SMA (200) (verde) da la tendencia de fondo, que fue bastante constante hasta el verano de 2017 (cuando la línea azul cruzó sobre ella). Resumen Aunque esta forma de hacer las cosas es un poco incómoda, creo que esta función nos da un gran potencial en hacer el tipo de cálculos que nos interesan. Por ejemplo: Cálculo rápido (generalmente SMA (9)) y lento (Por lo general SMA (30)) promedios móviles: Esto se hace para ver dónde y cómo se intersecan entre sí para ver si el mercado en el cambio en la dirección de las tendencias. Calculando si los precios actuales están superando los valores máximos anuales (esto sería MAX (365)) o si están rompiendo los valores mínimos anuales (MIN (365): Como los valores de la acción tienen un impulso relativamente fuerte, si empiezan a hacer esto, Es muy probable que continúen en esa dirección. Usted puede encontrar el cálculo mostrado en el ejemplo anterior en este repositorio GitHub: Sparkker Sin embargo, es muy parecido que va a diferir de lo que está escrito aquí como tengo la intención de obtener los datos de Stokker (El micro-servicio que recoge las cotizaciones de la acción de Internet, a diferencia de un archivo de texto).Sadly, todavía no puedo conseguir todo el trabajo mientras que estoy teniendo algunos problemas de la carga de la clase al usar Spark y Netflix Eureka junto. Solución Actualización el 3 de febrero de 2017 Por último, logré resolver el problema de carga de clases, excluyendo la dependencia de Spark relacionada con Commons Codec, que ya es utilizada por Feign para codificar / descodificar las peticiones y respuestas. Versión causó el problema: También, aproveché la oportunidad para aumentar otros números de versión: Spring-Boot a 1.3.2 Spring Framework Cloud a Brixton Milestone 4Related Discusiones Hola, Si quiero tener un promedio de deslizamiento durante los 10 minutos para algunas teclas I Puede hacer algo como groupBy (window (), my-key).avg (algunos valores) en Spark 2.0 Intento implementar este promedio deslizante usando Spark 1.6.x: intenté con reduceByKeyAndWindow pero no encontré una solución. Imo tengo que mantener todos los valores en la ventana para calcular el promedio. Una forma sería agregar every. Hi, utilizo el siguiente código para calcular el promedio. El problema es que la operación reduce devuelve un DStream aquí y no una tupla como lo hace normalmente sin Streaming. Entonces, ¿cómo podemos obtener la suma y el recuento de la DStream. ¿Podemos arrojarlo a los números de tupla de número ssc. textFileStream (args (1)) val sumandcount numbers. map (n (n. toDouble, 1)). Reduce (a.1 b.1, a.2 b.2). Hola, quiero obtener la opinión de personas que están más familiarizados con la media móvil en descomposición. Consulte el archivo issues. apache. org/jira/browse/HBASE-3616 para obtener más información. Cada región contiene un número de solicitudes acumuladas hasta ahora (se puede agregar más información por región si es necesario). Básicamente, necesito calcular el promedio móvil de decaimiento para las solicitudes por región, periódicamente. Gracias por tu comentario. Hola, ¿Cómo puedo crear una media móvil con mongodb Mis documentos tienen 2 campos: Mes y visitas thx. Me gustaría implementar el promedio móvil como un UDF (en lugar de un reductor de transmisión). Aquí es lo que estoy pensando. Por favor, hágamelo saber si me falta algo aquí: SELECT producto, fecha, mavg (producto, precio, 10) FROM (SELECT FROM prices DISTRIBUTE BY producto ORDENAR POR producto, fecha) Tengo que pasar la llave a mavg () Tiene que detectar cuando un grupo de productos termina y otro comienza. ¿Cómo se puede crear un promedio móvil esta pregunta stackoverflow pregunta lo mismo stackoverflow / questions / 25151042 / moving-averages-with-mongodbs-aggregation-framework. No queriendo reinventar la rueda Aquí, me pregunto si alguien más ha hecho un sistema de calificación. Therell ser dos columnas: titleid para el título de la película que se califica y luego una calificación de uno a diez. ¿Cuál sería la sentencia SQL más eficiente para encontrar un promedio ponderado de títulos Muchas gracias. Ian Evans. Estoy tratando de obtener la edad promedio de algunos equipos en mi base de datos. Estoy usando el siguiente código: ageresult mysqlquery (select AVG (edad) FROM batrost WHERE ID del ID de propietario) while ((row mysqlfetchobject (ageresult))) age echo Edad media -.teamID. age ¿Cómo puedo obtener la edad promedio de este Jeff. Hola, nos gustaría observar el valor medio del tiempo promedio por solicitud de las últimas consultas N (por ejemplo, 20) de nuestro servidor Solr utilizando Nagios. ¿Alguien sabe si tal observable ya está implementado. Si no, creo que el lugar perfecto para ello sería el método getStatistics () dentro de solr / core / src / java / org / apache / solr / handler / RequestHandlerBase. java. Estoy haciendo un área del sitio donde los miembros pueden votar Recursos específicos. Pueden añadir un comentario para la calificación. Estoy tratando de hacer una tabla separada que contiene el promedio de todas las calificaciones, por lo que puede mostrar fácilmente los artículos de mayor clasificación. Aquí está mi estructura de mesa. Tabla Comentarios CommentID (clave) ArticleID Comentarios del usuario Clasificación de tabla Clasificación ArticleID Nombre de artículo Rating. I quiere promedio algunas cosas en un db con una combinación izquierda. ¿Cómo puedo devolver 3 si no hay nada a la media para una entrada específica. (Tengo comentarios y una tabla de artículos. Los comentarios se dejan unidos a la tabla de artículos) JJ Harrison email160protected www. tececo Por favor, responda en la lista / newsgroup a menos que la respuesta que OT. Hey, espero que esto no es una pregunta de novato. Actualmente estoy usando MySQL 3.23.35a e Im buscando cómo obtener un estilo olímpico promedio de los valores en una tabla donde la parte superior e inferior n puntuaciones se eliminan del cálculo promedio. Ejemplo: tabla: opiniones columnas: id, valores de puntuación: 1 9 1 9 1 9 1 1 1 10 2 7 2 8 2 7 2 6 2 7 Los resultados.¿Cómo se determina el tiempo promedio por consulta en MySQL Jeff Johnson. The Sitio en el que estoy trabajando está experimentando MySQL congelar ups en cualquier momento después de las consultas por segundo promedio visto en la salida de estado es de 48-50 en valor. Cuando el propietario del sitio le preguntó al servicio de alojamiento acerca de esto le dijeron que el MySQL no puede ir por encima de ese límite. Todavía tiene un montón de recursos de CPU y RAM por lo que me hace preguntarse ¿Por qué hay una limitación a MySQL en este sentido. Hi, estoy tratando de encontrar el precio promedio de las acciones en la tabla de la cartera. Pensé que algo así debería funcionar. SELECT símbolo, ((sum (buyratequantity)) / cantidad) como promedio de grupo de cartera por símbolo Funciona, pero los resultados son incorrectos. ¿Cuál es la consulta correcta Shantanu Oak ¿Usted Yahoo. Amigos. Divertido. Pruebe el nuevo Yahoo Messenger. Messenger. I tiene una tabla llamada ratings. Tiene 3 filas de la llave extranjera de la identificación del interés a otra calidad de la tabla una calificación de la calidad u el usuario que dio esa clasificación (también una llave extranjera en la tabla de los usuarios) ahora quisiera seleccionar todos los identificadores únicos para los cuales la calidad media está abajo 1.5 por lo que si tenemos id qual u 1 5 999 1 4 888 2.Pretend Im Netflix y quiero devolver una lista de películas encontradas, incluyendo el promedio de calificaciones relacionadas para cada película. Algo como esto: seleccione películas., Promedio (ratingss. rating) de películas, calificaciones donde movies. movieidratings. movieid Im seguro thats mal en aproximadamente 10 maneras diferentes, pero espero que obtendrá lo que estoy tratando de hacer. Gracias. Tengo un archivo de registro que captura datos de varios sensores cada minuto que utilizamos para dibujar gráficos en nuestro sitio web. La tabla tiene el siguiente aspecto: CREATE TABLE log (id int 14) NOT NULL autoincrement, VarName varchar (255) NOT NULL, TimeString datetime NO NULL, VarValue decimal (25,6) NOT NULL, Validity int (1) NOT NULL, Timems decimal (25,6) NOT NULL, PRIMARY KEY. Mi cerebro acaba de escupir mi oído tratando de averiguar esto, así que tal vez uno de ustedes puede ayudarme a recogerlo de nuevo. Tengo una tabla de cuentas, y una tabla de Hits-per-day por cuenta. Estoy tratando de ordenar mis cuentas por la mayoría de los hits-per-day, promediado en los últimos 7 días (8 días a través de ayer). ----------- accountid company ---------------------.HELP Estamos ejecutando RH 6.2 y cuando aplicamos todos los parches actuales incluyendo La actualización de glibc, MySQL 3.23.41 dejó de funcionar. No se inició y produjo el error siguiente 5 veces por segundo. Número de procesos que se ejecutan ahora: 1 mysqld proceso colgando, pid 21458 - matado 021011 00:16:19 mysqld reiniciado / usr / Sbin / mysqld: listo para las conexiones Hemos actualizado a 3.23.52. El promedio de install. Moving es un problema difícil para Spark, y cualquier sistema distribuido. Cuando los datos se distribuyen entre varias máquinas, habrá algunas ventanas de tiempo que atraviesen las particiones. Tenemos que duplicar los datos al inicio de las particiones, de modo que el cálculo del promedio móvil por partición da una cobertura completa. Esta es una manera de hacerlo en Spark. Los datos de ejemplo: Un simple particionador que pone cada fila en la partición que especificamos con la clave: Crear los datos con la primera ventana - 1 filas copiadas a la partición anterior: Basta con calcular el promedio móvil en cada partición: Debido a los segmentos duplicados Esto no tendrá brechas en la cobertura.

No comments:

Post a Comment