régression du processus gaussien pour les grands ensembles de données


10

J'ai appris la régression du processus gaussien à partir de vidéos en ligne et de notes de cours, si je comprends bien, si nous avons un ensemble de données avec points, nous supposons que les données sont échantillonnées à partir d'un gaussien multivarié à dimensions. Donc ma question est dans le cas où est 10 de millions, la régression du processus gaussien fonctionne-t-elle toujours? La matrice du noyau ne sera-t-elle pas énorme, rendant le processus complètement inefficace? Dans l'affirmative, existe-t-il des techniques pour y faire face, comme l'échantillonnage de l'ensemble de données à plusieurs reprises? Quelles sont les bonnes méthodes pour traiter de tels cas? nnn


3
Pourquoi voulez-vous utiliser un processus gaussien et non quelque chose qui est destiné à traiter des données volumineuses?
Tim

Réponses:


7

Il existe un large éventail d'approches pour adapter les GP à de grands ensembles de données, par exemple:

Approches de bas rang : elles s'efforcent de créer une approximation de bas rang de la matrice de covariance. Le plus célèbre est peut-être la méthode Nystroms qui projette les données sur un sous-ensemble de points. S'appuyant sur ce FITC et PITC ont été développés qui utilisent des pseudo-points plutôt que des points observés. Ceux-ci sont inclus par exemple dans la bibliothèque python GPy. D'autres approches incluent des fonctionnalités de Fourier aléatoires.

Matrices H : elles utilisent la structuration hiérarchique de la matrice de covariance et appliquent des approximations de bas rang à chaque sous-matrice de structures. Ceci est moins couramment implémenté dans les bibliothèques populaires.

Méthodes Kronecker : celles-ci utilisent des produits Kronecker de matrices de covariance afin d'accélérer le goulot d'étranglement des calculs.

Machines du comité bayésien : cela implique de diviser vos données en sous-ensembles et de modéliser chacun avec un GP. Ensuite, vous pouvez combiner les prédictions en utilisant la combinaison bayésienne optimale des sorties. Ceci est assez facile à implémenter vous-même et est rapide mais le genre de rupture de votre noyau vous tient à cœur - le document de Mark Deisenroth devrait être assez facile à suivre ici .


5

Habituellement, ce que vous pouvez faire est de former des processus gaussiens sur des sous-échantillons de votre ensemble de données (ensachage). L'ensachage est implémenté dans sk learn et peut être utilisé facilement. Voir par exemple la documentation .

Appelant le nombre d'observations, le nombre de sacs que vous utilisez et le nombre de points par sac, cela permet de faire passer le temps d'entraînement d'un à un . Par conséquent, avec de petits sacs mais en utilisant toutes les données, vous pouvez obtenir un temps de formation beaucoup plus court. Malheureusement, cela réduit souvent les performances du modèle.n b a g s n p O ( n 3 ) O ( n b a g s n 3 p )nnbagsnpO(n3)O(nbagsnp3)

Outre les techniques d'ensachage, il existe des recherches actives pour rendre les régressions de processus gaussiennes évolutives. L'article Kernel Interpolation for Scalable Structured Gaussian Processes (KISS-GP) propose de réduire le temps de formation à un et est livré avec un code matlab.O(n)


5

Tu as demandé:

dans le cas où 𝑛 est 10 de millions, la régression du processus gaussien fonctionne-t-elle toujours?

Pas dans le sens standard de construire et d'inverser une grande matrice. Vous avez deux options: 1) choisir un modèle différent ou 2) faire une approximation.

1) Certains modèles basés sur GP peuvent être mis à l'échelle pour de très grands ensembles de données, comme la machine du comité bayésien liée dans la réponse ci-dessus. Je trouve cette approche plutôt insatisfaisante: il y a de bonnes raisons de choisir un modèle GP et si nous devons passer à un modèle plus calculable, nous ne conserverons peut-être pas les propriétés du modèle d'origine. Par exemple, les variances prédictives du BCM dépendent fortement de la répartition des données.

2) L'approche «classique» de l'approximation dans les GP consiste à approximer la matrice du noyau. Il y a une bonne revue de ces sortes de méthodes ici: http://www.jmlr.org/papers/volume6/quinonero-candela05a/quinonero-candela05a.pdf . En fait, nous pouvons généralement voir ces approximations matricielles comme des approximations du modèle et les regrouper avec la machine du comité bayésien: ce sont des modifications du modèle et il peut être difficile de comprendre quand ces changements peuvent être pathologiques. Voici une super revue: https://papers.nips.cc/paper/6477-understanding-probabilistic-sparse-gaussian-process-approximations.pdf

La façon dont je préconise de faire des approximations pour les grands généralistes est d'éviter d'approximer la matrice du noyau ou le modèle, et d'approximer la distribution postérieure en utilisant l'inférence variationnelle. Beaucoup de calculs ressemblent à une approximation matricielle de «bas rang», mais il y a une propriété très souhaitable: plus vous utilisez de calcul (plus de «rangs»), plus l'approximation est proche de la vraie postérieure, telle que mesurée par le KL divergence.

Ces articles sont un bon point de départ: http://proceedings.mlr.press/v5/titsias09a/titsias09a.pdf https://arxiv.org/pdf/1309.6835

J'ai écrit un article plus long sur le même argument ici: https://www.prowler.io/blog/sparse-gps-approximate-the-posterior-not-the-model

Dans la pratique, l'approximation variationnelle fonctionne très bien dans de nombreux cas. Je l'ai beaucoup utilisé dans de vraies applications. Et plus récemment, il y a eu une excellente théorie pour justifier pourquoi cela devrait fonctionner ( https://arxiv.org/abs/1903.03571 ).

Un dernier bouchon: l'inférence variationnelle dans les GP est implémentée dans gpflow ( https://github.com/GPflow/GPflow )


1
Juste pour mémoire si quelqu'un tombe sur cela et ne sait pas, James serait l'une des autorités sur le terrain avec Mike Osborne, Neill Lawrence et ainsi de suite - un peu cool, il répond aux Q&R sur SE
j__
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.