Referencia técnica del algoritmo de serie temporal de Microsoft
El algoritmo de serie temporal de Microsoft incluye dos algoritmos independientes para analizar series de tiempo:
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. En 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 del algoritmo de serie temporal de Microsoft
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 consiguiente, el algoritmo ARTXP se puede describir como un modelo de árbol con regresión automática que permite representar datos de series temporales periódicas. 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 Modelos de árbol de regresión automática para el análisis de series temporales.
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 medias móviles integradas autorregresivas descrito 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 usa una combinación de algoritmos o cuando se configura el modelo para usar solo ARTXP.
Descripción del orden de diferencia 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 term 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 los dos 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 una media, 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 se toma la diferencia entre los valores para una serie temporal.
El algoritmo de serie temporal de Microsoft toma los valores de una serie de datos e intenta ajustarlos a un patrón. Si la serie de datos todavía no es estacionaria, el algoritmo aplica un orden de diferencia. Cada incremento en el orden de diferencia tiende a hacer que la serie temporal sea más estacionaria.
Por ejemplo, si tiene 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), 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 mediante 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 conozca los cálculos implicados. Tenga en cuenta igualmente que no hay ningún mecanismo, ni siquiera 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 los parámetros siguientes que afectan al comportamiento, rendimiento y 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, como los parámetros para personalizar el análisis de series temporales, solo se admiten en ediciones concretas de SQL Server. Para obtener una lista de las características admitidas por las ediciones de SQL Server, vea Características admitidas por las ediciones de SQL Server 2012 (https://go.microsoft.com/fwlink/?linkid=232473).
Detección de la estacionalidad
Los algoritmos ARTXP y ARIMA admiten la detección de la estacionalidad o periodicidad. Analysis Services usa la transformación rápida de Fourier para detectar la estacionalidad antes de realizar el entrenamiento. Sin embargo, es posible afectar a la detección de la estacionalidad y a los resultados del análisis de la serie temporal estableciendo los parámetros del 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 ciclos que se espera encontrar en los datos y posiblemente aumentar la exactitud de la detección.
[!NOTA]
Los algoritmos ARTXP y ARIMA son muy sensibles a las sugerencias de estacionalidad. Por consiguiente, si se proporciona una sugerencia equivocada, los resultados pueden verse afectados de forma adversa.
Elegir un algoritmo y especificar la combinación de algoritmos
De forma predeterminada, o al seleccionar la opción MIXED, Analysis Services combina los algoritmos y les asigna el mismo peso. Sin embargo, en SQL Server 2008 Enterprise, puede especificar un algoritmo determinado, o puede personalizar la proporción de cada algoritmo en los resultados estableciendo un parámetro que pondere los resultados hacia la predicción a corto o a largo plazo. 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.
Para controlar la elección de algoritmo, establezca el parámetro FORECAST_METHOD.
Si desea utilizar la predicción cruzada, debe utilizar la opción ARTXP o MIXED, porque ARIMA no la admite.
Establezca FORECAST_METHOD en ARTXP si desea favorecer la predicción a corto plazo.
Establezca FORECAST_METHOD en ARIMA si desea mejorar la predicción a largo plazo.
En SQL Server 2008 Enterprise, también puede personalizar el modo en que Analysis Services realiza la combinación de los algoritmos ARIMA y ARTXP. Puede controlar tanto el punto inicial de la combinación como la tasa de cambio estableciendo el parámetro PREDICTION_SMOOTHING:
Si establece PREDICTION_SMOOTHING en 0, el modelo solo utiliza ARTXP.
Si establece PREDICTION_SMOOTHING en 1, el modelo solo utiliza 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 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 intervalos de tiempo, ARTXP casi siempre es la mejor opción. Sin embargo, cuando aumenta el número de intervalos 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.
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.
Establecer 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.
|
||||||||||
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.
|
||||||||||
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.
|
||||||||||
HISTORICAL_MODEL_GAP |
Especifica el intervalo temporal 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 se establece este valor en g, se generarán modelos históricos para datos truncados por segmentos de tiempo a intervalos de g, 2*g, 3*g, etc.
|
||||||||||
INSTABILITY_SENSITIVITY |
Controla el punto en el que la varianza de la predicción supera un cierto umbral, momento en el cual y el algoritmo ARTXP suprime las predicciones. El valor predeterminado es 1.
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 este valor supera el umbral para cualquier predicción, 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.
|
||||||||||
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 predicción de la cantidad de ventas diaria nunca supere el número de productos en inventario.
|
||||||||||
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.
|
||||||||||
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. |
||||||||||
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.
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}.
|
||||||||||
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:
|
Marcadores 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.