23 votos

¿Se pueden utilizar splines para predecir?

No puedo especificar la naturaleza de los datos porque están protegidos, pero supongamos que tenemos datos como estos: Cada mes, algunas personas se suscriben a un servicio. Luego, en cada mes posterior, esas personas pueden actualizar el servicio, interrumpirlo o denegárselo (por ejemplo, por falta de pago). Para la cohorte más temprana de nuestros datos, tenemos unos 2 años de datos (24 meses).

El número de personas que se afilian cada mes es elevado (en torno a 100.000) y el número que hace cualquiera de las tres cosas se cuenta por miles. Sin embargo, no estamos utilizando los datos a nivel individual (que serían millones de filas), sino datos agregados por mes y cohorte (qué proporción de cada cohorte hace cada cosa cada mes).

Hemos estado modelizando datos existentes utilizando splines de regresión adaptativa multivariante (MARS) y hemos obtenido algunos resultados interesantes. Sin embargo, me preocupa utilizarlos para extrapolar o predecir el futuro. Mi preocupación se debe a que las predicciones sobre el futuro están necesariamente fuera del espacio muestral (en términos de tiempo) y los splines pueden volverse inestables para la extrapolación.

¿Es éste un método legítimo? ¿Qué preocupaciones existen y pueden resolverse?

18voto

Yen Puntos 680

Según mi interpretación de la pregunta, la cuestión subyacente que planteas es si se puede o no modelar el tiempo como una spline.

La primera pregunta que intentaré responder es si se pueden utilizar splines para extrapolar los datos. La respuesta corta es que depende, pero la mayoría de las veces, los splines no son tan buenos para la extrapolación. Los splines son esencialmente un método de interpolación, dividen el espacio en el que se encuentran los datos y en cada partición ajustan un regresor simple. Veamos el método MARS. El método MARS se define como $$\hat f(x) = \sum_{i=1}^{n} \alpha_iB_i(x_{[i]})$$ donde $\alpha_i$ es la constante del término i en el modelo MARS, $B_i$ es la función de bases en el término i, y $x_{[i]}$ representa la característica seleccionada de su vector de características en el término i. La función base puede ser una constante o una función bisagra (rectificador). La función bisagra es simplemente $$max(0,x_{[i]} + c_i)$$ Lo que la función bisagra obliga al modelo es a crear un a trozos función lineal (es interesante observar que una red neuronal con una función de activación lineal rectificada puede considerarse como el modelo superconjunto del modelo MARS).

Para volver a la pregunta de por qué los splines no suelen ser tan buenos para la extrapolación, hay que darse cuenta de que una vez que el punto que necesitas extrapolar empieza a estar más allá de los límites de la interpolación, sólo se "activará" una parte muy pequeña de tu modelo o se "activará" una parte muy grande, y por lo tanto la potencia del modelo desaparece (debido a la falta de variación). Para intuirlo un poco mejor, supongamos que intentamos ajustar un modelo MARS a un espacio de características situado en $\mathbb{R}$ . Así que dado un número intentamos predecir otro. El modelo MARS llega a una función que se parece a esto: $$\hat f(x)= 5 + max(0,x - 5) + 2max(0,x-10)$$
Si la extrapolación se produce pasado el número $10$ la función pasa a ser $$\hat f(x) = 10 +2(x-10)= 2x-10$$ El modelo MARS que teníamos antes se reduce ahora a una única función lineal y, por tanto, la potencia del modelo MARS desaparece (es el caso de la mayoría de términos "activadores"). Lo mismo ocurrirá con la extrapolación antes de que el número $5$ . La salida del modelo MARS será entonces simplemente una constante. Por eso, la mayoría de las veces, los splines no son adecuados para la extrapolación. Esto también explica el problema que mencionas en los comentarios de tus posts, acerca de que las predicciones extrapoladas están "muy desviadas para los nuevos valores" y que tienden a "continuar en la misma dirección" para diferentes series temporales.

Volvamos ahora a las series temporales. Las series temporales son un caso bastante especial en el aprendizaje automático. Suelen tener cierta estructura, ya sea una in-varianza parcial o uno de los muchos tipos diferentes de subestructuras, y esta estructura puede explotarse. Pero se necesitan algoritmos especiales que sean capaces de explotar esta estructura, desafortunadamente los splines no lo hacen.

Hay un par de cosas que te recomendaría probar. La primera serían las redes recurrentes. Si tu serie temporal no es tan larga (y no tiene dependencias a largo plazo) deberías poder salirte con la tuya utilizando una simple red recurrente vainilla. Si quieres ser capaz de entender lo que está pasando, podrías utilizar una unidad lineal rectificada con sesgos como función de activación y eso equivaldría a hacer un modelado MARS sobre el subconjunto de las series temporales y la "memoria" que guarda la red neuronal recurrente. Sería difícil interpretar cómo gestiona la red la memoria, pero deberías hacerte una idea de cómo se gestiona el subespacio con respecto a la función lineal a trozos generada. Además, si tiene características estáticas que no pertenecen a la serie temporal, es relativamente fácil utilizarlas en la red.

Si la serie temporal que tienes es muy larga y puede tener dependencias a largo plazo, te recomiendo que utilices una de las redes recurrentes cerradas, algo como GRU o LSTM.

En el lado más clásico de la clasificación de series temporales, se pueden utilizar modelos de Markov ocultos. No voy a profundizar más en ellos, porque no estoy tan familiarizado con ellos.

En conclusión, yo no recomendaría el uso de splines por dos razones. Una, no es capaz de manejar problemas de extrapolación complicados, que parece ser el problema que describes. Y dos, los splines no explotan las subestructuras de las series temporales, que pueden ser muy potentes en la clasificación de series temporales.

Espero que esto ayude.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X