Referencia técnica del algoritmo de serie temporal de Microsoft

El algoritmo de serie temporal de Microsoft incluye dos algoritmos independientes:

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

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

De forma predeterminada, Analysis Services utiliza cada algoritmo por separado para entrenar el modelo y, a continuación, combina los resultados para obtener la mejor predicción de un número variable de predicciones. También puede decidir utilizar solo uno de los algoritmos, dependiendo de los datos y los requisitos de la predicción. A partir de SQL Server 2008 Enterprise, también puede personalizar el punto límite 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 se puede personalizar el algoritmo estableciendo los parámetros para ajustar el análisis y los resultados de la predicción.

Implementación de los algoritmos de serie temporal

Microsoft Research desarrolló el algoritmo ARTXP original que se usaba en SQL Server 2005 y basó 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 con regresión automática que permite representar los datos periódicos de una serie temporal. Este algoritmo relaciona un número variable de elementos pasados con cada elemento actual que se predice. El nombre, ARTXP, deriva del hecho de que el método de árbol de regresión automática (un algoritmo ART) se aplica a varios estados anteriores desconocidos. Para obtener una explicación detallada del algoritmo ARTXP, vea los modelos de árbol de regresión automática para análisis de serie temporal

El algoritmo ARIMA se ha agregado al algoritmo de serie temporal de Microsoft en SQL Server 2008 para mejorar la exactitud de la predicción a largo plazo. Se trata de una implementación del proceso para calcular promedios de movimiento integrado de regresión automática descritos por Box y Jenkins. La metodología ARIMA permite determinar las dependencias en las observaciones tomadas secuencialmente en el tiempo y puede incorporar impactos aleatorios como parte del modelo. El método ARIMA también admite la estacionalidad multiplicativa. Se aconseja a los lectores que deseen aprender más acerca del algoritmo ARIMA que lean el trabajo fundamental de Box y Jenkins; esta sección pretende 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 mezcla los resultados para mejorar la precisión de la predicción. Si desea usar solo un método concreto, puede especificar los parámetros del algoritmo para usar únicamente ARTXP o únicamente ARIMA, o para controlar el modo en que se combinan los resultados de los algoritmos. Observe que el algoritmo ARTXP admite la predicción cruzada, mientras que el algoritmo ARIMA no la admite. Por consiguiente, la predicción cruzada solo está disponible cuando se utiliza una combinación de algoritmos o cuando se configura el modelo para utilizar solo ARTXP.

Descripción del orden de las referencias de ARIMA

En esta sección se explica la terminología necesaria para entender el modelo ARIMA y la implementación concreta de las diferencias en el algoritmo de serie temporal de Microsoft. Para obtener una explicación completa de estos términos y conceptos, se recomienda revisar el trabajo de Box y Jenkins.

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

  • La fórmula de ARIMA que se incluye en el algoritmo de serie temporal de Microsoft usa ambos términos: regresión automática y media móvil.

  • Los modelos de serie temporal pueden ser estacionarios o no estacionarios. Los modelos estacionarios son aquellos que revierten a un medio, aunque podrían tener ciclos, mientras que los no estacionarios no tienen un centro de equilibrio y están sujetos a mayores variaciones o cambios introducidos por los impactos 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 la diferencia entre los valores se toma para una serie temporal.

El algoritmo de serie temporal de Microsoft toma los valores de una serie de datos e intenta adecuarlos a un modelo. Si la serie de datos todavía no es estacionaria, el algoritmo aplica un orden de diferencia. Cada aumento en el orden de diferencia tiende a hacer que la serie temporal sea más estacionaria.

Por ejemplo, si tiene la serie temporal (z1, z2, …, zn) y realiza cálculos usando un orden de diferencia, obtiene una serie nueva (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), basada en la serie y que se derivó de la ecuación del primer orden. El grado correcto de diferencia depende de los datos. Un solo orden de diferencia es más común en los modelos que muestran una tendencia constante; un segundo orden de diferencia puede indicar una tendencia que varía con el tiempo.

De forma predeterminada, el orden de diferencia que se usa 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. Generalmente, el mejor valor es 1 (cuando se requiere una diferencia) pero, en ciertas circunstancias, el algoritmo aumentará el valor hasta un máximo de 2.

El algoritmo de serie temporal de Microsoft determina el orden de diferencia óptimo de ARIMA con los valores de regresión automática. 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 comprendido entre -1 y 8. Con el valor predeterminado -1, el algoritmo seleccionará automáticamente el orden de diferencia apropiado.

Siempre que el valor de ARIMA_AR_ORDER sea 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 con una raíz de uno o con un valor cercano a 1, el algoritmo intenta conservar la estabilidad del modelo quitando el término e incrementando el orden de diferencia en 1. Si el orden de diferencia ya es el máximo, el término se quita y el orden de diferencia no cambia.

Por ejemplo, si el valor de AR es igual a 2, el término polinómico de AR podría ser similar a este: 1 – 1.4B + .45B^2 = (1- .9B) (1- 0.5B). Observe 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 incrementar el orden de diferencia en uno porque ya tiene el valor máximo de 2.

Es importante observar que el único modo en que puede exigir un cambio en el orden de diferencia es mediante el parámetro no admitido, ARIMA_DIFFERENCE_ORDER. Este parámetro oculto controla el número de veces en que el algoritmo realiza la diferenciación de la serie temporal y puede establecerse escribiendo un parámetro del algoritmo personalizado. Sin embargo, no se recomienda cambiar este valor a menos que esté en disposición de experimentar y conoce los cálculos implicados. Tenga en cuenta igualmente que no hay ningún mecanismo, ni siquiera en los parámetros ocultos, que le permita controlar el umbral en el que se activa el orden de diferencia.

Finalmente, observe que la fórmula descrita anteriormente es el caso simplificado y no tiene sugerencias de estacionalidad. Si se proporcionan sugerencias de estacionalidad, se agrega un término polinómico de AR diferente a la izquierda de la ecuación para cada sugerencia de estacionalidad y se aplica la misma estrategia para eliminar los términos que podrían desestabilizar las series diferenciadas.

Personalizar el algoritmo de serie temporal de Microsoft

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

Detección de la estacionalidad

Ambos algoritmos admiten la detección de estacionalidad o periodicidad. Analysis Services utiliza la transformación rápida de Fourier para detectar la estacionalidad antes de realizar el entrenamiento.

Para lograr los mejores resultados, puede controlar la detección de la estacionalidad estableciendo parámetros de algoritmo. Al cambiar el valor de AUTODETECT_SEASONALITY, puede influir en el número de posibles segmentos de tiempo que se generan. Al establecer un valor o varios valores para PERIODICITY_HINT, puede proporcionar información al algoritmo sobre los períodos de repetición conocidos y aumentar la exactitud de la detección.

Nota

Los algoritmos ARTXP y ARIMA tienen en cuenta las sugerencias de estacionalidad. Por consiguiente, si se proporciona una sugerencia equivocada, puede afectar negativamente a los resultados.

Combinar los algoritmos

De forma predeterminada, Analysis Services combina y pondera equitativamente los algoritmos. Sin embargo, a partir de SQL Server 2008 Enterprise, puede personalizar la combinación de los resultados seleccionando la opción MIXED y estableciendo un parámetro que pondere los resultados hacia la predicción a corto o a largo plazo.

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

Para controlar la elección de algoritmo, establezca el parámetro FORECAST_METHOD. De forma predeterminada, el parámetro FORECAST_METHOD se establece en MIXED y Analysis Services utiliza ambos algoritmos para, a continuación, ponderar sus valores con el fin de obtener el máximo partido de cada algoritmo. Sin embargo, puede establecer FORECAST_METHOD en ARTxp, si desea utilizar solo el algoritmo ARTxp, o en ARIMA si desea utilizar solo el algoritmo ARIMA.

A partir de SQL Server 2008 Enterprise, también puede personalizar el modo en que Analysis Services mezcla la combinación de los algoritmos ARIMA y ARTXP. Puede controlar tanto el punto de partida de la mezcla como la tasa de cambio estableciendo el parámetro PREDICTION_SMOOTHING:

  • Si establece PREDICTION_SMOOTHING en 0, el modelo se vuelve ARTxp puro.

  • Si establece PREDICTION_SMOOTHING en 1, el modelo se vuelve ARIMA puro.

  • Si establece set 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 complemento a uno del peso de 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 casi siempre es la mejor opción. Sin embargo, cuando aumenta el número de segmentos de tiempo que predecir, ARIMA suele funcionar 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 equitativamente al principio, pero a medida que el número de pasos de predicción aumenta, la ponderación de ARIMA es mayor.

curva predeterminada de la mezcla de los algoritmos de serie temporal

Por el contrario, el diagrama siguiente ilustra la combinación de los algoritmos cuando PREDICTION_SMOOTHING se establece en 0,2. En el paso 0, el modelo pondera ARIMA como 0,2 y ARTXP como 0,8. Posteriormente, el peso de ARIMA aumenta exponencialmente y el de ARTxp disminuye exponencialmente.

curva de caída de la mezcla del modelo de serie temporal

Establecer los parámetros del algoritmo

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

Parámetro

Descripción

AUTO_DETECT_PERIODICITY

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 próximo a 0, la periodicidad solo se detecta en datos con una periodicidad muy marcada.

Cuando este valor está más próximo a 1, se favorece la detección de varios patrones que son casi periódicos y la generación automática de sugerencias de periodicidad.

NotaNota
Un gran número de sugerencias de periodicidad puede aumentar significativamente el tiempo de entrenamiento de los modelos, pero puede proporcionar modelos más precisos.

COMPLEXITY_PENALTY

Controla el crecimiento del árbol de decisión. El valor predeterminado es 0,1.

Al disminuir este valor, aumenta la posibilidad de una división. Al aumentar este valor, disminuye la posibilidad de una división.

NotaNota
Este parámetro solo está disponible en SQL Server Enterprise.

FORECAST_METHOD

Especifica qué algoritmo se ha de utilizar 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 generarán. El valor predeterminado es 1.

NotaNota
Este parámetro solo está disponible en SQL Server Enterprise.

HISTORICAL_MODEL_GAP

Especifica el segmento de tiempo entre dos modelos históricos consecutivos. El valor predeterminado es 10. El valor representa varias unidades de tiempo, donde el modelo define la unidad.

Por ejemplo, si establece este valor en g, se generarán modelos históricos para datos truncados por segmentos de tiempo a segmentos de g, 2*g, 3*g, etc.

NotaNota
Este parámetro solo está disponible en SQL Server Enterprise.

INSTABILITY_SENSITIVITY

Controla el punto en el que la varianza de la predicción supera un cierto umbral y el algoritmo ARTXP suprime las predicciones. El valor predeterminado es 1.

NotaNota
Este parámetro no se aplica a modelos que solo utilizan ARIMA.

El valor predeterminado 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 las desviaciones normalizadas para cualquier predicción superan el umbral, el algoritmo de serie temporal devuelve un valor NULL y detiene el proceso de predicción.

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

NotaNota
Este parámetro solo se puede modificar en SQL Server Enterprise. En SQL Server Standard, Analysis Services utiliza solo el valor predeterminado 1.

MAXIMUM_SERIES_VALUE

Especifica el valor máximo que utilizar en 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 previstas para cualquier día nunca debe superar el número de productos en inventario.

NotaNota
Este parámetro solo está disponible en SQL Server Enterprise.

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 previstas nunca debe ser un número negativo.

NotaNota
Este parámetro solo está disponible en SQL Server Enterprise.

MINIMUM_SUPPORT

Especifica el número mínimo de intervalos de tiempo necesarios para generar una división en cada árbol de serie temporal. El valor predeterminado es 10.

MISSING_VALUE_SUBSTITUTION

Especifica cómo se llenan los espacios en los datos históricos. De forma predeterminada, no se permiten espacios en los datos.

En la siguiente tabla se muestran los posibles valores para este parámetro.

ValorDescripción
PreviousRepite el valor del intervalo de tiempo anterior.
MeanUtiliza un promedio móvil de los intervalos de tiempo que se usan para el entrenamiento.
Numeric constantUtiliza el número especificado para reemplazar todos los valores que faltan.
NoneReemplaza los valores que faltan por los valores trazados a lo largo de la curva del modelo entrenado. Es el valor predeterminado.

Si los datos contienen varias series, las series tampoco pueden tener bordes irregulares. Es decir, todas las series deben tener los mismos puntos inicial y final.

Analysis Services también utiliza el valor de este parámetro para rellenar los espacios en los datos nuevos cuando se realiza una operación PREDICTION JOIN en el modelo de serie temporal.

PERIODICITY_HINT

Proporciona una sugerencia al algoritmo en cuanto a la periodicidad de los datos. Por ejemplo, si las ventas varían por año y la unidad de medida en la serie son los meses, la periodicidad es 12. Este parámetro toma el formato {n [, n]}, donde n es cualquier número positivo.

La letra n de los corchetes [] es opcional y puede repetirse con la frecuencia que sea necesaria. Por ejemplo, para proporcionar varias sugerencias de periodicidad para los datos suministrados mensualmente, se puede escribir {12, 3, 1} para detectar patrones durante un año, trimestre o mes. Sin embargo, la periodicidad influye significativamente en la calidad del modelo. Si la sugerencia que se proporciona difiere de la periodicidad real, los resultados pueden verse afectados negativamente.

El valor predeterminado es {1}.

NotaNota
Las llaves son obligatorias. Además, este parámetro tiene un tipo de datos de cadena. Por consiguiente, si se escribe este parámetro como parte de una instrucción de Extensiones de minería de datos (DMX), el número y las llaves se deben poner entre comillas.

PREDICTION_SMOOTHING

Especifica cómo se debe combinar el modelo para optimizar el pronóstico. Se puede escribir cualquier valor entre 0 y 1, o utilizar uno de los valores siguientes:

NotaNota
Utilice el parámetro FORECAST_METHOD para controlar el entrenamiento.
ValorDescripción
0 Especifica que la predicción solo utiliza ARTXP. El pronóstico se optimiza para un menor número de predicciones.
1Especifica que la predicción solo utiliza ARIMA. Un pronóstico se optimiza para un gran número de predicciones.
0.5(Valor predeterminado) Especifica que se deben utilizar ambos algoritmos y combinar los resultados para la predicción.
NotaNota
Este parámetro solo está disponible en SQL Server Enterprise.

Marcas de modelado

El algoritmo de serie temporal de Microsoft admite las marcas de modelado siguientes. Al crear la estructura o el modelo de minería de datos, se definen las marcas de modelado que especifican cómo se tratan los valores de cada columna durante el análisis. Para obtener más información, vea Marcas de modelado (Minería de datos).

Marca de modelado

Descripción

NOT NULL

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 de minería de datos.

MODEL_EXISTENCE_ONLY

Significa que la columna se tratará como si tuviera dos estados posibles: ausente y existente. Un valor NULL es un valor ausente.

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

Requisitos

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

Columnas de entrada y de predicción

El algoritmo de serie temporal de Microsoft admite los tipos de contenido de columna de entrada, tipos de contenido de columna de predicción y marcas de modelado específicas que se indican en esta tabla.

Columna

Tipos de contenido

Atributo de entrada

Continuous ,Key, Key Time y Table

Atributo de predicción

Continuous y Table

Nota

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

Historial de cambios

Contenido actualizado

  • Se ha agregado una nueva sección que describe la implementación de la diferenciación en el algoritmo ARIMA.