regresi proses gaussian untuk dataset besar

10

Saya telah belajar tentang regresi proses Gaussian dari video online dan catatan kuliah, pemahaman saya tentang hal itu adalah bahwa jika kita memiliki dataset dengan poin maka kita mengasumsikan data tersebut diambil sampel dari Gaussian multivariat multimariat. Jadi pertanyaan saya adalah dalam kasus di mana adalah 10 dari jutaan apakah proses regresi Gaussian masih berfungsi? Apakah matriks kernel tidak akan menghasilkan proses yang sangat tidak efisien? Jika demikian, adakah teknik yang tersedia untuk mengatasi hal ini, seperti pengambilan sampel dari kumpulan data berulang kali berkali-kali? Apa saja metode yang baik untuk menangani kasus-kasus seperti itu? nnn

Iltl
sumber
3
Mengapa Anda ingin menggunakan proses Gaussian dan bukan sesuatu yang ditakdirkan untuk berurusan dengan data besar?
Tim

Jawaban:

7

Ada berbagai pendekatan untuk skala dokter ke dataset besar, misalnya:

Pendekatan Peringkat Rendah : ini berusaha untuk membuat pendekatan peringkat rendah ke matriks kovarians. Paling terkenal mungkin adalah metode Nystroms yang memproyeksikan data ke subset poin. Membangun dari itu FITC dan PITC dikembangkan yang menggunakan poin pseudo daripada poin yang diamati. Ini termasuk dalam misalnya perpustakaan python GPy. Pendekatan lain termasuk fitur Fourier acak.

Matriks H : ini menggunakan penataan hierarkis dari matriks kovarians dan menerapkan pendekatan peringkat rendah untuk setiap submatrix struktur. Ini kurang umum diterapkan di perpustakaan populer.

Metode Kronecker : ini menggunakan produk Kronecker dari matriks kovarian untuk mempercepat komputasi melalui hambatan kepala.

Mesin Komite Bayesian : Ini melibatkan pemisahan data Anda menjadi himpunan bagian dan pemodelan masing-masing dengan dokter umum. Kemudian Anda dapat menggabungkan prediksi menggunakan kombinasi Bayesian yang optimal dari output. Ini cukup mudah untuk diterapkan sendiri dan cepat tetapi jenis kerusakan kernel Anda adalah Anda peduli tentang itu - makalah Mark Deisenroth harus cukup mudah untuk diikuti di sini .

j__
sumber
5

Biasanya, yang bisa Anda lakukan adalah melatih Proses Gaussian pada subsamples dari dataset Anda (mengantongi). Bagging diimplementasikan dalam sk learning dan dapat digunakan dengan mudah. Lihat per contoh dokumentasi .

Memanggil jumlah pengamatan, jumlah tas yang Anda gunakan dan jumlah poin per kantong, ini memungkinkan untuk mengubah waktu pelatihan dari menjadi . Oleh karena itu, dengan tas kecil tetapi menggunakan semua data, Anda dapat mencapai waktu pelatihan yang jauh lebih rendah. Sayangnya, ini sering mengurangi kinerja model.n b a g s n p O ( n 3 ) O ( n b a g s n 3 p )nnbagsnpO(n3)O(nbagsnp3)

Terlepas dari teknik mengantongi, ada beberapa penelitian aktif tentang membuat Proses Gaussian Regresi terukur. Artikel Interpolasi Kernel untuk Proses Gaussian Terstruktur Skalabel (KISS-GP) mengusulkan untuk mengurangi waktu pelatihan menjadi dan dilengkapi dengan kode matlab.O(n)

RUser4512
sumber
5

Kamu bertanya:

dalam kasus di mana 𝑛 adalah 10 dari jutaan apakah regresi proses Gaussian masih berfungsi?

Tidak dalam arti standar membangun dan membalikkan matriks besar. Anda memiliki dua opsi: 1) memilih model yang berbeda atau 2) membuat perkiraan.

1) Beberapa model berbasis GP dapat ditingkatkan ke set data yang sangat besar, seperti mesin komite Bayesian yang terhubung dalam jawaban di atas. Saya menemukan pendekatan ini agak tidak memuaskan: ada alasan bagus untuk memilih model GP, dan jika kita ingin beralih ke model yang lebih komputabel kita mungkin tidak mempertahankan sifat-sifat model asli. Variasi prediktif BCM sangat bergantung pada pemisahan data, misalnya.

2) Pendekatan 'klasik' untuk aproksimasi dalam dokter adalah untuk mendekati matriks kernel. Ada ulasan yang bagus tentang metode-metode ini di sini: http://www.jmlr.org/papers/volume6/quinonero-candela05a/quinonero-candela05a.pdf . Faktanya, kita biasanya dapat melihat pendekatan matriks ini sebagai pendekatan model, dan menggabungkannya dengan mesin komite Bayesian: mereka berubah menjadi model dan sulit untuk memahami kapan perubahan itu mungkin bersifat patologis. Inilah ulasan super: https://papers.nips.cc/paper/6477-understanding-probabilistic-sparse-gaussian-process-approximations.pdf

Cara saya menganjurkan untuk membuat perkiraan untuk dokter besar adalah untuk menghindari mendekati matriks kernel atau model, dan memperkirakan distribusi posterior menggunakan inferensi variasional. Banyak perhitungan yang tampak seperti aproksimasi matriks 'peringkat rendah', tetapi ada satu sifat yang sangat diinginkan: semakin banyak perhitungan yang Anda gunakan (semakin banyak "peringkat") semakin dekat aproksimasi ke posterior sejati, sebagaimana diukur oleh KL perbedaan.

Artikel-artikel ini adalah titik awal yang baik: http://proceedings.mlr.press/v5/titsias09a/titsias09a.pdf https://arxiv.org/pdf/1309.6835

Saya menulis artikel yang lebih panjang tentang argumen yang sama di sini: https://www.prowler.io/blog/sparse-gps-approximate-the-posterior-not-the-model

Dalam praktiknya, pendekatan variasional bekerja sangat baik dalam banyak kasus. Saya sudah menggunakannya secara luas dalam aplikasi nyata. Dan baru-baru ini ada beberapa teori yang sangat baik untuk mendukung mengapa itu harus berhasil ( https://arxiv.org/abs/1903.03571 ).

Steker terakhir: inferensi variasional dalam dokter diterapkan di gpflow ( https://github.com/GPflow/GPflow )

James Hensman
sumber
1
Sekadar catatan jika seseorang menemukan ini dan tidak tahu, James akan menjadi salah satu otoritas di lapangan bersama dengan Mike Osborne, Neill Lawrence dan sebagainya - agak asyik dia menjawab T&J di SE
j__