Quale algoritmo viene utilizzato nella regressione lineare?


42

Di solito sento parlare di "minimi quadrati ordinari". È l'algoritmo più utilizzato per la regressione lineare? Ci sono motivi per usarne uno diverso?


@hxd, escludendo qualsiasi struttura speciale nella matrice di progettazione, questi sono tutti algoritmi , che differiscono solo per il fattore costante. L'approccio decomposizionale è una buona abitudine ereditata dalla tradizione dell'algebra lineare numerica. O(mn2)
JM non è uno statistico il

@hxd, ed è per questo che la mia risposta è stata fatta su misura per essere un'esposizione degli algoritmi coinvolti. Se hai domande non coperte da questa discussione, considera di porre una nuova domanda.
JM non è uno statistico il

Risposte:


32

Per quanto riguarda la domanda nel titolo, qual è l'algoritmo utilizzato:

In una prospettiva di algebra lineare, l'algoritmo di regressione lineare è il modo di risolvere un sistema lineare con più equazioni che incognite. Nella maggior parte dei casi non esiste una soluzione a questo problema. E questo perché il vettore non appartiene allo spazio colonna di , .Ax=bbAC(A)

È best straight linequello che rende l'errore complessivo più piccolo possibile. Ed è conveniente pensare che sia piccolo per essere la lunghezza quadrata, , perché non è negativo, ed è uguale a 0 solo quando b \ in C (\ mathbf {A}) .e=Axbe2bC(A)

La proiezione (ortogonale) del vettore sul punto più vicino nello spazio della colonna di fornisce il vettore che risolve il sistema (i suoi componenti giacciono sulla migliore linea retta) con il minimo errore.bAb

ATAx^=ATbx^=(ATA)1ATb

e il vettore proiettato è dato da:b

b=Ax^=A(ATA)1ATb

Forse il metodo dei minimi quadrati non viene utilizzato esclusivamente perché squaring compensa eccessivamente i valori anomali.

Lasciami fare un semplice esempio in R, che risolve il problema di regressione usando questo algoritmo:

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])

Ottengo un errore could not find inv?!
hhh,


5
C'è un motivo per usare inv da fBasics quando è solo un sinonimo di risoluzione? Non sarebbe meglio per la risposta non richiedere una dipendenza da pacchetti esterni se non fosse necessario?
Dason,

@Gorge George Adoro la risposta chiara, tuttavia, penso che la domanda originale fosse porre algoritmi e QR è solo uno di questi. Che ne dici di LU, SVD, decomposizione di Cholesky? Inoltre, in R, il metodo per lmè QR, ci sono ragioni per questo, potresti spiegare perché?
Haitao Du,

@GeorgeDontas Nota che potrebbe essere che non sia invertibile. Come spiegato in questa risposta , un modo per gestirlo è rimuovere da colonne che sono combinazioni lineari di altre colonne. ATAA
Oren Milman,

70

Per rispondere alla lettera della domanda, i "minimi quadrati ordinari" non sono un algoritmo; piuttosto è un tipo di problema nell'algebra lineare computazionale, di cui la regressione lineare ne è un esempio. Di solito si hanno dati e una funzione provvisoria ("modello") per adattarsi ai dati, della forma . I sono chiamati "funzioni di base" e possono essere qualsiasi cosa, dai monomi alle funzioni trigonometriche (ad esempio , ) e funzioni esponenziali ( ). Il termine "lineare" in "regressione lineare" qui non si riferisce alle funzioni di base,{(x1,y1),,(xm,ym)}f(x)=c1f1(x)++cnfn(x)fj(x)xjsin(jx)cos(jx)exp(jx)cj, in quanto prendere la derivata parziale del modello rispetto a uno qualsiasi dei ti dà il fattore moltiplicando ; cioè .cjcjfj(x)

Si ha ora un matrice rettangolare ( "matrice motivo") che (di solito) ha più righe che colonne e ciascuna voce è la forma , essendo l'indice di riga e è il indice di colonna. OLS ora ha il compito di trovare il vettore che minimizza la quantità (in notazione matriciale, ; qui, è generalmente chiamato "vettore di risposta").m×nAfj(xi)ijc=(c1cn)j=1m(yjf(xj))2Acy2y=(y1ym)

Esistono almeno tre metodi usati nella pratica per calcolare le soluzioni dei minimi quadrati: le equazioni normali, la decomposizione QR e la decomposizione a valore singolare. In breve, sono modi per trasformare la matrice in un prodotto di matrici che possono essere facilmente manipolate per risolvere il vettore .Ac

George ha già mostrato il metodo delle equazioni normali nella sua risposta; si risolve semplicemente l' insieme di equazioni linearin×n

AAc=Ay

per . A causa del fatto che la matrice è simmetrica positiva (semi) definita, il solito metodo usato per questo è la decomposizione di Cholesky, che fattori nella forma , con una matrice triangolare inferiore. Il problema con questo approccio, nonostante il vantaggio di poter comprimere la matrice di design in una matrice (solitamente) molto più piccola , è che questa operazione è soggetta alla perdita di cifre significative (questo ha qualcosa da fare con il "numero di condizione" della matrice del disegno).cAAAAGGGm×nn×n

Un modo leggermente migliore è la decomposizione QR, che funziona direttamente con la matrice di progettazione. Considera come , dove è una matrice ortogonale (moltiplicando tale matrice con il suo recepimento si ottiene una matrice di identità) e è triangolare superiore. viene successivamente calcolato come . Per motivi che non entrerò (vedi solo un testo di algebra lineare numerica decente, come questo ), questo ha proprietà numeriche migliori rispetto al metodo delle equazioni normali.AA=QRQRcR1Qy

Una variazione nell'uso della decomposizione QR è il metodo delle equazioni seminormali . In breve, se si ha la decomposizione , il sistema lineare da risolvere prende la formaA=QR

RRc=Ay

In effetti, si sta usando la decomposizione QR per formare il triangolo Cholesky di in questo approccio. Ciò è utile nel caso in cui sia scarso e la memorizzazione e / o la formazione esplicite di (o una sua versione fattorizzata) siano indesiderate o poco pratiche.AAAQ

Infine, il modo più costoso, ma più sicuro, per risolvere OLS è la decomposizione a valore singolare (SVD). Questa volta, viene considerato come , dove e sono entrambi ortogonali eAA=UΣVUVΣè una matrice diagonale, le cui voci diagonali sono chiamate "valori singolari". Il potere di questa decomposizione risiede nell'abilità diagnostica concessa dai valori singolari, nel senso che se uno vede uno o più valori singolari minuscoli, è probabile che tu abbia scelto una base non completamente indipendente, richiedendo così una riformulazione di il tuo modello. (Il "numero di condizione" menzionato in precedenza è in effetti correlato al rapporto tra il più grande valore singolare e il più piccolo; il rapporto ovviamente diventa enorme (e la matrice è quindi mal condizionata) se il valore singolare più piccolo è "piccolo" .)

Questo è semplicemente uno schizzo di questi tre algoritmi; qualsiasi buon libro sulle statistiche computazionali e l'algebra lineare numerica dovrebbe essere in grado di darti dettagli più pertinenti.


3
Bella spiegazione!
Mike Spivey,

Come si calcola R^{-1} Q^T yse A non è quadrato? Rilasci le righe zero in R?
Bhan,

1
@bhan, sto assumendo la variante "economica" (o "sottile") della decomposizione QR, dove è quadrata e ha le stesse dimensioni della matrice di progettazione. Qualcosa che devi fare: cercare la differenza tra "QR completo" e "QR sottile". RQ
JM non è uno statistico

@JM qualche consiglio sul "buon libro di statistica computazionale e algebra lineare numerica"? voglio davvero saperne di più.
Haitao Du,

1
@hxd, in cima alla mia testa: Monahan per le statistiche computazionali e Golub / van Loan per l'algebra lineare numerica.
JM non è uno statistico il


4

È facile confondersi tra definizioni e terminologia. Entrambi i termini sono usati, a volte in modo intercambiabile. Una rapida ricerca su Wikipedia dovrebbe aiutare:

Ordinary Least Squares (OLS) è un metodo utilizzato per adattarsi ai modelli di regressione lineare. A causa della coerenza e dell'efficienza dimostrabili (secondo ipotesi supplementari) del metodo OLS, è l'approccio dominante. Vedi gli articoli per ulteriori contatti.


Bene, ecco perché considero OLS un "algoritmo" usato nella regressione lineare ...
Belmont,

3
I minimi quadrati ordinari sono uno stimatore. Esistono vari algoritmi per calcolare la stima: di solito viene utilizzata una sorta di decomposizione della matrice ortogonale, come QR. Vedi en.wikipedia.org/wiki/…
Simon Byrne,

4

Tendo a pensare ai "minimi quadrati" come un criterio per definire la migliore linea di regressione (cioè quella che rende la somma dei "quadrati" residui "meno") e "l'algoritmo" in questo contesto come l'insieme di passaggi utilizzati per determinare i coefficienti di regressione che soddisfano tale criterio. Questa distinzione suggerisce che è possibile avere algoritmi diversi che soddisferebbero lo stesso criterio.

Sarei curioso di sapere se gli altri fanno questa distinzione e quale terminologia usano.


Per algoritmo intendo approssimativamente l'implementazione del software utilizzata per adattare una linea per modellare la media di una distribuzione.
Belmont,

3

Un vecchio libro, eppure uno in cui mi trovo più volte, è

Lawson, CL e Hanson, RJ Solving Least Squares Problems , Prentice-Hall, 1974.

Contiene una discussione dettagliata e molto leggibile di alcuni degli algoritmi citati nelle risposte precedenti. Potresti volerlo guardare.


1
Se leggi questo vecchio libro, dovresti anche esaminare i metodi numerici di Åke Björck per i problemi dei minimi quadrati , che ha cose non discusse in Lawson / Hanson. Le routine incluse nel libro Lawson / Hanson sono disponibili presso Netlib .
JM non è uno statistico il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.