2009-12-23 14 views
13

Jak duży system jest uzasadniony, aby spróbować regresji liniowej?Co to jest BigO regresji liniowej?

Konkretnie: Posiadam system z ~ 300 000 punktów pomiarowych i ~ 1200 liniowymi terminami. Czy to możliwe obliczeniowo?

+1

Który algorytm? Najmniej kwadraty? –

+0

Tak, najmniejszych kwadratów. Nie wiedziałem, że jest jakakolwiek inna. – BCS

Odpowiedz

5

można wyrazić jako równanie macierzowe:

alt text

gdzie macierz alt text jest 300K 1200 wierszy i kolumn, wektor współczynnika alt text jest 1200x1, a RHS wektor alt text jest 1200x1.

Jeśli pomnożysz obie strony przez transponowanie macierzy alt text, masz układ równań dla nieznanych, który wynosi 1200x1200. Możesz użyć dekompozycji LU lub dowolnego innego algorytmu, który chcesz rozwiązać dla współczynników. (To właśnie robi najmniejsze kwadraty).

Tak więc zachowanie Big-O jest podobne do O (m m n), gdzie m = 300K i n = 1200. Miałbyś odpowiedzialność za transpozycję, mnożenie macierzy, dekompozycja LU i zastępowanie w przód, aby uzyskać współczynniki.

+1

Tak więc, jeśli czytam to poprawnie (i IIRC), generowanie A będzie O (n * m) ~ = O (m^2) (w moim przypadku 'n/m = C') i mnożenie będzie być O (n * n * m) ~ = O (n^3), a inwersja będzie O (n^3) Teraz tylko, aby obliczyć stały termin. – BCS

5

Regresja liniowa jest obliczana jako (X'X)^- 1 X'Y.

Jeżeli X jest (nxk) matrix

  1. (X”X) wykonuje O (N * K^2) razem i tworzy (kxk) matrycę

  2. inwersja macierzy grupy (kxk) matrycy odbywa o (K^3) czas

  3. (X”Y) wykonuje o (n * K^2) razem i tworzy (kxk) matrycę

  4. końcowe mnożenie macierzy z dwóch (k x k) macierzy zabierają O (k^3) czas

Tak więc czas działania Big-O wynosi O (k^2 * (n + k)).

Zobacz także: http://en.wikipedia.org/wiki/Computational_complexity_of_mathematical_operations#Matrix_algebra

Jeśli masz fantazyjne wygląda można uzyskać czas w dół do O (k^2 * (n + k^0,376)) z algorytmem Coppersmith-Winograda.

+0

Algorytm Coppersmith-Winograd nie jest praktycznie użyteczny, ponieważ współczynnik jest tak duży, że wymaga tak dużej matrycy, aby zacząć dostrzegać korzyści z asymptotycznej efektywności, jest nierealistyczny: https://en.m.wikipedia.org/wiki/ Coppersmith-Winograd_algorithm – JStrahl

0

regresji liniowej zamkniętej formie modelu jest obliczana jak następuje: pochodną

RSS (W) = -2^t (r-HW)

Tak więc, rozwiązania dla

-2H^t (HW) y = 0

Następnie wartość W jest

W = (H^T H)^- 1 H^2 y

gdzie: W: jest wektorem o oczekiwanej masie H: jest cechy matrycy N * D, gdzie N oznacza liczbę obserwacji, a d jest liczbą cech y: czy wartość rzeczywista

następnie complexit y

H^T H jest nD^2

Złożoność transponowania D^3

więc Złożoność

(H^t H)^-1 is n * D^2 + D^3

+0

Czy to nie tylko złożoność tej implementacji? Czy istnieje dowód na to, że jest to najszybsza implementacja? – BCS