regresja procesu gaussowskiego dla dużych zestawów danych


10

Dowiedziałem się o regresji procesu Gaussa z filmów online i notatek z wykładów, rozumiem, że jeśli mamy zbiór danych z punktami to zakładamy, że dane są próbkowane z wymiarowego wielowymiarowego Gaussa. Więc moje pytanie dotyczy przypadku, gdy wynosi 10 milionów, czy regresja procesu Gaussa nadal działa? Czy matryca jądra nie będzie ogromna, czyniąc proces całkowicie nieefektywnym? Jeśli tak, czy istnieją odpowiednie techniki radzenia sobie z tym problemem, takie jak wielokrotne pobieranie próbek z zestawu danych? Jakie są dobre metody radzenia sobie z takimi przypadkami? nnn


3
Dlaczego chcesz używać procesu Gaussa, a nie czegoś, co jest przeznaczone do obsługi dużych danych?
Tim

Odpowiedzi:


7

Istnieje szeroki zakres podejść do skalowania GP do dużych zestawów danych, na przykład:

Podejścia niskiej rangi : starają się stworzyć przybliżenie niskiej rangi do macierzy kowariancji. Najbardziej znanym być może jest metoda Nystromsa, która rzutuje dane na podzbiór punktów. W oparciu o to opracowano FITC i PITC, które wykorzystują pseudopunkty, a nie punkty obserwowane. Są one zawarte na przykład w bibliotece Pytyona GPy. Inne podejścia obejmują losowe funkcje Fouriera.

Macierze H : wykorzystują hierarchiczne struktury macierzy kowariancji i stosują aproksymacje niskiego rzędu do każdej podmacierzy struktur. Jest to rzadziej implementowane w popularnych bibliotekach.

Metody Kroneckera : wykorzystują one produkty Kroneckera macierzy kowariancji, aby przyspieszyć obliczeniowe wąskie gardło.

Maszyny Komitetu Bayesowskiego : polega na dzieleniu danych na podzbiory i modelowaniu każdego z GP. Następnie możesz połączyć prognozy za pomocą optymalnej kombinacji wyników Bayesa. Jest to dość łatwe do wdrożenia i jest szybkie, ale rodzaj przerw w jądrze jest tym, na czym Ci zależy - artykuł Marka Deisenrotha powinien być wystarczająco łatwy do naśladowania tutaj .


5

Zwykle możesz trenować procesy gaussowskie na podpróbkach zestawu danych (tworzenie worków). Pakowanie jest wdrażane w sk learn i może być z łatwością używane. Zobacz przykładową dokumentację .

Przywołanie liczby obserwacji, liczby używanych toreb oraz liczby punktów na torbę, pozwala to zmienić czas treningu z na . Dlatego przy małych workach, ale wykorzystując wszystkie dane, możesz osiągnąć znacznie krótszy czas szkolenia. Niestety często obniża to wydajność modelu.nnbzasolsnpO(n3))O(nbzasolsnp3))

Oprócz technik workowania istnieją aktywne badania nad skalowalnością regresji procesu Gaussa. Artykuł Interpolacja jądra dla skalowalnych strukturalnych procesów gaussowskich (KISS-GP) proponuje skrócenie czasu szkolenia do i zawiera kod matlab.O(n)


5

Zapytałeś:

w przypadku gdy 𝑛 to 10 milionów, czy regresja procesu Gaussa nadal działa?

Nie w standardowym sensie konstruowania i odwracania dużej matrycy. Masz dwie opcje: 1) wybierz inny model lub 2) dokonaj przybliżenia.

1) Niektóre modele oparte na GP mogą być skalowane do bardzo dużych zestawów danych, takich jak maszyna komitetu bayesowskiego połączona w powyższej odpowiedzi. Uważam to podejście za raczej niezadowalające: istnieją dobre powody, aby wybrać model GP, a jeśli mamy przejść na model bardziej obliczalny, możemy nie zachować właściwości oryginalnego modelu. Na przykład wariancje predykcyjne BCM silnie zależą od podziału danych.

2) „Klasycznym” podejściem do aproksymacji w GP jest przybliżenie macierzy jądra. Istnieje dobry przegląd tego rodzaju metod tutaj: http://www.jmlr.org/papers/volume6/quinonero-candela05a/quinonero-candela05a.pdf . W rzeczywistości te przybliżenia macierzy zwykle widzimy jako przybliżenia modelu i łączymy je z maszyną komitetu Bayesa: są to zmiany w modelu i może być trudno zrozumieć, kiedy zmiany te mogą być patologiczne. Oto super recenzja: https://papers.nips.cc/paper/6477-understanding-probabilistic-sparse-gaussian-process-approximations.pdf

Sposób, w jaki zalecam dokonywanie aproksymacji dla dużych GP, polega na unikaniu aproksymacji macierzy jądra lub modelu oraz przybliżaniu rozkładu tylnego za pomocą wnioskowania wariacyjnego. Wiele obliczeń wygląda jak przybliżenie macierzy „niskiej rangi”, ale jest jedna bardzo pożądana właściwość: im więcej używasz obliczeń (im więcej „stopni”), tym bliższe jest prawdziwe przybliżenie, mierzone za pomocą KL rozbieżność.

Artykuły te są dobrym punktem wyjścia: http://proceedings.mlr.press/v5/titsias09a/titsias09a.pdf https://arxiv.org/pdf/1309.6835

Tutaj napisałem dłuższy artykuł na ten sam argument: https://www.prowler.io/blog/sparse-gps-approximate-the-posterior-not-the-model

W praktyce przybliżenie wariacyjne działa bardzo dobrze w wielu przypadkach. Używałem go szeroko w rzeczywistych aplikacjach. A ostatnio pojawiła się doskonała teoria na poparcie tego, dlaczego powinna ona działać ( https://arxiv.org/abs/1903.03571 ).

Ostatnia wtyczka: wnioskowanie wariacyjne w GP jest zaimplementowane w gpflow ( https://github.com/GPflow/GPflow )


1
Tylko dla porządku, jeśli ktoś napotka to i nie wie, James byłby jednym z organów w dziedzinie wraz z Mike Osborne, Neill Lawrence i tak dalej - niby chłodny on odbiera Q & A na SE
j__
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.