Ефективна онлайн-лінійна регресія


53

Я аналізую деякі дані там, де мені хотілося б виконати звичайну лінійну регресію, однак це неможливо, оскільки я маю справу з он-лайн налаштуваннями з безперервним потоком вхідних даних (який швидко стане занадто великим для пам’яті) і потрібно для оновлення оцінок параметрів під час споживання. тобто я не можу просто завантажити все це в пам'ять і виконувати лінійну регресію для всього набору даних.

Я припускаю просту лінійну багатоваріантну регресійну модель, тобто

у=Ах+б+е

Який найкращий алгоритм для створення безперервно оновлюваної оцінки параметрів лінійної регресії і b ?Аб

Ідеально:

  • Мені б хотілося, щоб алгоритм, що становить найбільше складності простору та часу за оновлення, де N - розмірність незалежної змінної ( x ), а M - розмірність залежної змінної ( y ).О(NМ)NхМу
  • Я хотів би мати можливість вказати якийсь параметр, щоб визначити, скільки параметрів оновлюється кожним новим зразком, наприклад, 0,000001 означатиме, що наступний зразок забезпечить одну мільйонну частину оцінки параметра. Це дало б якесь експоненціальне розпад ефекту зразків у далекому минулому.

2
Знайдіть (1) Гнучка лінійна регресія, (2) Фільтри Кальмана.
Jase

Відповіді:


31

Маіндональд описує послідовний метод, заснований на обертаннях Гвенса . (Обертання Гэвенса - це ортогональне перетворення двох векторів, які нульово виводять заданий запис в одному з векторів.) На попередньому кроці ви розклали проектну матрицю на трикутну матрицю T через ортогональне перетворення Q так, що Q X = ( T , 0 ) . (Отримати результати регресії за допомогою трикутної матриці швидко і легко.) Приєднавши новий рядок v нижче X , ви ефективно продовжуєте ( T , 0 )ХТQQХ=(Т,0)'vХ Через нульовий рядок, також, скажімо, t . Завдання полягає в тому, щоб зняти нуль з цього рядка, зберігаючи записи в положеннідіагоналі T. Послідовність обертів Гівна робить це: обертання першим рядом T нулів першого елемента t ; потім обертання другим рядом Т нулів другим елементом тощо. Ефект полягає в тому, щоб попередньо помножити Q рядом обертів, що не змінює його ортогональності.(Т,0)'тТТтТQ

Коли матриця проекту має стовпчики (що має місце при регресуванні на p змінних плюс константа), кількість необхідних обертів не перевищує p + 1 і кожне обертання змінює два p + 1- вектори. Зберігання, необхідне для T, є O ( ( p + 1 ) 2 ) . Таким чином, цей алгоритм має обчислювальну вартість O ( ( p + 1 ) 2 ) як у часі, так і в просторі.p+1pp+1p+1ТО((p+1)2)О((p+1)2)

Подібний підхід дозволяє визначити вплив на регресію видалення рядка. Мендональд дає формули; так само з Бельслі, Ку і Валлійською . Таким чином, якщо ви шукаєте рухоме вікно для регресії, ви можете зберегти дані для цього вікна в круговому буфері, примикаючи до нового даного і викидаючи старе з кожним оновленням. Це подвоює час оновлення та вимагає додаткового зберігання для вікна шириною k . Здається, що 1 / k буде аналогом параметра впливу.О(к(p+1))к1/к

Що стосується експоненціального розпаду, я думаю (спекулятивно), що ви можете адаптувати цей підхід до найменш зважених квадратів, надаючи кожній новій величині вагу більше 1. Не повинно бути необхідності підтримувати буфер попередніх значень або видаляти будь-які старі дані.

Список літератури

JH Maindonald, Статистичні обчислення. J. Wiley & Sons, 1984. Глава 4.

DA Belsley, E. Kuh, RE Welsch, Регресійна діагностика: виявлення впливових даних та джерел колінеарності. J. Wiley & Sons, 1980.


1
Чи метод, описаний Маїндональдом, пов'язаний із алгоритмом Джентльмена чи таким же? jstor.org/stable/2347147
OneStop

6
У цьому випадку див. Також розширення Alan Miller jstor.org/stable/2347583 . Архів його Fortran сайту програмного забезпечення тепер в jblevins.org/mirror/amiller
OneStop

5
Явний алгоритм з’являється внизу сторінки. 4 із saba.kntu.ac.ir/eecd/people/aliyari/NN%20%20files/rls.pdf . Про це можна дізнатись за допомогою "рекурсивних найменших квадратів" в Google Це не виглядає як поліпшення підходу Джентльмена / Мендональда, але принаймні воно чітко і чітко описано.
whuber

2
Останнє посилання виглядає як метод, який я збирався запропонувати. Ідентичність матриці, яку вони використовують, відома в інших місцях як особистість Шермана - Моррісона - Вудбері. Він також досить чисельно ефективний для здійснення, але може бути не таким стабільним, як обертання Гівнса.
кардинал

2
@suncoolsu Хм ... Книга Маіндональда була нещодавно опублікована, коли я почав її використовувати :-).
whuber

8

Я думаю, що переробка вашої лінійної регресійної моделі на модель простору стану дасть вам те, що ви хочете. Якщо ви використовуєте R, ви можете скористатися пакетом dlm і ознайомитись із супутниковою книгою Petris et al.


можливо я розгублений, але це, мабуть, стосується моделі часових рядів? моя модель насправді простіша тим, що зразки не є часовими рядами (фактично вони є незалежними (x-> y) зразками, вони просто накопичуються великими обсягами з часом)
mikera

1
Так, у загальному випадку це використовується для часових рядів з незалежними спостереженнями; але ви завжди можете припустити взаємозв'язок між послідовними спостереженнями, що викликає особливий інтерес для вас.
Ф. Тузелл

7

Ви завжди можете просто виконати градієнтний спуск по сумі квадратів стоять WRT параметрів вашої моделі W . Просто візьміть його градієнт, але не переходьте на рішення закритої форми, а лише на напрямок пошуку.ЕW

Нехай є вартість i - ой навчальної вибірки , враховуючи параметри W . Оновлення для j-го параметра буде потімЕ(i;W)W

WjWj+αЕ(i;W)Wj

де - ступінчаста швидкість, яку слід вибирати за допомогою перехресної перевірки або хорошої міри.α

Це дуже ефективно і звичайно навчають нейронні мережі. Ви можете паралельно обробляти навіть багато зразків (скажімо, 100 чи більше).

Звичайно, можна застосувати більш складні алгоритми оптимізації (імпульс, спряжений градієнт, ...).


Схоже на цей документ eprints.pascal-network.org/archive/00002147/01/… . Він реалізований у проекті з відкритим кодом під назвою jubatus.
сахарин

3

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

L(β)=(у-Хβ)т(у-Хβ)
Градієнт стає
L(β)=-2Хт(у-Хβ)
І гессіан:
2L(β)=ХтХ

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

Lнеш(β)=-2хнеш(унеш-хнешТβ)
і це стане вашим загальним градієнтом (оскільки градієнт із існуючих даних дорівнював нулю). Гессіан для нового пункту даних:

2Lнеш=хнешхнешТ
.

Додайте це до наведеного вище старого гессіана. Потім просто зробіть крок Ньютона Рафсона.

βнеш=βолг+(2L)-1Lнеш

І ви закінчили.


1
Lнешp,О(p3)

О(p3)p(Я-А)-1=Я+А+А2+

2

Стандартний примірник з найменшим квадратом дає коефіцієнти регресії

β=(ХТХ)-1ХТY

β

ХТХХТYМ2+Мβ

Наприклад, якщо M = 1, то один коефіцієнт дорівнює

β=i=1Nхiуii=1Nхi2

тому кожен раз, коли ви отримуєте нову точку даних, ви оновлюєте обидві суми та обчислюєте коефіцієнт, і ви отримуєте оновлений коефіцієнт.

ХТХХТY(1-λ)λ


2
β

ХТХХТY

6
Х'Х

1
@whuber До речі, швидкий онлайн-спосіб оцінити для мінливої ​​матриці C і вектора x заданий Schraudolph, NN (2002). Матричні векторні вироби швидкої кривизни для градієнта спуску другого порядку. По суті, ви дозволяєте z t + 1С-1хСхzт+1=zт+х-СzтzС-1хт

1

Проблема легше вирішується, коли ви трохи переписуєте речі:

Y = y

X = [x, 1]

тоді

Y = A * X

Одночасне рішення знаходимо шляхом обчислення

V = X '* X

і

C = X '* Y

зауважте, що V повинен мати розмір N-на-N, а C - розмір N-на-M. Параметри, які ви шукаєте, потім задаються:

A = inv (V) * C

Оскільки V і C обчислюються шляхом підсумовування даних, ви можете обчислити A на кожному новому зразку. Однак це має часову складність O (N ^ 3).

Оскільки V є квадратним і напіввизначеним позитивним, розклад LU існує, що робить інвертування V числовим чином більш стійким. Існують алгоритми для виконання оновлень рангу-1 до інверсії матриці. Знайдіть їх, і ви отримаєте ефективну реалізацію, яку шукаєте.

Алгоритми оновлення рангу-1 можна знайти в "Матричних обчисленнях" Голуба та Ван Кредита. Це важкий матеріал, але він має вичерпний огляд таких алгоритмів.

Примітка. Наведений вище метод дає оцінку на найменшому квадраті на кожному кроці. Ви можете легко додавати ваги до оновлень на X і Y. Коли значення X і Y зростають занадто великими, їх можна масштабувати одним скаляром, не впливаючи на результат.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.