Compartir a través de


Referencia técnica del algoritmo de serie temporal de Microsoft

El algoritmo de serie temporal de Microsoft incluye dos algoritmos independientes para analizar series temporales:

  • El algoritmo ARTXP, que se introdujo en SQL Server 2005, está optimizado para predecir el siguiente valor probable de una serie.

  • El algoritmo ARIMA se agregó en SQL Server 2008 para mejorar la precisión de la predicción a largo plazo.

De forma predeterminada, Analysis Services usa cada algoritmo por separado para entrenar el modelo y, a continuación, combina los resultados para producir la mejor predicción para un número variable de predicciones. También puede optar por usar solo uno de los algoritmos, en función de los datos y los requisitos de predicción. En SQL Server 2008 Enterprise, también puede personalizar el punto de corte que controla la combinación de algoritmos durante la predicción.

En este tema se proporciona información adicional sobre cómo se implementa cada algoritmo y cómo puede personalizar el algoritmo estableciendo parámetros para ajustar los resultados de análisis y predicción.

Implementación del algoritmo de serie temporal de Microsoft

Microsoft Research desarrolló el algoritmo ARTXP original que se usó en SQL Server 2005, basando la implementación en el algoritmo de árboles de decisión de Microsoft. Por lo tanto, el algoritmo ARTXP se puede describir como un modelo de árbol autorregresivo para representar datos de series temporales periódicas. Este algoritmo relaciona un número variable de elementos anteriores con cada elemento actual que se va a predecir. El nombre ARTXP se deriva del hecho de que el método de árbol autorregresivo (un algoritmo ART) se aplica a varios estados anteriores desconocidos. Para obtener una explicación detallada del algoritmo ARTXP, consulte Modelos de árbol autorregresivo para el Análisis de Time-Series.

El algoritmo ARIMA se agregó al algoritmo de serie temporal de Microsoft en SQL Server 2008 para mejorar la predicción a largo plazo. Es una implementación del proceso para calcular los promedios móviles integrados autorregresivos descritos por Box y Jenkins. La metodología ARIMA permite determinar las dependencias en las observaciones tomadas secuencialmente en el tiempo y puede incorporar descargas aleatorias como parte del modelo. El método ARIMA también admite la estacionalidad multiplicativa. Se recomienda a los lectores que deseen obtener más información sobre el algoritmo ARIMA para leer el trabajo seminal de Box y Jenkins; esta sección está pensada para proporcionar detalles específicos sobre cómo se ha implementado la metodología ARIMA en el algoritmo de serie temporal de Microsoft.

De forma predeterminada, el algoritmo de serie temporal de Microsoft usa ambos métodos, ARTXP y ARIMA, y combina los resultados para mejorar la precisión de la predicción. Si solo desea usar un método específico, puede establecer los parámetros de algoritmo para que usen solo ARTXP o SOLO ARIMA, o para controlar cómo se combinan los resultados de los algoritmos. Tenga en cuenta que el algoritmo ARTXP admite la predicción cruzada, pero el algoritmo ARIMA no. Por lo tanto, la predicción cruzada solo está disponible cuando se usa una combinación de algoritmos o cuando se configura el modelo para que use solo ARTXP.

Comprensión del orden de diferencia de ARIMA

En esta sección se presenta cierta terminología necesaria para comprender el modelo ARIMA y se describe la implementación específica de diferenciación en el algoritmo de serie temporal de Microsoft. Para obtener una explicación completa de estos términos y conceptos, se recomienda una revisión de Box y Jenkins.

  • Un término es un componente de una ecuación matemática. Por ejemplo, un término en una ecuación polinómica podría incluir una combinación de variables y constantes.

  • La fórmula ARIMA que se incluye en el algoritmo de series temporales de Microsoft usa términos autoregresivos y de media móvil.

  • Los modelos de serie temporal pueden ser fijos o no estacionarios. Los modelos estacionarios son aquellos que revierten a una media, aunque pueden tener ciclos, mientras que los modelos no estacionarios no tienen un enfoque de equilibrio y están sujetos a una mayor varianza o cambio introducidos por shocks o variables externas.

  • El objetivo de la diferenciación es hacer que una serie temporal se estabilice y se convierta en estacionaria.

  • El orden de diferencia representa el número de veces que se toma la diferencia entre los valores de una serie temporal.

El algoritmo de serie temporal de Microsoft funciona tomando valores en una serie de datos e intentando ajustar los datos a un patrón. Si la serie de datos aún no está fija, el algoritmo aplica un orden de diferencia. Cada aumento en el orden de diferencia tiende a hacer que la serie temporal sea más fija.

Por ejemplo, si tiene la serie temporal (z1, z2, ..., zn) y realiza cálculos con un orden de diferencia, obtendrá una nueva serie (y1, y2,...., yn-1), donde yi = zi+1-zi. Cuando el orden de diferencia es 2, el algoritmo genera otra serie (x1, x2, ..., xn-2), en función de la serie y derivada de la ecuación de primer orden. La cantidad correcta de diferenciación depende de los datos. Un único orden de diferenciación es más común en los modelos que muestran una tendencia constante; un segundo orden de diferenciación puede indicar una tendencia que varía con el tiempo.

De forma predeterminada, el orden de diferencia usado en el algoritmo de serie temporal de Microsoft es -1, lo que significa que el algoritmo detectará automáticamente el mejor valor para el orden de diferencia. Normalmente, ese mejor valor es 1 (cuando se requiere diferenciación), pero en determinadas circunstancias, el algoritmo aumentará ese valor a un máximo de 2.

El algoritmo de serie temporal de Microsoft determina el orden de diferencia ARIMA óptimo mediante el uso de los valores de autorregresión. El algoritmo examina los valores de AR y establece un parámetro oculto, ARIMA_AR_ORDER, que representa el orden de los términos de AR. Este parámetro oculto, ARIMA_AR_ORDER, tiene un intervalo de valores de -1 a 8. En el valor predeterminado de -1, el algoritmo seleccionará automáticamente el orden de diferencia adecuado.

Cada vez que el valor de ARIMA_AR_ORDER es mayor que 1, el algoritmo multiplica la serie temporal por un término polinómico. Si un término de la fórmula polinómica se resuelve en una raíz de 1 o cerca de 1, el algoritmo intenta conservar la estabilidad del modelo quitando el término y aumentando el orden de diferencia en 1. Si el orden de diferencia ya está en el máximo, se quita el término y el orden de diferencia no cambia.

Por ejemplo, si el valor de AR = 2, el término polinómico de AR resultante podría ser similar al siguiente: 1 - 1.4B + .45B^2 = (1- .9B) (1- 0,5B). Anote el término (1- .9B) que tiene una raíz de aproximadamente 0,9. El algoritmo elimina este término de la fórmula polinómica, pero no puede aumentar el orden de diferencia por uno porque ya está en el valor máximo de 2.

Es importante tener en cuenta que la única manera de forzar un cambio en el orden de diferencia es usar el parámetro no admitido, ARIMA_DIFFERENCE_ORDER. Este parámetro oculto controla cuántas veces el algoritmo realiza diferencias en la serie temporal y se puede establecer escribiendo un parámetro de algoritmo personalizado. Sin embargo, no se recomienda cambiar este valor a menos que esté preparado para experimentar y esté familiarizado con los cálculos implicados. Tenga en cuenta también que actualmente no hay ningún mecanismo, incluidos los parámetros ocultos, para permitirle controlar el umbral en el que se desencadena el aumento en el orden de diferencia.

Por último, tenga en cuenta que la fórmula descrita anteriormente es el caso simplificado, sin sugerencias de estacionalidad. Si se proporcionan sugerencias de estacionalidad, se agrega un término polinómico ar independiente a la izquierda de la ecuación para cada sugerencia de estacionalidad y se aplica la misma estrategia para eliminar términos que podrían desestabilizar la serie diferenciada.

Personalización del algoritmo de serie temporal de Microsoft

El algoritmo de serie temporal de Microsoft admite los parámetros siguientes que afectan al comportamiento, el rendimiento y la precisión del modelo de minería de datos resultante.

Nota:

El algoritmo de serie temporal de Microsoft está disponible en todas las ediciones de SQL Server; sin embargo, algunas características avanzadas, incluidos los parámetros para personalizar el análisis de series temporales, solo se admiten en ediciones específicas de SQL Server. Para obtener una lista de las características compatibles con las ediciones de SQL Server, vea Características compatibles con las ediciones de SQL Server 2012.

Detección de estacionalidad

Los algoritmos ARIMA y ARTXP admiten la detección de estacionalidad o periodicidad. Analysis Services usa la transformación Fast Fourier para detectar la estacionalidad antes del entrenamiento. Sin embargo, puede afectar a la detección de estacionalidad y a los resultados del análisis de series temporales estableciendo parámetros de algoritmo.

  • Al cambiar el valor de AUTODETECT_SEASONALITY, puede influir en el número de segmentos de tiempo posibles que se generan.

  • Al establecer un valor o varios valores para PERIODICITY_HINT, puede proporcionar al algoritmo información sobre los ciclos esperados en los datos y aumentar potencialmente la precisión de la detección.

Nota:

Los algoritmos ARTXP y ARIMA son muy sensibles a las sugerencias de estacionalidad. Por lo tanto, proporcionar la sugerencia incorrecta puede afectar negativamente a los resultados.

Elección de un algoritmo y especificación de la combinación de algoritmos

De forma predeterminada, o al seleccionar la opción MIXED, Analysis Services combina los algoritmos y los asigna igual peso. Sin embargo, en SQL Server 2008 Enterprise, puede especificar un algoritmo determinado o personalizar la proporción de cada algoritmo en los resultados estableciendo un parámetro que pondera los resultados hacia la predicción a corto o largo plazo. De forma predeterminada, el parámetro FORECAST_METHOD se establece en MIXED y Analysis Services usa ambos algoritmos y, a continuación, pondera sus valores para maximizar los puntos fuertes de cada algoritmo.

  • Para controlar la elección del algoritmo, establezca el parámetro FORECAST_METHOD .

  • Si desea usar la predicción cruzada, debe usar la opción ARTXP o MIXED porque ARIMA no admite la predicción cruzada.

  • Establezca el FORECAST_METHOD en ARTXP si desea favorecer la predicción a corto plazo.

  • Establezca el FORECAST_METHOD en ARIMA si desea mejorar la predicción a largo plazo.

En SQL Server 2008 Enterprise, también puede personalizar cómo Analysis Services combina la combinación de los algoritmos ARIMA y ARTXP. Puede controlar tanto el punto inicial de la mezcla como la tasa de cambio estableciendo el parámetro PREDICTION_SMOOTHING :

  • Si establece PREDICTION_SMOOTHING en 0, el modelo solo usa ARTXP.

  • Si establece PREDICTION_SMOOTHING en 1, el modelo solo usa ARIMA.

  • Si establece PREDICTION_SMOOTHING en un valor entre 0 y 1, el modelo pondera el algoritmo ARTXP como una función exponencialmente decreciente de los pasos de predicción. Al mismo tiempo, el modelo también pondera el algoritmo ARIMA como el complemento 1 del peso ARTXP. El modelo usa la normalización y una constante de estabilización para suavizar las curvas.

En general, si predice hasta cinco segmentos de tiempo, ARTXP es casi siempre la mejor opción. Sin embargo, a medida que aumenta el número de segmentos de tiempo para predecir, ARIMA normalmente funciona mejor.

En el diagrama siguiente se muestra cómo el modelo combina los algoritmos cuando PREDICTION_SMOOTHING se establece en el valor predeterminado, 0,5. ARIMA y ARTXP se ponderan igualmente al principio, pero a medida que aumenta el número de pasos de predicción, ARIMA pesa más.

curva predeterminada para la combinación de algoritmos de serie temporal

En cambio, en el diagrama siguiente se muestra la combinación de los algoritmos cuando PREDICTION_SMOOTHING se establece en 0,2. Para el paso 0, el modelo pondera ARIMA como 0.2 y ARTXP como 0.8. A partir de entonces, el peso de ARIMA aumenta exponencialmente y el peso de ARTXP disminuye exponencialmente.

curva de descomposición para la

Establecer parámetros de algoritmo

En la tabla siguiente se describen los parámetros que se pueden usar con el algoritmo de serie temporal de Microsoft.

Parámetro Descripción
AUTO_DETECTAR_PERIODICIDAD Especifica un valor numérico entre 0 y 1 que detecta la periodicidad. El valor predeterminado es 0.6.

Si el valor está más cerca de 0, la periodicidad solo se detecta para datos fuertemente periódicos.

Establecer este valor más cerca de 1 favorece la detección de muchos patrones que son casi periódicos y la generación automática de sugerencias de periodicidad.

Nota: Tratar con muchas sugerencias de periodicidad probablemente provocará tiempos de entrenamiento de modelos significativamente más largos, pero modelos más precisos.
PENALIZACIÓN_POR_COMPLEJIDAD Controla el crecimiento del árbol de decisión. El valor predeterminado es 0.1.

La disminución de este valor aumenta la posibilidad de una división. Aumentar este valor reduce la posibilidad de una división.

Nota: Este parámetro solo está disponible en algunas ediciones de SQL Server.
FORECAST_METHOD Especifica qué algoritmo se va a usar para el análisis y la predicción. Los valores posibles son ARTXP, ARIMA o MIXED. El valor predeterminado es MIXED.
HISTORIC_MODEL_COUNT Especifica el número de modelos históricos que se construirán. El valor predeterminado es 1.

Nota: Este parámetro solo está disponible en algunas ediciones de SQL Server.
BRECHA_DEL_MODELO_HISTÓRICO Especifica el retraso de tiempo entre dos modelos históricos consecutivos. El valor predeterminado es 10. El valor representa un número de unidades de tiempo, donde el modelo define la unidad.

Por ejemplo, establecer este valor en g hace que se construyan modelos históricos con datos truncados por fragmentos de tiempo a intervalos de g, 2*g, 3*g, etc.

Nota: Este parámetro solo está disponible en algunas ediciones de SQL Server.
SENSIBILIDAD_A_LA_INSTABILIDAD Controla el punto en el que la varianza de predicción supera un umbral determinado, después del cual el algoritmo ARTXP suprime las predicciones. El valor predeterminado es 1.

Nota: Este parámetro no se aplica solo a los modelos que usan ARIMA.

El valor predeterminado de 1 proporciona el mismo comportamiento que en SQL Server 2005. Analysis Services supervisa la desviación estándar normalizada para cada predicción. En cuanto este valor supera el umbral de cualquier predicción, el algoritmo de serie temporal devuelve un valor NULL y detiene el proceso de predicción.

Un valor de 0 detiene la detección de inestabilidad. Esto significa que puede crear un número infinito de predicciones, independientemente de la varianza.

Nota: Este parámetro solo se puede modificar en SQL Server Enterprise. En SQL Server Standard, Analysis Services usa solo el valor predeterminado de 1.
MAXIMUM_SERIES_VALUE Especifica el valor máximo que se va a usar para las predicciones. Este parámetro se usa, junto con MINIMUM_SERIES_VALUE, para restringir las predicciones a algún intervalo esperado. Por ejemplo, puede especificar que la cantidad de ventas prevista para cualquier día nunca debe superar el número de productos del inventario.

Nota: Este parámetro solo está disponible en algunas ediciones de SQL Server.
MINIMUM_SERIES_VALUE Especifica el valor mínimo que se puede predecir. Este parámetro se usa, junto con MAXIMUM_SERIES_VALUE, para restringir las predicciones a algún intervalo esperado. Por ejemplo, puede especificar que la cantidad de ventas prevista nunca debe ser un número negativo.

Nota: Este parámetro solo está disponible en algunas ediciones de SQL Server.
MINIMUM_SUPPORT Especifica el número mínimo de segmentos de tiempo necesarios para generar una división en cada árbol de serie temporal. El valor predeterminado es 10.
SUSTITUCIÓN_DE_VALOR_FALTANTE Especifica cómo se rellenan los huecos en los datos históricos. De forma predeterminada, no se permiten espacios en los datos. Si los datos contienen varias series, la serie tampoco puede tener bordes irregulares. Es decir, todas las series deben tener los mismos puntos iniciales y finales. Analysis Services también usa el valor de este parámetro para rellenar huecos en los nuevos datos cuando se realiza un PREDICTION JOIN en modelos de series temporales. En la tabla siguiente se enumeran los valores posibles para este parámetro:

Ninguno: valor predeterminado. Reemplaza los valores que faltan por los valores trazados a lo largo de la curva del modelo entrenado.

Anterior: repite el valor del segmento de tiempo anterior.

Media: utiliza un promedio móvil de intervalos de tiempo empleados en el entrenamiento.

Constante numérica: usa el número especificado para reemplazar todos los valores que faltan.
PERIODICITY_HINT Proporciona una sugerencia al algoritmo en cuanto a la periodicidad de los datos. Por ejemplo, si las ventas varían según el año y la unidad de medida de la serie es meses, la periodicidad es 12. Este parámetro toma el formato de {n [, n]}, donde n es cualquier número positivo.

El n entre corchetes [] es opcional y se puede repetir con la frecuencia que sea necesario. Por ejemplo, para proporcionar varias sugerencias de periodicidad para los datos proporcionados mensualmente, puede escribir {12, 3, 1} para detectar patrones para el año, trimestre y mes. Sin embargo, la periodicidad tiene un efecto fuerte en la calidad del modelo. Si la sugerencia que proporciona difiere de la periodicidad real, los resultados pueden verse afectados negativamente.

El valor predeterminado es {1}.

Nota: Las llaves son necesarias. Además, este parámetro tiene un tipo de datos de cadena. Por lo tanto, si escribe este parámetro como parte de una instrucción de Extensiones de Minería de Datos (DMX), debe incluir el número y las llaves entre comillas dobles.
PREDICTION_SMOOTHING Especifica cómo se debe mezclar el modelo para optimizar la previsión. Este parámetro solo está disponible en algunas ediciones de SQL Server. Puede escribir cualquier valor entre 0 y 1 o usar uno de los siguientes valores:

0: especifica que la predicción solo usa ARTXP. La previsión está optimizada para menos predicciones.

0.5: (Valor predeterminado) Especifica que para la predicción se deben usar ambos algoritmos y los resultados mezclados.

1: especifica que la predicción solo usa ARIMA. La previsión está optimizada para muchas predicciones.



Nota: Use el parámetro FORECAST_METHOD para controlar el entrenamiento.

Banderas de modelado

El algoritmo de serie temporal de Microsoft admite las siguientes marcas de modelado. Al crear la estructura de minería o el modelo de minería, se definen indicadores de modelado para especificar cómo se gestionan los valores de cada columna durante el análisis. Para obtener más información, vea Modeling Flags (Data Mining).

Bandera de Modelo Descripción
NO NULO Indica que la columna no puede contener un valor NULL. Se producirá un error si Analysis Services encuentra un valor NULL durante el entrenamiento del modelo.

Se aplica a las columnas de la estructura minera.
MODEL_EXISTENCE_ONLY Significa que la columna se tratará como si tuviera dos estados posibles: falta y existente. Un valor NULL es un valor que falta.

Se aplica a las columnas del modelo de minería de datos.

Requisitos

Un modelo de serie temporal debe contener una columna de tiempo de clave que contenga valores únicos, columnas de entrada y al menos una columna de predicción.

Columnas de entrada y predicción

El algoritmo de serie temporal de Microsoft admite los tipos de contenido de columna de entrada específicos, los tipos de contenido de columna predecible y las marcas de modelado que se enumeran en la tabla siguiente.

Columna Tipos de contenido
Atributo de entrada Continua, Clave, Hora de clave y Tabla
Atributo de predicción Contínuo, Tabla

Nota:

Se admiten tipos de contenido cíclicos y ordenados, pero el algoritmo los trata como valores discretos y no realiza un procesamiento especial.

Véase también

Algoritmo de serie temporal de MicrosoftEjemplos de consulta de modelo de serie temporalContenido del modelo de minería para modelos de serie temporal (Analysis Services - Minería de datos)