¿Se pueden usar splines para la predicción?

20

No puedo ser específico sobre la naturaleza de los datos, ya que son propietarios, pero supongamos que tenemos datos como este: cada mes, algunas personas se suscriben a un servicio. Luego, en cada mes posterior, esas personas pueden actualizar el servicio, descontinuar el servicio o se les puede negar el servicio (por ejemplo, por falta de pago). Para la primera cohorte en nuestros datos, tenemos aproximadamente 2 años de datos (24 meses).

El número de personas que se unen cada mes es grande (en el rango de 100,000) y el número que hace cualquiera de las tres cosas es de miles. Sin embargo, no estamos utilizando los datos de 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 modelando datos existentes utilizando splines de regresión adaptativa multivariante (MARS) y encontrando algunos resultados interesantes. Sin embargo, me preocupa usarlos para extrapolar o predecir en el futuro. Mis preocupaciones son porque las predicciones en el futuro están necesariamente fuera del espacio muestral (en términos de tiempo) y las splines pueden volverse inestables para la extrapolación.

¿Es este un método legítimo? ¿Qué preocupaciones hay y pueden abordarse?

Peter Flom - Restablece a Monica
fuente
2
Por supuesto, pueden usarse para la predicción, pero deberá prestar atención a cómo ajustar adecuadamente los hiperparámetros del modelo. La elección de la función spline (constante, lineal, cúbica) también son preocupaciones importantes. IIRC, las funciones de splines lineales en MARS se usan típicamente, y las splines de orden superior se evitan por una preocupación de extrapolación / sobreajuste.
Sycorax dice Reinstate Monica
1
¿Hay algo que te preocupe en particular, que te lleve a dudar de un método que has estado usando? ¿Su precisión ha parecido inesperadamente baja, o algo así? ¿Has probado otros métodos? ¿Cómo se comparan?
one_observation
1
@Sophologist Principalmente que terminarán estando muy lejos de los nuevos valores, ya que los nudos y las líneas se basan en valores del pasado. Entonces, digamos, una spline lineal que dice "aumentar en XXX para cada año después de 2014" se basaría solo en datos de 2015 pero, si se aplica a 2016, continuaría en la misma dirección.
Peter Flom - Restablece a Monica
3
@PeterFlom: En realidad estaba muy confundido acerca de su pregunta (las splines son muy comunes para la predicción) hasta que leí su respuesta a Sophologist. Edité su pregunta para ayudar a enfatizar exactamente lo que creo que es su preocupación. Por favor revise.
Cliff AB
2
@PeterFlom: suponiendo que mi edición sea correcta, ¿estás modelando el efecto del tiempo con una spline? Si es así, estaría bastante preocupado. Sin embargo, si está modelando el efecto del tiempo con un efecto de retraso y otras covariables con splines, ¿no vería ningún problema?
Cliff AB

Respuestas:

15

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

F^(X)=yo=1norteαyosiyo(X[yo])
αyosiyoX[yo]
metrounaX(0 0,X[yo]+doyo)

R

F^(X)=5 5+metrounaX(0 0,X-5 5)+2metrounaX(0 0,X-10)

10
F^(X)=10+2(X-10)=2X-10
5 5

Ahora volvamos a las series de tiempo. Las series de tiempo son un caso bastante especial en el aprendizaje automático. Tienden a tener un poco de estructura, ya sea una variación parcial o uno de los muchos tipos diferentes de subestructuras, y esta estructura puede explotarse. Pero se necesitan algoritmos especiales que puedan explotar esta estructura, desafortunadamente las splines no hacen esto.

Hay un par de cosas que recomendaría que pruebes. El primero sería redes recursivas. Si su serie temporal no es tan larga (y no tiene dependencias a largo plazo), debería poder usar una red recurrente simple. Si quisieras poder entender lo que está sucediendo, puedes usar una unidad lineal rectificada con sesgos como función de activación y eso será equivalente a modelar MARS en el subconjunto de la serie de tiempo y la "memoria" que la red neuronal recurrente sostiene. Sería difícil interpretar cómo la red gestiona la memoria, pero debe tener alguna idea de cómo se maneja el subespacio con respecto a la función lineal generada por partes. 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 de tiempo que tiene es muy larga y puede tener dependencias a largo plazo, le recomiendo usar una de las redes recurrentes cerradas, algo como GRU o LSTM.

En el lado más clásico de la clasificación de series de tiempo, podría usar modelos ocultos de Markov. No profundizaré más en esto, porque no estoy tan familiarizado con ellos.

En conclusión, no recomendaría usar splines por dos razones. Uno, no puede manejar problemas complicados de extrapolación, que parece ser el problema que está describiendo. Y dos, las splines no explotan las subestructuras de series temporales que pueden ser muy poderosas en la clasificación de series temporales.

Espero que esto ayude.

Armen Aghajanyan
fuente