regressione del processo gaussiana per set di dati di grandi dimensioni


10

Ho imparato a conoscere la regressione del processo gaussiano da video online e appunti delle lezioni, la mia comprensione è che se abbiamo un set di dati con punti allora assumiamo che i dati siano campionati da un gaussiano multivariato dimensionale. Quindi la mia domanda è nel caso in cui è di 10 milioni di milioni la regressione del processo gaussiana funziona ancora? La matrice del kernel non sarà enorme, rendendo il processo completamente inefficiente? In tal caso, esistono tecniche in atto per affrontarlo, come il campionamento dal set di dati più volte? Quali sono alcuni buoni metodi per affrontare tali casi? nnn


3
Perché vuoi usare il processo gaussiano e non qualcosa destinato a trattare dati di grandi dimensioni?
Tim

Risposte:


7

Esistono numerosi approcci per ridimensionare i GP in set di dati di grandi dimensioni, ad esempio:

Approcci di basso rango : questi tentativi di creare un'approssimazione di basso rango alla matrice di covarianza. Il più famoso forse è il metodo Nystroms che proietta i dati su un sottoinsieme di punti. Partendo da questo FITC e PITC sono stati sviluppati che utilizzano pseudo punti anziché punti osservati. Questi sono inclusi, ad esempio, nella libreria Python GPy. Altri approcci includono funzionalità casuali di Fourier.

Matrici H : usano la strutturazione gerarchica della matrice di covarianza e applicano approssimazioni di basso rango a ciascuna sottostruttura delle strutture. Questo è meno comunemente implementato nelle biblioteche popolari.

Metodi di Kronecker : utilizzano i prodotti Kronecker delle matrici di covarianza per accelerare il collo di bottiglia del calcolo overhead.

Macchine del Comitato Bayesiano : ciò comporta la suddivisione dei dati in sottoinsiemi e la modellizzazione di ciascuno con un GP. Quindi è possibile combinare le previsioni utilizzando la combinazione bayesiana ottimale degli output. Questo è abbastanza facile da implementare ed è veloce ma il tipo di interruzioni del tuo kernel è che ti interessa - l'articolo di Mark Deisenroth dovrebbe essere abbastanza facile da seguire qui .


5

Di solito, ciò che puoi fare è addestrare i processi gaussiani su sottocampioni del tuo set di dati (insaccamento). Il bagging è implementato in sk learn e può essere utilizzato facilmente. Vedi ad esempio la documentazione .

nnBun'gSnpO(n3)O(nBun'gSnp3)

O(n)


5

Hai chiesto:

nel caso in cui 𝑛 è 10 di milioni, la regressione del processo gaussiana funziona ancora?

Non nel senso standard della costruzione e dell'inversione di una matrice di grandi dimensioni. Hai due opzioni: 1) scegli un modello diverso o 2) fai un'approssimazione.

1) Alcuni modelli basati su GP possono essere ridimensionati in set di dati molto grandi, come la macchina del comitato bayesiano collegata nella risposta sopra. Trovo questo approccio piuttosto insoddisfacente: ci sono buone ragioni per scegliere un modello GP, e se dovessimo passare a un modello più calcolabile, potremmo non conservare le proprietà del modello originale. Le variazioni predittive del BCM dipendono fortemente, ad esempio, dalla suddivisione dei dati.

2) L'approccio "classico" all'approssimazione nei GP è quello di approssimare la matrice del kernel. C'è una buona recensione di questo tipo di metodi qui: http://www.jmlr.org/papers/volume6/quinonero-candela05a/quinonero-candela05a.pdf . In effetti, di solito possiamo vedere queste approssimazioni matriciali come approssimazioni modello e aggregarle con la macchina del comitato bayesiano: sono modifiche al modello e può essere difficile capire quando tali cambiamenti potrebbero essere patologici. Ecco una recensione eccellente: https://papers.nips.cc/paper/6477-understanding-probabilistic-sparse-gaussian-process-approximations.pdf

Il modo in cui sostengo per fare approssimazioni per GP di grandi dimensioni è di evitare l'approssimazione della matrice del kernel o del modello e di approssimare la distribuzione posteriore usando l'inferenza variazionale. Molti dei calcoli sembrano un'approssimazione di matrice di "rango basso", ma esiste una proprietà molto desiderabile: più calcolo usi (più "ranghi") più vicino è l'approssimazione al vero posteriore, come misurato dal KL divergenza.

Questi articoli sono un buon punto di partenza: http://proceedings.mlr.press/v5/titsias09a/titsias09a.pdf https://arxiv.org/pdf/1309.6835

Ho scritto un articolo più lungo sullo stesso argomento qui: https://www.prowler.io/blog/sparse-gps-approximate-the-posterior-not-the-model

In pratica, l'approssimazione variazionale funziona davvero bene in molti casi. L'ho usato ampiamente in applicazioni reali. E più recentemente c'è stata una teoria eccellente per sostenere il motivo per cui dovrebbe funzionare ( https://arxiv.org/abs/1903.03571 ).

Un ultimo plug: l'inferenza variazionale nei GP è implementata in gpflow ( https://github.com/GPflow/GPflow )


1
Solo per la cronaca se qualcuno si imbatte in questo e non lo sa, James sarebbe una delle autorità sul campo insieme a Mike Osborne, Neill Lawrence e così via - un po 'figo sta rispondendo a domande e risposte su SE
j__
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.