As splines podem ser usadas para previsão?


20

Não posso ser específico sobre a natureza dos dados, pois são proprietários, mas suponha que tenhamos dados como este: a cada mês, algumas pessoas se inscrevem em um serviço. Então, em cada mês subsequente, essas pessoas podem atualizar o serviço, interromper o serviço ou ser-lhe negado o serviço (por exemplo, por falta de pagamento). Para a primeira coorte em nossos dados, temos cerca de 2 anos de dados (24 meses).

O número de pessoas que ingressam a cada mês é grande (na faixa de 100.000) e o número que realiza uma das três coisas está na casa dos milhares. No entanto, não estamos usando os dados no nível individual (que seriam milhões de linhas), mas os dados agregados por mês e coorte (que proporção de cada coorte faz cada coisa a cada mês).

Temos modelado dados existentes usando splines de regressão adaptativa multivariada (MARS) e encontrando alguns resultados interessantes. No entanto, estou preocupado em usá-los para extrapolar ou prever no futuro. Minhas preocupações são porque as previsões para o futuro estão necessariamente fora do espaço da amostra (em termos de tempo) e as splines podem se tornar instáveis ​​para extrapolação.

Este é um método legítimo? Que preocupações existem e podem ser tratadas?


2
É claro que eles podem ser usados ​​para previsão, mas você precisará prestar atenção em como ajustar adequadamente os hiperparâmetros do modelo. A escolha da função spline (constante, linear, cúbica) também é uma preocupação importante. IIRC, funções lineares de spline no MARS são normalmente usadas, e splines de ordem superior são evitadas devido à preocupação com extrapolação / sobreajuste.
Sycorax diz Restabelecer Monica

1
Existe algo com que você se preocupa em particular, que o levaria a duvidar de um método que você está usando? Sua precisão pareceu inesperadamente baixa, ou algo assim? Você já tentou outros métodos? Como eles se comparam?
One_observation

1
@ Sophologist Principalmente, eles acabarão sendo muito afetados por novos valores, já que os nós e as linhas são todos baseados em valores do passado. Assim, digamos, um spline linear que diga "aumentar em XXX para todos os anos após 2014" seria baseado apenas em dados de 2015, mas, se aplicado a 2016, continuaria na mesma direção.
Peter Flom - Restabelece Monica

3
@ PeterFlom: Na verdade, fiquei muito confuso com a sua pergunta (as splines são muito comuns para previsão) até ler sua resposta ao Sophologist. Editei sua pergunta para ajudar a enfatizar exatamente qual é a sua preocupação. Por favor revise.
Cliff AB

2
@ PeterFlom: supondo que minha edição esteja correta, você está modelando o efeito do tempo com um spline? Nesse caso, eu ficaria bastante preocupado. No entanto, se você estiver modelando o efeito do tempo com um efeito de atraso e outras covariáveis ​​com splines, eu não veria nenhum problema?
Cliff AB

Respostas:


15

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)=Eu=1nαEuBEu(x[Eu])
αEuBEux[Eu]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).
mumax(0 0,x[Eu]+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+mumax(0 0,x-5)+2mumax(0 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)=2x-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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.