Який алгоритм використовується в лінійній регресії?


42

Я зазвичай чую про "звичайні найменші квадрати". Це найпоширеніший алгоритм, що використовується для лінійної регресії? Чи є причини використовувати інший?


@hxd, забороняючи будь-яку спеціальну структуру в проектній матриці, це все алгоритми O(mn2) , що відрізняються лише постійним коефіцієнтом. Декомпозиційний підхід - це добра звичка, успадкована від традиції чисельної лінійної алгебри.
JM не є статистиком

@hxd, і тому моя відповідь була розроблена як експозиція алгоритмів. Якщо у вас є запитання, які не охоплені цією темою, розглянути питання про нове запитання.
JM не є статистиком

Відповіді:


32

Щодо питання в заголовку, про те, що використовується алгоритм:

У перспективі лінійної алгебри алгоритм лінійної регресії є способом розв’язання лінійної системи Ax=b з більшою кількістю рівнянь, ніж невідомих. У більшості випадків вирішення цієї проблеми немає. І це тому, що вектор b не належить до простору стовпців A , C(A) .

best straight linee=Axbe2bC(A)

Проектування (ортогонально) вектора до найближчої точки в просторі стовпців дає вектору який розв’язує систему (її компоненти лежать на найкращій прямій лінії) з мінімальною помилкою.bAb

ATAx^=ATbx^=(ATA)1ATb

і проектований вектор b задається:

b=Ax^=A(ATA)1ATb

Мабуть, метод найменших квадратів використовується не виключно, оскільки це squaring надмірно компенсує людей, що вижили.

Дозвольте навести простий приклад в R, який вирішує проблему регресії за допомогою цього алгоритму:

library(fBasics)

reg.data <- read.table(textConnection("
   b      x
  12      0
  10      1
   8      2
  11      3
   6      4
   7      5
   2      6
   3      7
   3      8 "), header = T)

attach(reg.data)

A <- model.matrix(b~x)

# intercept and slope
inv(t(A) %*% A) %*% t(A) %*% b

# fitted values - the projected vector b in the C(A)
A %*% inv(t(A) %*%A ) %*% t(A) %*% b

# The projection is easier if the orthogonal matrix Q is used, 
# because t(Q)%*%Q = I
Q <- qr.Q(qr(A))
R <- qr.R(qr(A))

# intercept and slope 
best.line <- inv(R) %*% t(Q) %*% b

# fitted values 
Q %*% t(Q) %*% b

plot(x,b,pch=16)
abline(best.line[1],best.line[2])

Я отримую помилку could not find inv?!
hhh


5
Чи є причина використання inv із fBasics, коли це просто синонім рішення? Чи не було б краще, щоб відповідь не вимагала залежності від зовнішніх пакунків, якщо вона не потрібна?
Дасон

@George Я люблю чітку відповідь. Однак, я думаю, що в оригінальному запитанні було задано алгоритми, а QR - лише один із них. Як щодо розпаду LU, SVD, Чолеського? Крім того, в R метод для lmQR - це причини, для цього ви можете пояснити, чому?
Haitao Du

@GeorgeDontas Зауважте, що може бути, що не є зворотним. Як пояснено у цій відповіді , одним із способів вирішити це є видалення зі стовпців які є лінійними комбінаціями інших стовпців. ATAA
Орен Мільман

70

Щоб відповісти на лист запитання, «звичайні найменші квадрати» - це не алгоритм; скоріше це тип задачі в обчислювальній лінійній алгебрі, однією з яких є лінійна регресія. Зазвичай в них є дані та орієнтовна функція ("модель"), щоб відповідати даним, форми . називаються "базисними функціями" і може бути що завгодно , від одночленним для тригонометричних функцій (наприклад , ) і експоненційної функції ( ). Термін "лінійний" в "лінійній регресії" тут не відноситься до базових функцій,{(x1,y1),,(xm,ym)}f(x)=c1f1(x)++cnfn(x)fj(x)xjsin(jx)cos(jx)exp(jx)cj, зважаючи на те, що отримання часткової похідної моделі відносно будь-якого дає коефіцієнт, що помножує ; тобто .cjcjfj(x)

В даний час є прямокутна матриця ("матриця дизайну"), яка (як правило) має більше рядків, ніж стовпці, і кожен запис має форму , - індекс рядка, а - індекс стовпця Тепер OLS - це завдання знайти вектор який мінімізує кількість (у матричному позначенні ; тут, зазвичай називають "вектором відповіді").m×nAfj(xi)ijc=(c1cn)j=1m(yjf(xj))2Acy2y=(y1ym)

Існують щонайменше три методи, що застосовуються на практиці для обчислення розв'язків найменших квадратів: нормальні рівняння, QR-розкладання та сингулярне розкладання значення. Якщо коротко, вони є способами перетворення матриці у добуток матриць, які легко маніпулюються для вирішення для вектора .Ac

Джордж уже показав у своїй відповіді метод нормальних рівнянь; один просто розв'язує набір лінійних рівняньn×n

AAc=Ay

для . Через те, що матриця є симетричною позитивною (напів) певною, звичайним методом для цього є декомпозиція Чолеського, котрий чинники у форму , з нижньою трикутною матрицею. Проблема такого підходу, незважаючи на перевагу того, що можна стиснути матрицю проектування матрицю (зазвичай) набагато меншу матрицю, полягає в тому, що ця операція схильна до втрати значних цифр (це має щось робити з "номером умови" проектної матриці).cAAAAGGGm×nn×n

Трохи кращий спосіб - це розкладання QR, яке безпосередньо працює з дизайнерською матрицею. Це фактори як , де є ортогональною матрицею (множення такої матриці з її транспозицією дає матрицю ідентичності) та - верхній трикутний. згодом обчислюється як . З причин, в які я не потрапляю (просто дивіться будь-який пристойний чисельний лінійний текст алгебри, як цей ), він має кращі числові властивості, ніж метод звичайних рівнянь.AA=QRQRcR1Qy

Однією з варіацій використання QR-розкладу є метод семінарних рівнянь . Коротко, якщо у вас є розкладання , лінійна система, яку потрібно розв’язати, приймає формуA=QR

RRc=Ay

Ефективно за допомогою QR-розкладу сформувати трикутник Чолеського у цьому підході. Це корисно у випадку, коли є рідким, а явне зберігання та / або формування (або його фактична версія) є небажаним або недоцільним.AAAQ

Нарешті, найдорожчим, але найбезпечнішим способом вирішення OLS є сингулярне розкладання значення (SVD). Цього разу розглядається як , де і обидва ортогональні , іAA=UΣVUVΣ- діагональна матриця, діагональні записи якої називаються "сингулярними значеннями". Сила цього розкладу полягає в діагностичній здатності, наданій вам сингулярними значеннями, в тому, що якщо хтось бачить одне або кілька крихітних сингулярних значень, то, ймовірно, ви обрали не зовсім незалежний базовий набір, що вимагає переформулювання ваша модель. (Згадане раніше "число умови" насправді пов'язане з відношенням найбільшого сингулярного значення до найменшого; відношення звичайно стає величезним (і матриця, таким чином, є поганою умовою), якщо найменше особливе значення "крихітне" .)

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


3
Приємне пояснення!
Майк Співі

Як обчислити, R^{-1} Q^T yякщо A не квадратний? Ви опускаєте нульові рядки в R?
бхан

1
@bhan, я припускаю, що "економічний" (або "тонкий") варіант розкладання QR, де - квадрат, а має ті ж розміри, що і матриця проектування. Щось вам потрібно зробити: шукайте різницю між "повним QR" та "тонким QR". RQ
JM не є статистиком

@JM якісь рекомендації щодо "хорошої книги обчислювальної статистики та числової лінійної алгебри"? дуже хочеться дізнатися більше.
Haitao Du

1
@hxd, вгорі голови: Монахан для обчислювальної статистики, а Голуб / Ван Кредит - для числової лінійної алгебри.
JM не є статистиком

6

Посилання wiki: Методи оцінки лінійної регресії дає досить вичерпний перелік методів оцінки, включаючи OLS та контексти, в яких використовуються альтернативні методи оцінки.


1
Не стосується питання (на сторінці навіть не згадується QR)
user603

4

Легко плутати між визначеннями та термінологією. Обидва терміни вживаються, іноді взаємозамінно. Швидкий пошук у Вікіпедії повинен допомогти:

Звичайні найменші квадрати (OLS) - метод, що використовується для підключення лінійних моделей регресії. Через демонстраційну послідовність та ефективність (за додатковими припущеннями) методу OLS є домінуючим підходом. Дивіться статті для подальших посилань.


Так, саме тому я вважаю OLS "алгоритмом", який використовується в лінійній регресії ...
Belmont,

3
Звичайні найменші квадрати - це оцінка. Існує різноманітність алгоритмів обчислення оцінки: зазвичай використовується якесь ортогональне розкладання матриці, наприклад QR. Дивіться en.wikipedia.org/wiki/…
Simon Byrne

4

Я схильний вважати "найменші квадрати" як критерій для визначення найкращої лінії регресії (тобто такої, яка робить суму "квадратних" залишків "найменшою" та "алгоритм" у цьому контексті як набір використовуваних етапів визначити коефіцієнти регресії, які відповідають цьому критерію. Ця відмінність говорить про те, що можливо існувати різні алгоритми, які задовольняли б одному критерію.

Мені буде цікаво дізнатись, чи роблять інші такі розрізнення та яку термінологію вони використовують.


Під алгоритмом я маю на увазі приблизно програмне забезпечення, яке використовується для встановлення рядка для моделювання середнього рівня розподілу.
Белмонт

3

Стара книга, ще одна, до якої я неодноразово звертаюся, є

Лоусон, CL та Гансон, RJ Розв’язування задач з найменшими квадратами , Prentice-Hall, 1974.

Він містить детальне та дуже читабельне обговорення деяких алгоритмів, про які згадували попередні відповіді. Ви можете поглянути на це.


1
Якщо ви читаєте цю стару книгу, вам також слід вивчити Чисельні методи Åke Björck для проблем з найменшими квадратами , в яких є речі, про які не йшлося в Лоусоні / Хансоні. Підпрограми, включені до книги Лоусона / Гансона, доступні у Netlib .
JM не є статистиком
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.