Interpolazione spline di ordine superiore


8

Ho notato che l'interpolazione della spline con un grado superiore a 3 (tutto al di là delle spline cubiche) presenta un errore di interpolazione molto elevato, quindi la previsione è per lo più terribile. Mi sono imbattuto in vari appunti di lezione, diapositive e video di Youtube che indicano semplicemente che le spline cubiche (3 ° grado) sono ottimali e che qualsiasi cosa oltre a ciò è una cattiva idea. Queste fonti tuttavia non menzionano mai il perché di questo caso.

Qualcuno può spiegarmi perché questo è il caso e forse darmi un titolo / collegamento a un giornale / giornale di conferenza che spiega questo o forse anche fornire una prova.


1
Devo fare riferimento a questi fenomeni troppo adatti, ma non riesco a trovare alcuna letteratura accademica che menziona questo. Forse conoscete un articolo / libro / tesi che posso usare?
goocreations

Risposte:


10

Non esiste tale prova perché non è sempre vero. È una regola empirica, perché ti garantisco che potresti trovare una situazione - in realtà un numero infinito di situazioni - in cui le spline di ordine superiore farebbero meglio delle spline cubiche. L'ordine di spline ottimale per ogni data situazione è esattamente lo stesso ordine del sistema che si sta tentando di modellare. Se l'ordine è lo stesso e i tuoi punti dati sono privi di errori (mai, ovviamente, tranne nei problemi teorici), dovresti essere in grado di modellare perfettamente il sistema.

Il motivo per cui raccomandano di non superare le spline cubiche è perché il sovradimensionamento è davvero, molto male. Un overfitting può ingigantire notevolmente gli errori, mentre il "underfitting" (la scelta di un metodo spline con un ordine inferiore all'ordine del sistema che si sta modellando) introduce alcuni filtri passa-basso che non sono poi così male o a volte addirittura vantaggiosi.


+1. Si noti che la scelta di un adattamento di ordine inferiore rispetto al modello rappresentato non è un filtro passa-basso "pseudo", ma una forma di filtro passa-basso a sé stante.
Tarin Ziyaee,

@ user4619 Hai ragione. Volevo dire che non è un filtro passa-basso nel senso che di solito pensiamo con i filtri FIR e IIR, ma è un filtro passa-basso, semplicemente non facilmente caratterizzabile. Modificata la risposta.
Jim Clay,

3

Ecco un profilo approssimativo (che può essere o non essere corretto). La spline è un'interpolazione polinomiale, ovvero ogni sezione della curva tra i punti di supporto vicini è un polinomio. Un polinomio di ordine N ha coefficienti N + 1 (gradi di libertà) e quindi può soddisfare 4 condizioni al contorno per sezione. La scelta delle condizioni al contorno determina il tipo di interpolazione. Per una spline che colpisce esattamente i punti di supporto e crea un primo e un secondo derivato continui.

Per le spline di ordine superiore è possibile ottenere continui anche i derivati ​​di ordine superiore, ma ciò tende ad aggiungere molto contenuto ad alta frequenza a transizioni più nitide e spesso provoca "squilli" o oscillazioni eccessive. Le parole originali "spline" derivano da un righello flessibile che le persone usavano per fare interpolazioni "meccaniche". Penso che puoi effettivamente mostrare analizzando la meccanica del righello che la spline cubica corrisponde a quel comportamento.

Come per la maggior parte delle cose, dipende dalla tua applicazione e da cosa vuoi fare. Un'alternativa interessante alle spline cubiche sono le interpolazioni eremitiche che possono garantire la monotonia e assicurarsi che l'interpolazione non oscilli mai al di fuori dei punti di supporto. Dalla funzione di aiuto 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

Esistono diversi tipi di spline, con obiettivi contrastanti:

  • andare vicino ai punti dati di input
  • curve morbide vs. ondeggianti

Per alcuni punti dati, potresti voler interpolare esattamente; ma per migliaia di punti, o anche una dozzina di rumore, l'interpolazione esattamente si muoverà. La maggior parte degli installatori di spline ha parametri per bilanciare la vicinanza dell'adattamento con la scorrevolezza complessiva. Ecco un diagramma di spline di grado 1 (lineare a tratti, punti di connessione) con dati = linea + rumore. Vedete che adattando i dati esattamente a zig-zag su e giù, mentre il massimo livellamento dà una linea retta:

inserisci qui la descrizione dell'immagine Ci sono spline per diversi lavori, a seconda dei dati di input e dei nuovi punti tra: decine / milioni di punti, quanto sono rumorosi, sparsi / su una griglia, 1d 2d 3d ... Su una griglia regolare in 3d, ad esempio, un spline di grado esaminerà vicini di ciascun punto di query: 1 (vicino più vicino), 8 (trilineare), 27, 64 ... Puoi permetterti 64? Ne hai bisogno di 64? Dipende.d(d+1)3

(Molto brevemente, spline B uniformi; spline
Catmull-Rom si interpolano, ad esempio fotogrammi di film;
miscele come 1/3 B + 2/3 CR sono utilmente in mezzo.)

In che modo il grado polinomiale influenza le oscillazioni? Vedi il fenomeno di Runge .

Al superamento di 1d 2d 3d ... vedi (ahem) questa domanda su math.stackexchange.
Sui pericoli di EXtrapolation con spline oltre lineare, vedere questo su SO.

Vedi anche stackoverflow.com/questions/tagged/spline .


-1

Un altro modo di vedere questo è notando che le immagini e i set di dati più interessanti sono "lisci" in una certa misura. L'interpolazione del rumore gaussiano, ad esempio, dovrebbe funzionare meglio con spline di ordine superiore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.