Interpolação de splines de ordem superior


8

Percebi que a interpolação de splines com um grau superior a 3 (tudo além das splines cúbicas) tem um erro de interpolação muito alto, portanto, a previsão é geralmente terrível. Encontrei várias notas de aula, slides e vídeos do Youtube que simplesmente indicam que splines cúbicos (3º grau) são ótimos e que qualquer coisa além disso é uma má ideia. Essas fontes, no entanto, nunca mencionam por que esse é o caso.

Alguém pode me explicar por que esse é o caso e talvez me dê um título / link para um jornal / conferência que explique isso ou talvez até dê uma prova.


1
Eu tenho que fazer referência a esse fenômeno de adaptação excessiva, mas não consigo encontrar nenhuma literatura acadêmica que mencione isso. Vocês talvez conheçam um artigo / livro / tese que eu possa usar?
Goocreations # 1/13

Respostas:


10

Não existe essa prova, porque nem sempre é verdade. É uma regra de ouro, porque garanto que você pode ter uma situação - um número infinito de situações - na qual splines de ordem superior se sairiam melhor do que splines cúbicos. A ordem ideal do spline para qualquer situação é exatamente a mesma ordem que o sistema que você está tentando modelar. Se a ordem for a mesma e seus pontos de dados estiverem livres de erros (nunca é o caso, é claro, exceto em problemas teóricos), você poderá modelar o sistema perfeitamente.

A razão pela qual eles recomendam não ir mais alto que os splines cúbicos é porque o ajuste excessivo é muito, muito ruim. A sobreajuste pode aumentar muito os erros, enquanto a "falta de ajuste" (escolher um método de spline com uma ordem menor que a ordem do sistema que você está modelando) introduz uma filtragem de passa-baixo que não é tão ruim ou às vezes até benéfica.


+1. Observe que escolher um ajuste de ordem inferior ao modelo que representa não é uma filtragem passa-baixo 'pseudo' - é uma forma de filtragem passa-baixo por si só.
Tarin Ziyaee

@ user4619 Você está certo. Eu quis dizer que não é uma filtragem passa-baixa no sentido em que geralmente pensamos nos filtros FIR e IIR, mas é uma filtragem passa-baixo, mas não é facilmente caracterizável. Editou a resposta.
Jim Clay

3

Aqui está um esboço (que pode ou não estar correto). Spline é uma interpolação polinomial, ou seja, cada seção da curva entre os pontos de apoio vizinhos é um polinômio. Um polinômio de ordem N tem coeficientes N + 1 (graus de liberdade) e, portanto, pode satisfazer 4 condições de contorno por seção. A escolha das condições de contorno determina o tipo de interpolação. Para um spline que atinge exatamente os pontos de suporte e cria uma primeira e uma segunda derivadas contínuas.

Para splines de ordem superior, você também pode obter derivadas de ordem superior, mas isso tende a adicionar muito conteúdo de alta frequência em transições mais nítidas e geralmente resulta em "toque" ou oscilação excessiva. As palavras originais "spline" resultam de uma régua flexível usada pelas pessoas para fazer interpolações "mecânicas". Eu acho que você pode mostrar, analisando a mecânica da régua, o spline cúbico corresponde a esse comportamento.

Como na maioria das coisas, isso depende do seu aplicativo e do que você deseja fazer. Uma alternativa interessante aos splines cúbicos são as interpolações eremitas, que podem garantir a monotonia e garantir que a interpolação nunca seja alterada para fora dos pontos de apoio. Na função de ajuda do MATLAB

Tips

spline constructs  in almost the same way pchip constructs . However, spline chooses the slopes at the  differently, namely to make even  continuous. This has the following effects:

   - spline produces a smoother result, i.e.  is continuous.    
   - spline produces a more accurate result if the data consists of values of a smooth function.    
   - pchip has no overshoots and less oscillation if the data are not smooth.    
   - pchip is less expensive to set up.
   - The two are equally expensive to evaluate.

2

Existem vários tipos de splines, com objetivos conflitantes:

  • aproxime-se dos pontos de dados de entrada
  • curvas suaves vs. onduladas

Para alguns pontos de dados, convém interpolar exatamente; mas, para milhares de pontos, ou mesmo uma dúzia de ruídos, a interpolação exata irá mexer. A maioria dos instaladores de spline possui parâmetros para compensar a proximidade do ajuste versus a suavidade geral. Aqui está um gráfico de splines de grau 1 (linear por partes, conecte os pontos) com dados = linha + ruído. Você vê que o ajuste exato dos dados faz zig-zags para cima e para baixo, enquanto a suavização máxima fornece uma linha reta:

insira a descrição da imagem aqui Existem splines para trabalhos diferentes, dependendo dos dados de entrada e dos novos pontos intermediários: dezenas / milhões de pontos, quão barulhentos, espalhados / em uma grade, 1d 2d 3d ... Em uma grade regular em 3d, por exemplo, um spline de grau d vai olhar (d+1)3vizinhos de cada ponto de consulta: 1 (vizinho mais próximo), 8 (trilinear), 27, 64 ... Você pode pagar 64? Você precisa de 64? Depende.

(Resumidamente, os splines B são suaves; os splines
Catmull-Rom interpolam, por exemplo, quadros de filmes;
misturas como 1/3 B + 2/3 CR são úteis no meio.)

Como o grau polinomial afeta a ondulação? Veja o fenômeno de Runge .

No overshoot em 1d 2d 3d ... veja (ahem) esta pergunta em math.stackexchange.
Sobre os perigos da EXtrapolação com splines além do linear, veja isso no SO.

Consulte também stackoverflow.com/questions/tagged/spline .


-1

Outra maneira de analisar isso é observando que as imagens e conjuntos de dados mais interessantes são "suaves" até certo ponto. A interpolação do ruído gaussiano, por exemplo, deve funcionar melhor com splines de ordem superior.

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.