2009-02-26 9 views
11

Nel documento article di Peter Alfred sull'interpolazione di dati sparsi multivariati ha menzionato che, da una varietà di schemi, solo pochi sono molto popolari tra i professionisti. Ha chiamato per esempio il metodo di Shepard e Hardy Multiquadrics. Ma quell'articolo ha ormai quasi 20 anni, e ciò che è veramente interessante, è ciò che i metodi sono ampiamente usati al giorno d'oggi.Quale metodo di interpolazione multivariata è il migliore per l'uso pratico?

Se si ha esperienza sull'uso di alcuni schemi di interpolazione spaziale, si prega di parlarne.

UPD: Per rendere questa domanda più competitiva, l'ho riaffermata. Era "Quali metodi di interpolazione multivariata hai mai usato?"

+0

Possiamo avere un collegamento all'articolo, se è online? –

+0

Sicuro. Ho aggiornato il corpo della domanda con un link citeseer. – akalenuk

risposta

6

Ho usato Kriging in passato, con dati sparsi forniti con stime di accuratezza su ciascun campione. Sembrava una tecnica potente che meritava di essere usata più ampiamente al di fuori del mondo geostatistico.

2

l'unica applicazione che ho visto è quella nel codice littleCMS (un motore di gestione del colore open source).

la prima volta che l'ho controllato, è stata eseguita un'interpolazione lineare su un asse e quindi interpolata tra quel risultato e il punto nell'altro asse. l'ho appena scaricato di nuovo e sembra essere molto più sofisticato. non può essere paragonato all'articolo che hai menzionato, ma potresti volerlo controllare, è nel file cmslut.c.

+0

Il codice che stai guardando implementa l'interpolazione tetraedrica. Mathworks ha un articolo [http://blogs.mathworks.com/steve/2006/11/24/tetrahedral-interpolation-for-colorspace-conversion/] sul perché è una buona tecnica per la conversione dello spazio colore. Per altre applicazioni il tuo chilometraggio può variare. –

1

Ho lavorato con il livellamento di dati 3D sparsi per la manipolazione della superficie LINK. Ciò comportava molti punti e io volevo una superficie molto liscia, quindi il processo ha prima trovato una superficie del secondo ordine più adatta ai dati e quindi una fase di rilassamento in cui i punti sono stati adattati alla superficie. Questa non è una superficie interpolante per i dati originali, ma, è stato un modo per ridurre l'ordine dell'interpolant in modo ottimizzato.

Il metodo implicava il funzionamento su regioni a tratti che si adattano bene ad un'approssimazione del secondo ordine.

L'altra caratteristica interessante del metodo è che i punti erano vertici di triangoli e la connettività è preservata durante il livellamento.

15

(questo arrivare a lungo, a meno che non appena corto di vapore.)

In primo luogo, alcuni commenti sui dati non-dispersi. (Vedere la risposta che fa riferimento a littleCMS)

Esistono due tipi di interpolazione dei colori comuni. Alcuni anni fa, l'interpolazione trilineare (interpolazione lineare del prodotto tensoriale) era un approccio comune per l'interpolazione dei colori. Trilinear interpolazione può infatti essere implementato come una serie sequenziale di uno interpolazioni dimensionali, prima su un asse, quindi quindi lungo un secondo asse, ecc

Molti anni fa tutti resi conto che trilinear interpolazione introduce artefatti in immagini a colori, quando applicato a certi tipi di trasformazioni. I problemi sono visti in neutri. Una soluzione è passare a un interpolante simpliciale, in 3-d, sezionando un cubo in 6 tetraedri. In n dimensioni, il cubo unità sarà sezionato in mendri fattoriali (n). Ci sono altre dissezioni di un cubo, ma questo particolare stile assicura che la diagonale principale sia sempre un vantaggio condiviso per tutti i simplessi. Questo a sua volta ripristina un buon comportamento per i neutri, se applicato a determinate tabelle di ricerca colore.

Ora lasciatemi entrare nella questione della vera interpolazione dei dati sparsi.

Altri hanno menzionato una varietà di schemi. Kriging, multiquadrici, metodi basati sulla distanza sono alcuni. (Quando ho fatto qualche lavoro in passato con questi schemi, in realtà ho preferito i metodi multiquadrici inversi.) Tutte queste sono in realtà solo variazioni dei metodi della funzione di base radiale, uno schema comune. I metodi RBF hanno i loro punti positivi e negativi. Generalmente generano un interpolante fluido, ciò dipende ovviamente dalla funzione di base specifica scelta, nonché dalla scelta di limitare il supporto. I metodi RBF consentono anche di estrapolare, almeno fino a quando il supporto degli elementi di base radiale si estenderà. Se gli elementi di base possono essere infiniti in estensione, non verrà applicato alcun vincolo esplicito all'estrapolazione. (L'estrapolazione in generale è una brutta cosa da fare.) Un problema con i metodi RBF è che richiedono la soluzione di grandi sistemi di equazioni lineari, e quei sistemi di equazioni sono spesso matrici dense. Ciò significa che la dimensione del problema, in termini di numero di punti dati che è possibile gestire, tende ad essere limitata dall'algebra lineare. Se invece si limita il supporto troncando gli elementi di base, le matrici possono diventare sparse. Ciò migliorerà l'algebra lineare se si utilizza un pacchetto di matrice sparse per la soluzione. Allo stesso tempo, la distanza di supporto diventa un parametro non lineare che è necessario controllare. Inoltre, metodi come multiquadrici e metodi multiquadrici inversi possono avere un parametro non lineare secondario che controlla la forma degli elementi di base. Kriging ha problemi simili e io metterei insieme tutti questi metodi.

Fare a questi problemi, tutti questi metodi che ho classificato come varianti RBF sono spesso limitati nel numero di punti che gestiranno comodamente. A seconda di come gestisci le cose e della quantità di memoria disponibile, quel limite potrebbe spesso essere dell'ordine di qualche migliaio di punti.

Un altro problema con la classe generale dei metodi RBF è quello che chiamerò intrapolation. Questo è un neologismo che ho creato molti anni fa per descrivere l'interpolazione attraverso un buco relativamente grande nei dati. In realtà, possono esserci problemi anche quando si interpola su fori più piccoli nei dati. Questi metodi, poiché sono in qualche modo lisci, possono introdurre degli estremi indesiderati (grandi picchi o valli) nella superficie interpolata. Questo è un problema comune con anche interpolanti 1-d, spesso visti come artefatti che suonano con spline cubiche o interpolanti polinomiali, e certamente visti con gli interpolanti della serie di Fourier. Il problema nelle dimensioni superiori è anche riconoscere che è effettivamente accaduto, dal momento che tracciare superfici in più di tre dimensioni tende a essere difficile.

Se si dispone di più punti di quel limite o se questi artefatti di suoneria sono inaccettabili, altri metodi sono spesso una scelta migliore. Se si è disposti a utilizzare un interpolante lineare, la soluzione più semplice in dimensioni superiori è iniziare con una tassellazione dei dati. Quindi in 3 dimensioni, tessellate i dati (tipicamente una tassellazione delaunay) in tetraedri. Questo è abbastanza efficiente da fare, e ci sono molti strumenti da trovare per questo scopo. È quindi un semplice problema interpolare ogni singolo punto. Identifica in modo semplice il punto in cui si trova il punto, calcola le coordinate baricentriche come pesi di interpolazione all'interno del simplex e forma la corrispondente combinazione lineare dei valori delle funzioni su ciascun vertice del simplex trovato. Questo è tutto estremamente veloce ed efficiente.

Uno svantaggio di questi metodi basati su tassellatura è che in genere si limita allo scafo convesso dei punti di dati e, in caso contrario, se i dati si trovano in un dominio non convesso, l'interpolante potrebbe fare cose strane in alcune regioni del tuo dominio. Un altro problema con lo schema che ho menzionato sopra è che l'interpolante sarà lineare solo in parte, ma una volta che ti muovi in ​​dimensioni più alte le cose si fanno brutte velocemente. Altri metodi sono disponibili per l'interpolazione lineare basata su una tassellatura, ma richiedono uno sforzo maggiore e sono quindi molto meno comuni.

I compromessi di base dovrebbero essere ovvi qui. Se hai bisogno di un interpolante fluido e hai solo pochi punti, spesso vengono scelti i metodi RBF. Sono semplici, facili da usare, ecc.Il metodo effettivo scelto è spesso solo una questione di comodità, o addirittura di abitudine. Ho usato uno strumento prima ed ero felice, probabilmente ne sarò felice di nuovo. Dato che la domanda era quale metodo è "il migliore per l'uso pratico", sottolineo che il meglio è una parola molto soggettiva quando viene applicata fuori dal contesto. Quali sono i tuoi obiettivi in ​​un problema di interpolazione? Che set di abilità possiedi? Quale set di strumenti sai usare? In quale ambiente lavorerai? Tutti questi fattori influenzeranno la scelta del metodo migliore.

Se si dispone di molti punti dati e la velocità è essenziale, ma la massima fluidità non è così importante, in genere si cercherà un interpolante simpliciale. Naturalmente, se hai punti sufficienti, la natura lineare della bestia è meno importante. L'interpolante lineare a tratti qui ha la grande virtù in alcuni casi che non può mai generare degli estremi nella superficie che non esistevano nei dati. Per alcuni problemi, ad esempio la caratterizzazione del colore, questo è di fondamentale importanza.

Un altro problema riguarda il rumore. Mentre la presenza di rumore è spesso un segnale che è necessaria una levigatura di qualche tipo, non tutte queste superfici hanno una levigatura applicata. Qualsiasi operatore di livellamento a volte attenuerà anche le caratteristiche importanti dei dati. Questo accade perché possiamo pensare a un operatore di livellamento come un filtro passa-basso. Il comportamento ad alta frequenza è spesso rumore, ma potrebbe anche essere solo una punta o una spalla affilata nella mia superficie che non posso permettermi di perdere. Se questo è un problema, allora potresti essere disposto a usare un interpolante anche in presenza di rumore a volte significativo. In tal caso, suggerirò che l'interpolante più semplice e più basso è il migliore. Un interpolante lineare e globale tenderà anche ad amplificare qualsiasi rumore nei dati, quindi se si cerca la più bassa interpolazione della varianza in presenza di rumore, sarà generalmente un interpolante lineare.

Naturalmente, ci sono molte varietà di spline sottili, interpolanti o meno. Una volta che vai oltre una dimensione, le tue opzioni si espandono, almeno se sei disposto a fare il lavoro.

Finirò qui prima che si trasformi in un libro.

+1

Grazie mille per la risposta! Il fatto è che attualmente sto lavorando a uno schema simpliciale con regolarità aggiustabile come parte della mia ricerca di dottorato, e volevo solo sapere se si tratta di un problema reale o meno. Grazie ancora. – akalenuk

Problemi correlati