Gaußsche Prozessregression für große Datenmengen

10

Ich habe aus Online-Videos und Vorlesungsskripten etwas über die Gaußsche Prozessregression gelernt. Wenn wir einen Datensatz mit Punkten haben, gehen wir davon aus, dass die Daten aus einem dimensionalen multivariaten Gaußschen Prozess stammen . Meine Frage ist also für den Fall, dass 10 Millionen beträgt. Funktioniert die Gaußsche Prozessregression noch? Wird die Kernelmatrix nicht riesig sein, was den Prozess völlig ineffizient macht? Wenn ja, gibt es Techniken, um damit umzugehen, wie beispielsweise das wiederholte Abtasten aus dem Datensatz viele Male? Was sind einige gute Methoden, um mit solchen Fällen umzugehen? nnn

Iltl
quelle
3
Warum möchten Sie den Gaußschen Prozess verwenden und nicht etwas, das für den Umgang mit großen Datenmengen bestimmt ist?
Tim

Antworten:

7

Es gibt eine Vielzahl von Ansätzen, um Hausärzte auf große Datenmengen zu skalieren, zum Beispiel:

Low-Rank-Ansätze : Diese bemühen sich um eine Low-Rank-Annäherung an die Kovarianzmatrix. Am bekanntesten ist vielleicht die Nystroms-Methode, mit der die Daten auf eine Teilmenge von Punkten projiziert werden. Darauf aufbauend wurden FITC und PITC entwickelt, die Pseudopunkte anstelle der beobachteten Punkte verwenden. Diese sind beispielsweise in der GPy-Python-Bibliothek enthalten. Andere Ansätze umfassen zufällige Fourier-Merkmale.

H-Matrizen : Diese verwenden eine hierarchische Strukturierung der Kovarianzmatrix und wenden auf jede Struktur-Submatrix niedrigrangige Approximationen an. Dies ist in gängigen Bibliotheken weniger häufig implementiert.

Kronecker-Methoden : Diese verwenden Kronecker-Produkte von Kovarianzmatrizen, um den rechnerischen Engpass zu beschleunigen.

Bayesian Committee Machines : Dazu müssen Sie Ihre Daten in Teilmengen aufteilen und jede mit einem Hausarzt modellieren. Anschließend können Sie die Vorhersagen mit der optimalen Bayes'schen Kombination der Ausgänge kombinieren. Dies ist recht einfach zu implementieren und schnell, aber es bricht Ihren Kernel irgendwie, wenn Sie sich darum kümmern - Mark Deisenroths Artikel sollte einfach genug sein, um hier zu folgen .

j__
quelle
5

Normalerweise können Sie Gaußsche Prozesse an Teilproben Ihres Datensatzes trainieren (Bagging). Das Absacken ist in sk learn implementiert und kann einfach verwendet werden. Siehe zum Beispiel die Dokumentation .

Wenn Sie die Anzahl der Beobachtungen, die Anzahl der von Ihnen verwendeten Beutel und die Anzahl der Punkte pro Beutel nennen, können Sie die Trainingszeit von auf ändern . Daher können Sie mit kleinen Taschen, die jedoch alle Daten verwenden, eine viel kürzere Trainingszeit erzielen. Leider verringert dies häufig die Leistung des Modells.nnbagsnpO(n3)O(nbagsnp3)

Abgesehen von Absacktechniken gibt es einige aktive Forschungen darüber, wie die Gaußschen Prozessregressionen skalierbar gemacht werden können. Der Artikel Kernel-Interpolation für skalierbare strukturierte Gauß-Prozesse (KISS-GP) schlägt vor, die Trainingszeit auf ein zu reduzieren, und enthält einen Matlab-Code.O(n)

RUser4512
quelle
5

Du hast gefragt:

funktioniert die Gaußsche Prozessregression in dem Fall, in dem 𝑛 10 Millionen beträgt, immer noch?

Nicht im üblichen Sinne, eine große Matrix zu konstruieren und zu invertieren. Sie haben zwei Möglichkeiten: 1) Wählen Sie ein anderes Modell oder 2) machen Sie eine Annäherung.

1) Einige GP-basierte Modelle können auf sehr große Datenmengen skaliert werden, z. B. die in der obigen Antwort verknüpfte Bayes'sche Komiteemaschine. Ich finde diesen Ansatz jedoch eher unbefriedigend: Es gibt gute Gründe für die Wahl eines GP-Modells, und wenn wir zu einem berechenbareren Modell wechseln, behalten wir möglicherweise nicht die Eigenschaften des ursprünglichen Modells bei. Die prädiktiven Varianzen des BCM hängen beispielsweise stark von der Datenaufteilung ab.

2) Der "klassische" Ansatz zur Approximation bei Hausärzten besteht in der Approximation der Kernelmatrix. Eine gute Übersicht über diese Art von Methoden finden Sie hier: http://www.jmlr.org/papers/volume6/quinonero-candela05a/quinonero-candela05a.pdf . Tatsächlich können wir diese Matrixnäherungen normalerweise als Modellnäherungen betrachten und sie mit der Bayes'schen Komiteemaschine zusammenfassen: Es handelt sich um Änderungen am Modell, und es kann schwierig sein zu verstehen, wann diese Änderungen pathologisch sein könnten. Hier ist eine super Bewertung: https://papers.nips.cc/paper/6477-understanding-probabilistic-sparse-gaussian-process-approximations.pdf

Ich befürworte die Annäherung an große Allgemeinmediziner, indem ich vermeide, die Kernelmatrix oder das Modell zu approximieren und die posteriore Verteilung mithilfe von Variationsinferenz zu approximieren . Viele der Berechnungen sehen aus wie eine Matrixnäherung mit niedrigem Rang, aber es gibt eine sehr wünschenswerte Eigenschaft: Je mehr Berechnungen Sie verwenden (je mehr "Ränge"), desto näher liegt die Annäherung am wahren posterioren Wert, gemessen vom KL Abweichungen.

Diese Artikel sind ein guter Ausgangspunkt: http://proceedings.mlr.press/v5/titsias09a/titsias09a.pdf https://arxiv.org/pdf/1309.6835

Ich habe hier einen längeren Artikel über dasselbe Argument geschrieben: https://www.prowler.io/blog/sparse-gps-approximate-the-posterior-not-the-model

In der Praxis funktioniert die Variationsnäherung in vielen Fällen sehr gut. Ich habe es ausgiebig in realen Anwendungen verwendet. Und in jüngerer Zeit gab es eine ausgezeichnete Theorie, um zu belegen, warum es funktionieren sollte ( https://arxiv.org/abs/1903.03571 ).

Ein letzter Plug: Variationsinferenz in Hausärzten ist in gpflow implementiert ( https://github.com/GPflow/GPflow )

James Hensman
quelle
1
Nur für das Protokoll , wenn jemand über diese kommt und nicht weiß, würde James eine der Behörden sein auf dem Gebiet zusammen mit Mike Osborne, Neill Lawrence und so weiter - irgendwie cool er Q & A auf SE beantworten
j__