Friday, 13 October 2017

Moving Average Outlier Detection


Estimador de tendencias y su aplicación en detección de valores atípicos Este es el seguimiento del último mensaje sobre la detección de fraude. En este artículo nos centraremos en los datos de la serie cronológica y en algunos métodos para encontrar valores atípicos en series temporales Datos de series temporales ¿Qué es una serie de datos temporales? La serie temporal se define como una colección de puntos de datos que se observa en un intervalo de tiempo continuo. Los datos de series de tiempo se usan a menudo para encontrar los cambios de datos en el tiempo. Por ejemplo, podemos medir la cantidad de calorías que hemos quemado todos los días para ver si estamos en forma, también podríamos calcular el dinero que hemos gastado cada día para encontrar nuestros comportamientos de gasto Cambio de divisas (Euro a VN). Fuente: google La figura anterior es un ejemplo de datos de series temporales (ilustrado por el gráfico de líneas a la derecha). También podríamos identificar muchas otras características en el gráfico. Por ejemplo, mirando el gráfico, podríamos encontrar que después de 5 años, el valor de Euro se ha reducido (de 30.000 VND a 25.000 VND). Por otra parte, hubo algunos cambios drásticos a finales de 2017 (que corresponde a su crisis). Incluso la tendencia de los datos del año pasado también podría ser identificada. ¿Qué es un outlier en datos de series de tiempo? En el último post, definimos un outlier como un punto de observación que está distante de otras observaciones. Como se mencionó en la última sección, utilizando datos de series de tiempo, pudimos detectar la tendencia móvil de los datos a lo largo del tiempo. Combinar esos dos, un outlier en datos de series de tiempo es un punto de datos que está distante de la tendencia general del conjunto de datos. Usando la definición anterior, podríamos crear un método general para encontrar valores atípicos en series de tiempo de la siguiente manera: Recopilar datos de series temporales con ruidos y valores atípicos. Normalizar los datos de los valores Buscar la tendencia general de los datos Identificar los puntos que no siguen la tendencia general (puntos que están demasiado distantes de los valores estimados de acuerdo con la tendencia general) Detectar valores atípicos en los datos de la serie temporal Existen muchas maneras de calcular el movimiento Tendencia de los datos. En esta sección, hablaremos de dos métodos: media móvil y regresión. Para ilustrar el algoritmo, permite definir los datos de entrada. Supongamos que se nos da: Promedio móvil Promedio móvil es uno de los métodos más simples para calcular y visualizar la tendencia de los datos de series de tiempo. Su idea es simple, el valor correspondiente de una marca de tiempo se calcula como el valor promedio de los puntos circundantes. Por ejemplo, sea 2k las ventanas de la media móvil. En la marca de tiempo xi podemos calcular yi como: Aplicar esta ecuación a todos los puntos dados alcanzamos los valores estimados de cada timestamp. Encontrar los valores atípicos en los datos dados ahora es bastante simple. Sólo predefinir un umbral y luego identificar todos los datos punto j que tienen: El uso de los puntos circundantes no es una necesidad. También podríamos usar k puntos que se observan antes (o después) del punto seleccionado. Hay varias mejoras para el algoritmo de media móvil. Puede encontrarlos aquí Filtro mediano El promedio móvil ofrece una manera fácil de estimar y visualizar la tendencia de los datos de series de tiempo. Sin embargo, tiene un inconveniente grande que es: el outlier introduce a menudo un cambio drástico en el valor medio. Debido a eso, puede terminar detectando algunos puntos de datos que no deben ser filtrados. Por suerte, Median filtro podría resolver este problema mediante la estimación de los valores observados como la mediana de los valores circundantes. En otras palabras, tenemos: Similar a la media móvil, ahora tenemos que definir un umbral y luego encontrar el valor atípico de acuerdo con el umbral. Tanto el promedio móvil como el filtro medio tienen que enfrentarse al mismo problema: no pueden proporcionar una manera efectiva de predecir el valor en el futuro porque no tenemos datos en el futuro. Por ejemplo, el valor de Euro en comparación con VND está aumentando de acuerdo con el gráfico de la última sección. La aplicación de los algoritmos de media móvil o de filtro mediano para el siguiente paso le resultará un valor predicho que es menor que el último tiempo medido. Por lo tanto, el valor predicho no seguirá la tendencia general de los datos. Para resolver este problema, podemos usar el método de regresión. Regresión A diferencia del promedio móvil y del filtro mediano, la regresión calcula la relación entre cada par de datos observados en el conjunto de datos. Entre los métodos de regresión, la regresión lineal se considera como el método más fácil. Simplemente estima una línea recta que puede considerarse como la tendencia móvil de los datos. En otras palabras, tratamos de estimar una línea que es: Dado los datos, podemos calcular la tasa de error: y el error total es: Minimizar los rendimientos totales de errores Detección de valores atípicos con Proceso Gaussiano La regresión lineal proporciona un método para encontrar la tendencia móvil de datos. Sin embargo, es sólo una línea recta. En datos del mundo real, hemos visto muchos datos que no deben ser estimados como una línea recta. El gráfico de divisas de arriba es un ejemplo. Por lo tanto, necesitamos un mejor método de regresión que no sólo capturar la naturaleza del conjunto de datos dado, pero también robusto al ruido (o outlier) Gaussian Process es un método no paramétrico para descubrir la tendencia de los datos. También ofrece un buen modelo probabilístico que es robusto al ruido de entrada (que se puede considerar como anormal). Permite mover el algoritmo del Proceso Gaussiano. En el proceso gaussiano asumimos que los puntos de datos son una colección de variables aleatorias, cualquier número finito de las cuales tiene una distribución gaussiana conjunta Rasmussen. Similar a la Distribución Gaussiana, el Proceso Gaussiano se define por su función media y función de covarianza. Pueden calcularse como: En este momento, un proceso gaussiano es controlado por la función de covarianza. Consideremos la función de covarianza más común: función RBF (o función Gaussiana). En la función RBF, k (xi, xj) se calcula mediante la siguiente ecuación: Supongamos que queremos predecir el valor ym en xm. Tenemos que preparar Entonces, podemos calcular el ym previsto por: Tenga en cuenta que: todos los parámetros del proceso gaussiano se pueden aprender de los datos dados usando el método de ascenso del gradiente marginal. En estadística, tenemos la regla 67-95-99.7. Aplicando esta regla en nuestro problema tendremos la confianza predictiva de ym. Esto también nos ayuda a identificar el outlier en los datos (los datos observados no permanecen dentro del intervalo de confianza seleccionado de la predicha da Ejemplo Datos de entrada Permite crear una entrada usando python Media móvil Filtro mediano Regresión lineal Proceso gaussiano Estoy trabajando con una gran cantidad De series de tiempo. Estas series de tiempo son básicamente las mediciones de la red cada 10 minutos, y algunos de ellos son periódicos (es decir, el ancho de banda), mientras que otros arent (es decir, la cantidad de tráfico de enrutamiento.) Me gustaría un algoritmo simple para hacer un Básicamente, quiero mantener en la memoria (o en el disco) toda la información histórica de cada serie de tiempo, y quiero detectar cualquier outlier en un escenario en vivo (cada vez que una nueva muestra es capturada). Mejor manera de lograr estos resultados Im actualmente utilizando un promedio móvil para eliminar el ruido, pero luego lo siguiente cosas simples como la desviación estándar, enojado contra el conjunto de datos conjunto no funciona bien (no puedo suponer que la serie de tiempo son estacionarios) Y me gustaría algo más exacto, idealmente un cuadro negro como: doble detección (doble vector, doble valor) donde vector es el conjunto de doble que contiene los datos históricos, y el valor de retorno es la anomalía para el nuevo valor de la muestra. Pregunta: He asumido que la frecuencia es conocida y especificada. Hay métodos para estimar la frecuencia automáticamente, pero eso complicaría la función considerablemente. Si necesita estimar la frecuencia, trate de hacer una pregunta separada al respecto y probablemente le daré una respuesta. Pero necesita más espacio del que tengo disponible en un comentario. Ndash Rob Hyndman Aug 3 10 at 23:40 Una buena solución tendrá varios ingredientes, incluyendo: Utilice una ventana resistente y móvil para eliminar la no estacionabilidad. Vuelva a expresar los datos originales de modo que los residuos con respecto a los lisos estén aproximadamente distribuidos simétricamente. Dada la naturaleza de sus datos, es probable que sus raíces cuadradas o logaritmos darían residuos simétricos. Aplicar métodos de tabla de control, o al menos controlar el pensamiento de gráfico, a los residuos. En lo que respecta a ese último, el pensamiento de la carta de control muestra que los umbrales convencionales como 2 SD o 1,5 veces el IQR más allá de los cuartiles funcionan mal porque activan demasiadas señales falsas fuera de control. La gente suele usar 3 SD en el trabajo de tablas de control, de donde 2.5 (o incluso 3) veces el IQR más allá de los cuartiles sería un buen punto de partida. He esbozado más o menos la naturaleza de la solución de Rob Hyndmans, añadiendo dos puntos principales: la necesidad potencial de volver a expresar los datos y la sabiduría de ser más conservadores al señalar un valor atípico. No estoy seguro de que Loess es bueno para un detector en línea, sin embargo, porque no funciona bien en los puntos finales. En su lugar, puede utilizar algo tan simple como un filtro mediano móvil (como en el suavizado resistente Tukeys). Si los outliers no vienen en ráfagas, puede utilizar una ventana estrecha (5 puntos de datos, tal vez, que se descompondrá sólo con una ráfaga de 3 o más atípicos dentro de un grupo de 5). Una vez que haya realizado el análisis para determinar una buena reexpresión de los datos, es poco probable que necesite cambiar la reexpresión. Por lo tanto, su detector en línea sólo necesita hacer referencia a los valores más recientes (la última ventana), ya que no usará los datos anteriores en absoluto. Si tiene series de tiempo realmente largas, podría ir más allá para analizar la autocorrelación y la estacionalidad (como las fluctuaciones diarias o semanales recurrentes) para mejorar el procedimiento. IQR es la recomendación original de Tukey para los bigotes más largos en un boxplot y 3 IQR es su recomendación para marcar puntos como outliersquot quotfar (un riff en una frase popular de 6039s). Esto está integrado en muchos algoritmos boxplot. La recomendación se analiza teóricamente en Hoaglin, Mosteller, amp Tukey, Understanding Robust y Exploratory Data Analysis. Ndash whuber 9830 Oct 9 12 at 21:38 Esto confirma los datos de series de tiempo que he estado tratando de analizar. Ventana promedio y también una ventana de desviaciones estándar. ((X - avg) / sd) gt 3 parecen ser los puntos que quiero señalar como outliers. Bueno, al menos advertir como outliers, señalo cualquier cosa superior a 10 sd como extrema extrema outliers. El problema que me encuentro es lo que es una longitud de ventana ideal I39m jugando con cualquier cosa entre 4-8 puntos de datos. Ndash NeoZenith Jun 29 at 8:00 Neo Su mejor opción puede ser experimentar con un subconjunto de sus datos y confirmar sus conclusiones con pruebas sobre el resto. También se podría realizar una validación cruzada más formal (pero se necesita un cuidado especial con los datos de series de tiempo debido a la interdependencia de todos los valores). Ndash whuber 9830 29 jun a las 12:10 (Esta respuesta respondió a una pregunta duplicada (ahora cerrada) en Detecting outstanding events, que presentó algunos datos en forma gráfica). La detección de valores atípicos depende de la naturaleza de los datos y de lo que usted está dispuesto Asumir sobre ellos. Los métodos de uso general se basan en estadísticas robustas. El espíritu de este enfoque es caracterizar la mayor parte de los datos de una manera que no está influenciada por ningún outliers y luego apuntar a cualquier valor individual que no encajan dentro de esa caracterización. Debido a que se trata de una serie de tiempo, añade la complicación de la necesidad de (re) detectar outliers en forma continua. Si esto se va a hacer a medida que la serie se desarrolla, entonces se nos permite sólo utilizar datos antiguos para la detección, no futuros datos Además, como protección contra las muchas pruebas repetidas, querríamos utilizar un método que tiene un muy bajo falso Tasa positiva. Estas consideraciones sugieren que se ejecute una prueba simple y robusta de la ventana en movimiento sobre los datos. Hay muchas posibilidades, pero una sencilla, fácil de entender y de fácil implementación se basa en una MAD en marcha: desviación absoluta mediana de la mediana. Esta es una medida fuertemente robusta de la variación dentro de los datos, similar a una desviación estándar. Un pico periférico sería varios MAD o más mayor que la mediana. Todavía hay algunos ajustes que hacer. Cuánto de una desviación de la mayor parte de los datos debe considerarse periférico y qué tan atrás en el tiempo se debe mirar Permite dejar estos parámetros como para la experimentación. Se aplica a los datos x (1,2, ldots, n) (con n1150 para emular los datos) con valores correspondientes y: Aplicada a un conjunto de datos como la curva roja ilustrada en la pregunta, produce este resultado: Los datos Se muestran en rojo, la ventana de 30 días de median5MAD umbrales en gris, y los valores extremos - que son simplemente los valores de datos por encima de la curva gris - en negro. (El umbral sólo se puede calcular comenzando al final de la ventana inicial Para todos los datos dentro de esta ventana inicial, se utiliza el primer umbral: es por eso que la curva gris es plana entre x0 y x30.) Los efectos de cambiar los parámetros son (A) aumentar el valor de la ventana tenderá a suavizar la curva gris y (b) aumentar el umbral elevará la curva gris. Sabiendo esto, se puede tomar un segmento inicial de los datos e identificar rápidamente los valores de los parámetros que mejor segregan los picos periféricos del resto de los datos. Aplique estos valores de parámetro para comprobar el resto de los datos. Si una gráfica muestra que el método está empeorando con el tiempo, significa que la naturaleza de los datos está cambiando y que los parámetros pueden necesitar reajustarse. Observe lo poco que este método asume sobre los datos: no tienen que ser distribuidos normalmente no necesitan exhibir ninguna periodicidad que ni siquiera tienen que ser no negativos. Todo lo que asume es que los datos se comportan de manera razonablemente similar a lo largo del tiempo y que los picos periféricos son visiblemente más altos que el resto de los datos. Si a alguien le gustaría experimentar (o comparar alguna otra solución con el ofrecido aquí), aquí está el código que usé para producir datos como los mostrados en la pregunta. Supongo que el sofisticado modelo de series de tiempo no funcionará para usted debido al tiempo que tarda en detectar los valores atípicos que utilizan esta metodología. Por lo tanto, aquí hay una solución: Primero establecer un patrón de tráfico de línea de base normal para un año basado en el análisis manual de los datos históricos que cuenta para la hora del día, día de semana vs fin de semana, mes del año, etc Utilice esta línea de base junto con algún mecanismo simple (Por ejemplo, promedio móvil sugerido por Carlos) para detectar valores atípicos. También puede que desee revisar la literatura de control de procesos estadísticos para algunas ideas. Sí, esto es exactamente lo que estoy haciendo: hasta ahora divido manualmente la señal en períodos, de modo que para cada uno de ellos puedo definir un intervalo de confianza dentro del cual se supone que la señal es estacionaria, y por lo tanto puedo usar métodos estándar como Como desviación estándar. El verdadero problema es que no puedo decidir el patrón esperado para todas las señales que tengo que analizar, y eso es por lo que busco algo más inteligente. Ndash gianluca Ago 2 10 at 21:37 Aquí hay una idea: Paso 1: Implementar y estimar un modelo genérico de series de tiempo sobre una base de tiempo basado en datos históricos. Esto se puede hacer sin conexión. Paso 2: Utilice el modelo resultante para detectar valores atípicos. Paso 3: A alguna frecuencia (tal vez cada mes), vuelva a calibrar el modelo de serie temporal (esto se puede hacer sin conexión) para que su detección de valores extremos de paso 2 no vaya demasiado fuera de paso con los patrones de tráfico actuales. ¿Funcionaría para su contexto ndash user28 Aug 2 10 at 22:24 Sí, esto podría funcionar. Estaba pensando en un enfoque similar (recomponiendo la línea de base cada semana, lo que puede ser un uso intensivo de la CPU si tiene cientos de series de tiempo univariadas para analizar). BTW la verdadera pregunta difícil es quotwhat es el mejor algoritmo estilo blackbox para modelar una señal completamente genérica, considerando ruido, estimación de tendencias y seasonalityquot. AFAIK, todos los enfoques de la literatura requieren una fase de ajuste de quotparámetro realmente difícil, y el único método automático que encontré es un modelo ARIMA de Hyndman (robjhyndman / software / forecast). ¿Estoy perdiendo algo ndash gianluca Aug 2 10 at 22:38 Una vez más, esto funciona bastante bien si la señal se supone que tiene una estacionalidad como esa, pero si utilizo una serie de tiempo completamente diferente (es decir, ), Este método no funcionará (ya que sería mejor manejar aquel con una media global simple y una desviación estándar usando una ventana deslizante que contiene datos históricos). Ndash gianluca Ago 2 10 at 22:02 A menos que esté dispuesto a implementar un modelo general de series de tiempo (lo que trae consigo en términos de latencia, etc) estoy pesimista que encontrará una aplicación general que al mismo tiempo es bastante simple Para trabajar para todo tipo de series de tiempo. Ndash user28 Aug 2 10 at 22:06 Otro comentario: Sé que una buena respuesta podría ser quotso usted podría estimar la periodicidad de la señal, y decidir el algoritmo para usar de acuerdo a itquot, pero no encontré una buena solución real a este otro Problema (he jugado un poco con el análisis espectral utilizando DFT y análisis de tiempo utilizando la función de autocorrelación, pero mis series de tiempo contienen mucho ruido y estos métodos dan algunos resultados locos más de la época) ndash gianluca Aug 2 10 at 22:06 A Comentario a su último comentario: eso es por lo que busco un enfoque más genérico, pero necesito un tipo de caja negra porque no puedo hacer ninguna suposición acerca de la señal analizada, y por lo tanto no puedo crear el parámetro quotbest para el algoritmo de aprendizaje. Ndash gianluca Aug 2 10 at 22:09 Como se trata de datos de series de tiempo, un simple filtro exponencial en. wikipedia. org/wiki/Exponentialsmoothing suavizará los datos. Es un filtro muy bueno ya que no necesita acumular puntos de datos antiguos. Compare cada valor de datos recién suavizado con su valor sin suavizar. Una vez que la desviación excede un determinado umbral predefinido (dependiendo de lo que usted cree que un outlier en sus datos es), entonces su outlier puede ser fácilmente detectado. Usted podría utilizar la desviación estándar de las últimas medidas de N (usted tiene que escoger un N adecuado). Una buena puntuación de anomalía sería cuántas desviaciones estándar una medida es de la media móvil. ¿Qué pasa si la señal muestra una alta estacionalidad (es decir, una gran cantidad de mediciones de la red se caracterizan por un patrón diario y semanal al mismo tiempo, por ejemplo noche vs día o fin de semana Vs días laborables) Un enfoque basado en la desviación estándar no funcionará en ese caso. Por ejemplo, si recibo una nueva muestra cada 10 minutos, y I39m haciendo una detección de anormal del uso de ancho de banda de red de una empresa, básicamente a las 6 pm esta medida se caerá (esto es un esperado Un patrón totalmente normal), y una desviación estándar calculada sobre una ventana deslizante fallará (porque activará una alerta con seguridad). Al mismo tiempo, si la medida cae a las 4pm (desviándose de la línea de base habitual), esto es un outlier real. Ndash gianluca Aug 2 10 at 20:58 lo que hago es agrupar las mediciones por hora y día de la semana y comparar las desviaciones estándar de eso. Aún no es correcto para cosas como vacaciones y temporada de verano / invierno, pero es correcto la mayoría del tiempo. La desventaja es que usted realmente necesita para recoger un año o así de datos para tener suficiente para que stddev comienza a tener sentido. El análisis espectral detecta la periodicidad en series temporales estacionarias. El enfoque del dominio de la frecuencia basado en la estimación de la densidad espectral es un enfoque que recomendaría como su primer paso. Si durante ciertos periodos la irregularidad significa un pico mucho más alto que el típico para ese período entonces la serie con tales irregularidades no sería estacionaria y anlsysis espectral no sería apropiada. Pero asumiendo que usted ha identificado el período que tiene las irregularidades que debe ser capaz de determinar aproximadamente lo que la altura de pico normal sería y, a continuación, puede establecer un umbral en algún nivel por encima de ese promedio para designar los casos irregulares. Una de las preguntas desconcertadas que Demand Planners pide en nuestros talleres de entrenamiento es por qué su software produce un pronóstico plano 90 de las veces. Un software costoso que tomó un ejército y un par de años para implementar normalmente sugirió un modelo constante o un modelo de media móvil. Esto resultó en un pronóstico plano. Aunque el ojo desnudo puede ver gráficamente (si los gráficos están puestos a disposición del usuario) un buen patrón estacional, la selección de expertos en el software produjo una previsión constante a la eternidad. Hay muchos trucos subyacentes a este resultado final, algunos de ellos conocidos y algunos de ellos ocultos. Uno de los culpables es el proceso de detección de valores atípicos. El software puede detectar de forma inteligente los valores atípicos para un determinado ajuste y método de detección de valores atípicos. Normalmente, se utiliza un factor K para desarrollar bandas de tolerancia alrededor del factor ex-post para identificar los valores atípicos. ¿Qué son los factores-K y cómo aprovechar la configuración del factor K para producir buenos modelos de predicción? Observamos en una variedad de casos, la gente utiliza factores k bajos que luego tiran todos los picos y comederos estacionales. Un factor k bajo es super vigilante. No permite que ningún patrón escape a través del motor de modelado. Todo el motor ve es sólo un grupo de unos pocos puntos de datos que están muy dispersos en torno a la previsión ex-post o simplemente una media histórica. Vea la imagen de abajo. Un factor k de 1 eliminará todos los patrones observados en el perfil de demanda. Sólo mantiene una fracción del conjunto de datos original que todos apuntan a la media histórica como un pronóstico violentamente preciso. Esto no tiene nada que ver con la potencia del motor estadístico disponible para el software. En nuestro próximo taller de tres días discutiremos los peligros de la detección automática de valores atípicos y haremos que los asistentes trabajen a través de un ejercicio práctico que dará una mejor visibilidad a todo el proceso de detección de valores atípicos. Vamos a explicar las características bajo el capó del módulo de planificación SAP APO Demand para navegar a través de este proceso peligroso. Día 3 será todo SAP APO con el entrenamiento práctico en la plataforma de software. Los asistentes al taller de septiembre de 2011 fueron capaces de realizar directamente cambios de modelos y parámetros en sus pronósticos en vivo en el taller. Visita demandplanning / workshops. htm para más detalles sobre el taller. Por favor contáctenos si tiene más preguntas o desea discutir el proceso de detección de Outlier en APO DP. El Dr. Mark Chockalingam es el fundador y presidente de Demand Planning LLC, una consultora de estrategia y procesos empresariales que ayuda a los clientes en todas las industrias: productos farmacéuticos, productos de consumo, productos químicos y ropa de moda. Sus áreas de consultoría de especialidad incluyen previsión de ventas, análisis de la cadena de suministro y planificación de ventas y operaciones. Ha realizado numerosos talleres de capacitación y facilitación de estrategias para una variedad de clientes en los Estados Unidos y en el extranjero. Mark ha trabajado con una variedad de compañías de la Fortune 500 como Wyeth, Miller SAB, FMC, Teva a las pequeñas y medianas empresas como Au Bon pain, Multy Industries, Ticona, una división de Celanese AG. Con experiencia significativa en la predicción de negocios y la modelización, es un orador frecuente en los principales eventos de la cadena de suministro en temas que van desde la gestión de la demanda a la planificación de ventas y operaciones. Antes de establecer su práctica de consultoría, Mark ha trabajado con empresas manufactureras en importantes posiciones en la cadena de suministro. Mark fue Director de Análisis de Mercado y Planificación de la Demanda de la Gillette Company, ahora parte de Proctor and Gamble. Antes de Gillette, Mark lideró los procesos de predicción Suncare, Footcare y OTC para Schering-Plough Consumer HealthCare en Memphis. Mark tiene un Ph. D. en Finanzas de la Universidad Estatal de Arizona, un MBA de la Universidad de Toledo y es miembro del Instituto de Contadores Públicos de la India. También puede gustar. outlier Dada una serie de valores numéricos con marca de tiempo, el uso del operador Outlier en una consulta puede identificar valores en una secuencia que parezcan inesperados e identificar una alerta o violación, por ejemplo, para una búsqueda programada. Para ello, el operador Outlier rastrea la media móvil y la desviación estándar del valor, y detecta o alerta cuando la diferencia entre el valor excede la media por algún múltiplo de la desviación estándar, por ejemplo, 3 desviación estándar. Sintaxis:. Timeslice 1m max (x) como tiempo de respuesta por timelice outlier tiempo de respuesta. Timeslice 1m count (sourcehost) como sourcehost por recuento de valores fuera de rango de timeslice Asegúrese de que su sintaxis incluye sólo un campo clave: timeslice. Esto es necesario para que la opción del gráfico de líneas esté disponible. El segundo ejemplo de sintaxis usa una cláusula adicional de ldquogroup byrdquo para encontrar valores atípicos para varios valores de sourcehost. Vea el ejemplo a continuación para más detalles. Esta sintaxis agrega los siguientes campos a la salida: responsetimeerror - Este es el tiempo de respuesta - mean. Responsetimelower - Esta es la media - desviación estándar del umbral. Responsetimeupper - Ésta es la desviación estándar del umbral medio. Responsetimeindicator - Esto es 1 para el valor fuera de los límites inferiores y superiores. Responsetimeviolation - Esto es 1 para golpear el número especificado de indicadores consecutivos. Hay parámetros predeterminados para todos los parámetros, pero puede configurar parámetros mediante argumentos de palabras clave, como longitud de ventana o umbral. Por ejemplo, esta consulta establecería los siguientes parámetros: tiempo de respuesta de outlier window5, threshold3, consecutive2, direction-window - Utilice los 5 puntos de datos de seguimiento para calcular media y sigma. El valor predeterminado es 10. umbral - Calcula la infracción basándose en / - 3 desviaciones estándar. El valor predeterminado es 3.0. Consecutiva - Sólo ajuste la respuesta de tiempo de respuesta a 1 si se observan 2 o más puntos de datos consecutivos más allá de 3 desviaciones estándar del promedio móvil. El valor por defecto es 1. dirección - Usos -,, o -, para qué dirección desencadena infracciones: Utilice - para las desviaciones positivas o negativas. Este es el valor predeterminado. Utilizar sólo para desviaciones positivas (más de lo esperado). Uso - para sólo desviaciones negativas (menos de lo esperado). Reglas: El operador Outlier debe aparecer después de un grupo por agregador, como count, min, max o sum. El campo de destino original debe ser numérico. Ejemplos de registros de IIS Ejecute la siguiente consulta para encontrar valores de valores atípicos en los registros de IIS durante las últimas 6 horas. SourceCategoryIIS / Acceso parse regex quotd-dd d: d: d (ltserveripgtS) (ltcsuristemgt / S) S d (ltusergtS) (ltclientipgt. d) quot analizar regex quotd dd (ltresponsetimegtd) quot timeslice 15m max (responsetime) as Tiempo de respuesta por intervalo de tiempo de respuesta de tiempo temporal ventana5, umbral3, consecutivo2, dirección - Los valores de valores aleatorios están representados por los triángulos rosados ​​en el gráfico resultante. Registros de Apache - Sever Errors Over Time Ejecute la siguiente consulta para encontrar valores de valores anómalos en registros de Apache durante las últimas 3 horas. SourceCategoryApache / Access parse quotHTTP / 1.1quot como statuscode donde statuscode coincide con quot5quot timeslice 5m count (statuscode) como statuscode por timelice outlier statuscode window5, threshold3, consecutive1, direction - Los valores atípicos son representados por los triángulos rosados ​​en el gráfico resultante. Utilice una cláusula adicional de ldquogroup byrdquo para encontrar valores atípicos para varios valores de sourcehost. También puede ejecutar una consulta como esta: data. sourcegecategorydatabase timelice 1m contar por timeslice, sourcehost count outliers por sourcehost De esta manera, puede ejecutar análisis atípicos por separado para cada valor de sourcehost. como se muestra. Este ejemplo sólo producirá una tabla de agregación, no un gráfico, pero los campos indicador y violación reflejarán correctamente cada procesamiento sourcehost. Detección de valores atípicos multidimensionales El operador Atípico soporta la detección de series multidimensionales o multi-temporales. La detección de valores atípicos multidimensionales es útil cuando se desea monitorear el comportamiento de cada usuario, servidor, función de aplicación u otro ldquoentityrdquo único, en lugar de alguna agregación en todas las entidades. Por ejemplo, puede detectar inicios de sesión fallidos por el usuario. Para ello, desearía comprender si alguna cuenta de usuario, individualmente, ha experimentado una extraña cantidad de inicios de sesión fallidos, no si se ha visto alguna subida en la cantidad promedio o total de inicios de sesión fallidos en todos los usuarios. Este último puede ser útil, pero con cientos o miles de usuarios (entidades), un pico en los inicios de sesión fallidos puede perderse en el ruido de una cantidad ldquonormalrdquo de inicio de sesión total fallido, y podría perderse un aumento en los inicios de sesión fallidos para un usuario específico . Otros ejemplos incluyen: Detección de anomalías mientras se controlan fallas de página, operación de disco o utilización de CPU para todos los nodos de un clúster simultáneamente. Supervisión del rendimiento de cada estación de trabajo simultáneamente, sin la necesidad de construir un informe atípico para cada uno. Supervisión de cargas de imagen fallidas para cada usuario de una aplicación (no total de cargas fallidas en todos los usuarios). Si ha utilizado el operador atípico, es fácil crear una operación atípica multidimensional. Sólo tiene que añadir por ltdimensiongt al final de la consulta. Por ejemplo, la siguiente consulta de ejemplo determinará muchas series de tiempo, una por cada sourcehost: fuente de datos de base de datos timeslice 1m de contar por timeslice, sourcehost de valores de outlier por sourcehost Puede mostrar los resultados en bruto de una serie multidimensional en un gráfico de tabla, Las opciones no están disponibles. En el siguiente gráfico de tabla, un valor de 1 en la columna countviolation indica que el punto de datos correspondiente a ese timeslice es un outlier. Alertas basadas en resultados atípicos multidimensionales Para crear una alerta basada en la tabla de valores fuera de serie de varias series, extraiga la contabilización de contabilización. De esta manera, no necesitará crear una alerta para cada serie de datos (cada host de código fuente en el ejemplo anterior), y puede supervisar automáticamente una serie dinámica para el comportamiento de desviación. La consulta de ejemplo siguiente le permite supervisar cuando los usuarios de la aplicación experimentan fallos. Monitorea todas las cuentas de usuario por ID de usuario único y aplica el valor outlier a la cantidad de mensajes ldquofailrdquo que se producen en cada cuenta de usuario: sourceCategoryProd parse quotUserID: quot as userid parse quotResult: quot as result where resultado quotFailquot timeslice 1h count by userid, timeslice outlier Después de ejecutar la consulta, puede hacer clic en Guardar como para crear una búsqueda programada y configurarla para enviar una alerta cuando cualquier cuenta de usuario experimente una cantidad inusual de errores o Otro evento para el que desea monitorear cada serie de datos. Para visualizar sus resultados, en la página de búsqueda, puede crear un gráfico de columnas. A continuación, cambie la propiedad de apilamiento a normal para que muestre las alertas por userid único (el aspecto multidimensional). Gráfico Resultados de valores atípicos multidimensionales Esta sección proporciona dos ejemplos de cómo mostrar resultados de valores atípicos multidimensionales en gráficos. Example 1: Outlier Distribution Across Time In this example, wersquoll extract countviolation from the multi-series outlier table and display that. This allows you to display the distribution of outliers among various time-series. error (sourceCategorymix or sourceCategorycon) timeslice 1m count by timeslice, sourcecategory outlier count by sourcecategory fields timeslice, sourcecategory, countviolation transpose row timeslice column sourcecategory When you select a line chart. this example will display something like the following: Example 2: Outlier Ranking This example query uses the counterror (distance from the expected value for that timeslice) and the value of the standard deviation for the baseline, then determines how many standard deviation a data point is from its expected value. This way, you can display outliers visually in terms of deviation from the expected value. viewcustomereventsadhocsearch timezoneamerica timeslice 1h count by timeslice, timezone outlier count by timezone where countstd gt0 if(countviolation1,abs(counterror)/countstd, 0) as deviation fields timeslice, timezone, deviation transpose row timeslice column timezone When you select a line chart. this example will display something like the following: In the line chart, you can see which series is producing the most ldquodeviatingrdquo outliers. This approach effectively displays the severity of the outlier, because the spikes represent the magnitude (how many standard deviations the value is from the mean) in one time-series compared to another time-series. Recommended articlesDo you need an offline or online algorithm Can you run your entire time series through an algorithm after the time series is generated (offline) Or do you need to have answers real-time as the time series is being generated (online) The CUSUM method is a good place to start for an quotonlinequot algorithm, but your time series needs to be bounded. If it039s not you need to transform your time series so that it is bounded. That means removing seasonality/cyclicality and trend from the series. For an online algorithm such as CUSUM one way to remove seasonality/cyclicality and trend is to compute something like an exponentially smoothed moving average, then subtract this moving average from your main time series. You then use the CUSUM method on the resulting time series of residuals. You can make some adaptations to the CUSUM algorithm to avoid some of it039s drawbacks. For example pick your threshold in a clever way to avoid false-negatives/false-pos itives, think of the threshold as setting the maximum aggregate deviation over time you allow from quotnormal behaviorquot. Another thing you can do is reset the algorithm (set the sum you store to zero) once it detects an outlier to avoid getting many notifications if there039s a shift in how the time series behaves. Here039s another online method that039s similar to CUSUM. Sequential probability ratio test An easy way to do all this for an quotofflinequot algorithm is to fit a polynomial or spline to the time series, then compute the difference between your time series and the fitted polynomial/spline. The resulting time series of residuals can then have some basic statistics computed on it to find outliers, for example any data points outside of 1.5 interquartile-range could be classified as an outlier. Neither of those are fancy or cutting edge but they work most of the time in my experience. If you039re interested in doing something fancier with time series I039d pick up a book on the subject. Time Series Analysis with Applications in R by Cryer is good. 719 Views middot View Upvotes middot Not for Reproduction middot Answer requested by 1 person

No comments:

Post a Comment