регресія гауссових процесів для великих наборів даних


10

Я дізнався про регресію процесу Гаусса з онлайн-відео та конспектів лекцій. Я розумію, що якщо у нас є набір даних з точок, то ми припускаємо, що дані вибираються з -вимірного багатовимірного гаусса. Так що моє запитання в тому випадку , коли є 10 - х мільйонів робить гауссовский процес регресії по- , як і раніше працює? Чи не буде матриця ядра величезною, що робить процес абсолютно неефективним? Якщо так, чи існують методи для вирішення цього питання, як вибірки з набору даних неодноразово багато разів? Які є хороші методи розгляду подібних випадків? ннн


3
Чому ви хочете використовувати Гауссовий процес, а не те, що призначене для роботи з великими даними?
Тім

Відповіді:


7

Існує широкий спектр підходів до масштабування ГП до великих наборів даних, наприклад:

Підходи з низьким рангом: вони намагаються створити наближення низького рангу до матриці коваріації. Найвідомішим, мабуть, є метод Nystroms, який проектує дані на підмножину точок. На основі цього були розроблені FITC та PITC, які використовують псевдоточки, а не спостережувані бали. Вони включені, наприклад, у бібліотеку пітонів GPy. Інші підходи включають випадкові функції Фур'є.

Н-матриці : вони використовують ієрархічну структурування коваріаційної матриці і застосовують наближення низького рангу до кожної підматриці структур. Це рідше реалізується в популярних бібліотеках.

Методи Kronecker : вони використовують продукти Kronecker коваріаційних матриць, щоб прискорити обчислення над вузьким місцем голови.

Машини Байєсівського комітету : це включає поділ ваших даних на підмножини та моделювання кожної з GP. Тоді ви можете комбінувати прогнози, використовуючи оптимальне байєсівське поєднання результатів. Це досить просто реалізувати самостійно, і це швидко, але вид зламає ваше ядро ​​- це ви дбаєте про це - папір Марка Дейзенрота повинен бути досить легким, щоб дотримуватися тут .


5

Зазвичай те, що ти можеш зробити, - це тренувати Гауссові процеси на підпроборах вашого набору даних (складання пакетів). Баггінг реалізований в sk learn і може бути легко використаний. Див. Приклад документації .

Викликаючи кількість спостережень, bag кількість мішків, які ви використовуєте, і кількість балів за мішок, це дозволяє змінити час навчання з на . Тому, використовуючи невеликі сумки, але використовуючи всі дані, ви можете досягти значно нижчого часу на тренування. На жаль, це часто знижує продуктивність моделі.ннбагснpО(н3)О(нбагснp3)

Окрім методів розфасовки, існує ряд активних досліджень щодо збільшення масштабів масштабу регресії Гаусса. У статті Інтерполяція ядра для масштабованих структурованих гауссових процесів (KISS-GP) пропонує скоротити час навчання до і поставляється з кодом matlab.О(н)


5

Ти запитав:

у випадку, коли 𝑛 - 10 мільйонів, чи все ще працює гауссова процесова регресія?

Не в стандартному розумінні побудови та перетворення великої матриці. У вас є два варіанти: 1) вибрати іншу модель або 2) зробити наближення.

1) Деякі моделі на основі GP можна масштабувати до дуже великих наборів даних, наприклад, машина Байєсівського комітету, пов'язана у відповіді вище. Я вважаю цей підхід досить незадовільним: є вагомі причини для вибору моделі GP, і якщо ми переходимо до більш обчислюваної моделі, ми можемо не зберегти властивості вихідної моделі. Прогнозні дисперсії BCM сильно залежать, наприклад, від розбиття даних.

2) "Класичний" підхід до наближення в GP - це наближення матриці ядра. Тут є хороший огляд таких методів: http://www.jmlr.org/papers/volume6/quinonero-candela05a/quinonero-candela05a.pdf . Насправді ми зазвичай можемо бачити ці матричні наближення як наближення до моделей, а також зводити їх за допомогою апарату Байєсівського комітету: вони змінюють модель, і важко зрозуміти, коли ці зміни можуть бути патологічними. Ось чудовий огляд: https://papers.nips.cc/paper/6477-understanding-probabilistic-sparse-gaussian-process-approximations.pdf

Те, як я виступаю за те, щоб зробити наближення для великих GP, - це уникати наближення матриці ядра чи моделі та апроксимувати задній розподіл, використовуючи варіаційні умовиводи. Велика частина обчислень схожа на наближення матриці "низького рангу", але є одна дуже бажана властивість: чим більше ви використовуєте обчислень (тим більше "рангів"), тим наближення ближче до справжнього заднього, виміряне KL розбіжність.

Ці статті є гарною відправною точкою: http://proceedings.mlr.press/v5/titsias09a/titsias09a.pdf https://arxiv.org/pdf/1309.6835

Я написав довшу статтю про той же аргумент тут: https://www.prowler.io/blog/sparse-gps-approximate-the-posterior-not-the-model

На практиці варіаційне наближення працює дуже добре у багатьох випадках. Я широко його використовував у реальних програмах. І останнім часом існує чудова теорія, яка підтверджує, чому це має працювати ( https://arxiv.org/abs/1903.03571 ).

Заключний модуль: варіаційний висновок в GP-програмах реалізований у gpflow ( https://github.com/GPflow/GPflow )


1
Просто для запису , якщо хто - то приходить через це і не знає, Джеймс був би один з авторитетів в області поряд з Майком Осборном, Neill Лоуренс і так далі - свого роду прохолоди він відповідає на Q & A на SE
j__
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.