Pela minha interpretação da pergunta, a pergunta subjacente que você está perguntando é se pode ou não modelar o tempo como um spline.
A primeira pergunta que tentarei responder é se você pode ou não usar splines para extrapolar seus dados. A resposta curta é que depende, mas na maioria das vezes, os splines não são tão bons para extrapolação. As splines são essencialmente um método de interpolação, particionam o espaço em que seus dados estão e, em cada partição, cabem em um regressor simples. Então, vamos olhar para o método de MARS. O método MARS é definido como
que é a constante no i-ésimo termo do modelo MARS , é a função de bases no i-ésimo termo eαiBix[i]mumx(0,x[i
f^( x ) = ∑i = 1nαEuBEu( x[ i ])
αEuBEux[ i ]representa o recurso selecionado no seu vetor de recursos no i-ésimo termo. A função base pode ser uma constante ou uma função de dobradiça (retificador). A função de dobradiça é simplesmente
O que a função de dobradiça força o modelo é criar uma
função linear
por partes (é interessante notar que uma rede neural com uma função de ativação linear retificada pode ser visto como o modelo superconjunto do modelo MARS).
m a x ( 0 , x[ i ]+ cEu)
Então, voltando à questão de por que os splines geralmente não são tão bons para extrapolação é perceber que, quando o ponto que você precisa extrapolar começa a mentir, passa os limites da interpolação apenas uma parte muito pequena do seu modelo será "ativada" ou uma parte muito grande será "ativada" e, portanto, o poder do modelo desaparece (devido à falta de variação). Para obter um pouco mais de intuição sobre isso, vamos fingir que estamos tentando ajustar um modelo MARS a um espaço de recurso em . Então, dado um número, tentamos prever outro. O modelo MARS apresenta uma função semelhante a esta:
Se a extrapolação ocorrer após o númeroR
f^( x ) = 5 + m a x ( 0 , x - 5 ) + 2 m a x ( 0 , x - 10 )
10a função agora se torna
O modelo MARS que tínhamos antes se resume a uma única função linear e, portanto, a potência do modelo MARS desaparece (este é o caso da maioria dos termos "ativando"). O mesmo acontecerá com a extrapolação antes do número . A saída do modelo MARS será então simplesmente uma constante. É por isso que, na maioria das vezes, os splines não são adequados para extrapolação. Isso também explica o problema que você mencionou nos comentários de suas postagens, sobre previsões extrapoladas serem "muito ruins para novos valores" e que elas tendem a "continuar na mesma direção" em diferentes séries temporais.
f^( x ) = 10 + 2 ( x - 10 ) = 2 x - 10
5
Agora vamos voltar às séries temporais. As séries temporais são um caso bastante especial no aprendizado de máquina. Eles tendem a ter um pouco de estrutura, seja uma variação parcial ou um dos muitos tipos diferentes de subestruturas, e essa estrutura pode ser explorada. Mas são necessários algoritmos especiais capazes de explorar essa estrutura, infelizmente os splines não fazem isso.
Há algumas coisas que eu recomendaria que você experimentasse. O primeiro seria redes recorrentes. Se sua série temporal não for tão longa (e não tiver dependências de longo prazo), você poderá usar uma rede simples de baunilha recorrente. Se você quiser entender o que está acontecendo, poderá usar uma unidade linear retificada com desvios como uma função de ativação e isso será equivalente a fazer a modelagem MARS no subconjunto das séries temporais e na "memória" que a rede neural recorrente detém. Seria difícil interpretar como a memória é gerenciada pela rede, mas você deve ter uma idéia de como o subespaço está sendo tratado com relação à função linear por partes gerada. Além disso, se você possui recursos estáticos que não pertencem à série temporal, é relativamente fácil ainda usá-los na rede.
Se a série temporal que você possui é muito longa e pode ter dependências de longo prazo, recomendo usar uma das redes recorrentes fechadas, como GRU ou LSTM.
No lado mais clássico da classificação de séries temporais, você pode usar modelos markov ocultos. Não vou aprofundar nisto, porque não estou familiarizado com eles.
Em conclusão, eu não recomendaria o uso de splines por dois motivos. Primeiro, ele não é capaz de lidar com problemas complicados de extrapolação, o que parece ser o problema que você está descrevendo. E segundo, splines não exploram as subestruturas de séries temporais que podem ser muito poderosas na classificação de séries temporais.
Espero que isto ajude.