Thuật toán nào được sử dụng trong hồi quy tuyến tính?


42

Tôi thường nghe về "bình phương tối thiểu bình thường". Đó có phải là thuật toán được sử dụng rộng rãi nhất được sử dụng cho hồi quy tuyến tính? Có những lý do để sử dụng một cái khác nhau?


@hxd, chặn mọi cấu trúc đặc biệt trong ma trận thiết kế, đây đều là các thuật toán , chỉ khác nhau ở yếu tố không đổi. Cách tiếp cận phân tách là một thói quen tốt được kế thừa từ truyền thống của đại số tuyến tính số. O(mn2)
JM không phải là một nhà thống kê

@hxd, và đó là lý do tại sao câu trả lời của tôi được điều chỉnh để thể hiện các thuật toán liên quan. Nếu bạn có câu hỏi không nằm trong chủ đề này, hãy cân nhắc đặt câu hỏi mới.
JM không phải là một nhà thống kê

Câu trả lời:


32

Về câu hỏi trong tiêu đề, về thuật toán được sử dụng là gì:

Trong phối cảnh đại số tuyến tính, thuật toán hồi quy tuyến tính là cách để giải hệ phương trình tuyến tính với nhiều phương trình hơn ẩn số. Trong hầu hết các trường hợp không có giải pháp cho vấn đề này. Và điều này là do vectơ b không thuộc về không gian cột của A , C ( A ) .Ax=bbAC(A)

best straight linee=Axbe2bC(A)

Chiếu (trực giao) vectơ đến điểm gần nhất trong không gian cột của cung cấp cho vectơ giải quyết hệ thống (các thành phần của nó nằm trên đường thẳng tốt nhất) với sai số tối thiểu.Một b *bAb

ATAx^=ATbx^=(ATA)1ATb

và vectơ chiếu được cho bởi:b

b=Ax^=A(ATA)1ATb

Có lẽ phương pháp bình phương tối thiểu không chỉ được sử dụng bởi vì nó squaring bù đắp quá mức cho các ngoại lệ.

Hãy để tôi đưa ra một ví dụ đơn giản trong R, giải quyết vấn đề hồi quy bằng thuật toán này:

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

Tôi nhận được một lỗi could not find inv?!
hhh


5
Có một lý do để sử dụng inv từ fBasics khi nó chỉ là một từ đồng nghĩa để giải quyết? Câu trả lời sẽ không tốt hơn nếu không yêu cầu sự phụ thuộc vào các gói bên ngoài nếu không cần thiết?
Dason

@George Tôi thích câu trả lời rõ ràng, Tuy nhiên, tôi nghĩ rằng câu hỏi ban đầu là hỏi các thuật toán và QR chỉ là một trong số đó. Làm thế nào về LU, SVD, phân rã Cholesky? Ngoài ra, trong R, phương thức cho lmQR, có những lý do cho điều đó, bạn có thể giải thích tại sao không?
Haitao Du

@GeorgeDontas Lưu ý rằng có thể không thể đảo ngược. Như đã giải thích trong câu trả lời này , một cách để giải quyết đó là loại bỏ khỏi các cột là sự kết hợp tuyến tính của các cột khác. AATAA
Oren Milman

70

Để trả lời thư của câu hỏi, "bình phương tối thiểu bình thường" không phải là một thuật toán; đúng hơn nó là một loại vấn đề trong đại số tuyến tính tính toán, trong đó hồi quy tuyến tính là một ví dụ. Thông thường, người ta có dữ liệu và một hàm dự kiến ​​("mô hình") để khớp với dữ liệu theo mẫu . Các được gọi là "hàm cơ sở" và có thể là bất cứ điều gì từ monomials để hàm lượng giác (ví dụ , ) và hàm mũ ( ). Thuật ngữ "tuyến tính" trong "hồi quy tuyến tính" ở đây không đề cập đến các hàm cơ bản,{(x1,y1),,(xm,ym)}f j ( x ) x j sin ( j x ) cos ( j x ) exp ( - j x ) c j c j c c j f j ( x )f(x)=c1f1(x)++cnfn(x)fj(x)xjsin(jx)cos(jx)exp(jx)cj, trong đó việc lấy đạo hàm riêng của mô hình đối với bất kỳ cung cấp cho bạn hệ số nhân ; đó là, .cjcjfj(x)

Giờ đây, một ma trận hình chữ nhật ("ma trận thiết kế") mà (thường) có nhiều hàng hơn các cột và mỗi mục có dạng , là chỉ số hàng và là chỉ số cột. OLS hiện là nhiệm vụ tìm vectơ giúp giảm thiểu số lượng (trong ký hiệu ma trận, ; ở đây, thường được gọi là "vectơ phản hồi").m×nAfj(xi)ijc=(c1cn)j=1m(yjf(xj))2Acy2y=(y1ym)

Có ít nhất ba phương pháp được sử dụng trong thực tế để tính toán các giải pháp bình phương nhỏ nhất: phương trình bình thường, phân tách QR và phân tách giá trị số ít. Tóm lại, chúng là những cách để biến ma trận thành một sản phẩm của ma trận dễ dàng thao tác để giải cho vectơ .Ac

George đã chỉ ra phương pháp của phương trình bình thường trong câu trả lời của mình; người ta chỉ giải được tập phương trình tuyến tínhn×n

AAc=Ay

cho . Do thực tế là ma trận là đối xứng dương (bán) xác định, phương thức thông thường được sử dụng cho điều này là phân tách Cholesky, yếu tố thành dạng , với một ma trận tam giác thấp hơn. Vấn đề với cách tiếp cận này, mặc dù có lợi thế là có thể nén ma trận thiết kế thành ma trận nhỏ hơn nhiều , là hoạt động này dễ bị mất các số liệu quan trọng (điều này có gì đó để làm với "số điều kiện" của ma trận thiết kế).AA AA G GG m × n n × ncAAAAGGGm×nn×n

Một cách tốt hơn một chút là phân tách QR, hoạt động trực tiếp với ma trận thiết kế. Nó xác định là , trong đó là một ma trận trực giao (nhân một ma trận như vậy với ma trận chuyển vị của nó sẽ tạo ra ma trận nhận dạng) và là tam giác trên. sau đó được tính là . Vì những lý do tôi sẽ không tham gia (chỉ cần xem bất kỳ văn bản đại số tuyến tính nào, như thế này ), điều này có các thuộc tính số tốt hơn so với phương trình của phương trình bình thường.A = Q R Q R c R - 1 QyAA=QRQRcR1Qy

Một biến thể trong việc sử dụng phân tách QR là phương pháp của phương trình thông thường . Tóm lại, nếu ai đó có phân tách , hệ thống tuyến tính cần giải quyết có dạngA=QR

RRc=Ay

Thực tế, người ta đang sử dụng phân tách QR để tạo thành tam giác Cholesky của trong phương pháp này. Điều này hữu ích cho trường hợp thưa thớt và việc lưu trữ và / hoặc hình thành rõ ràng của (hoặc phiên bản bao thanh toán của nó) là không mong muốn hoặc không thực tế.Một QAAAQ

Cuối cùng, cách giải quyết OLS đắt nhất, nhưng an toàn nhất là phân rã giá trị số ít (SVD). Lần này, được xác định là , trong đó và đều trực giao vàMột = U Σ VU V ΣAA=UΣVUVΣlà một ma trận đường chéo, có các mục chéo được gọi là "giá trị số ít". Sức mạnh của sự phân rã này nằm ở khả năng chẩn đoán được cấp cho bạn bởi các giá trị số ít, ở chỗ nếu người ta nhìn thấy một hoặc nhiều giá trị số ít, thì có khả năng bạn đã chọn một bộ cơ sở không hoàn toàn độc lập, do đó cần phải cải tổ mô hình của bạn. ("Số điều kiện" được đề cập trước đó trên thực tế có liên quan đến tỷ lệ của giá trị số ít nhất so với giá trị nhỏ nhất; tỷ lệ của khóa học trở nên rất lớn (và do đó ma trận bị điều hòa) nếu giá trị số ít nhất là "nhỏ" .)

Đây chỉ đơn thuần là một bản phác thảo của ba thuật toán này; bất kỳ cuốn sách hay về thống kê tính toán và đại số tuyến tính số sẽ có thể cung cấp cho bạn nhiều chi tiết liên quan hơn.


3
Giải thích tốt đẹp!
Mike Spivey

Làm thế nào để bạn tính toán R^{-1} Q^T ynếu A không vuông? Bạn có thả các hàng 0 trong R không?
bhan

1
@bhan, tôi giả sử biến thể "nền kinh tế" (hoặc "mỏng") của phân rã QR, trong đó là hình vuông và có cùng kích thước với ma trận thiết kế. Một cái gì đó để bạn làm: tìm kiếm sự khác biệt giữa "QR đầy đủ" và "QR mỏng". QRQ
JM không phải là một nhà thống kê

@JM có đề xuất nào về "cuốn sách hay về thống kê tính toán và đại số tuyến tính số" không? thực sự muốn tìm hiểu thêm
Haitao Du

1
@hxd, ngoài đỉnh đầu của tôi: Monahan cho thống kê tính toán và Golub / van Loan cho đại số tuyến tính số.
JM không phải là một thống kê


4

Rất dễ bị nhầm lẫn giữa các định nghĩa và thuật ngữ. Cả hai thuật ngữ được sử dụng, đôi khi thay thế cho nhau. Tra cứu nhanh trên Wikipedia sẽ giúp:

Bình thường tối thiểu bình phương (OLS) là một phương pháp được sử dụng để phù hợp với mô hình hồi quy tuyến tính. Do tính nhất quán và hiệu quả rõ ràng (theo các giả định bổ sung) của phương pháp OLS, đây là phương pháp chủ yếu. Xem các bài viết để dẫn thêm.


Đúng vậy, đó là lý do tại sao tôi coi OLS là một "thuật toán" được sử dụng trong hồi quy tuyến tính ...
Belmont

3
Bình phương tối thiểu bình thường là một ước tính. Có nhiều thuật toán để tính toán ước tính: thường sử dụng một số loại phân tách ma trận trực giao, như QR, được sử dụng. Xem en.wikipedia.org/wiki/ Kẻ
Simon Byrne

4

Tôi có xu hướng nghĩ về 'bình phương tối thiểu' là một tiêu chí để xác định đường hồi quy phù hợp nhất (nghĩa là làm cho tổng 'bình phương' dư 'ít nhất') và 'thuật toán' trong ngữ cảnh này là tập hợp các bước được sử dụng để xác định các hệ số hồi quy thỏa mãn tiêu chí đó. Sự khác biệt này cho thấy rằng có thể có các thuật toán khác nhau sẽ đáp ứng cùng một tiêu chí.

Tôi tò mò muốn biết liệu những người khác có phân biệt điều này không và họ sử dụng thuật ngữ nào.


Theo thuật toán, ý tôi là việc triển khai phần mềm được sử dụng để khớp một dòng để mô hình hóa giá trị trung bình của phân phối.
Belmont

3

Một cuốn sách cũ, nhưng một cuốn tôi thấy mình liên tục chuyển sang, là

Lawson, CL và Hanson, Các vấn đề về bình phương tối thiểu của RJ , Prentice-Hall, 1974.

Nó chứa một cuộc thảo luận chi tiết và rất dễ đọc về một số thuật toán mà các câu trả lời trước đã đề cập. Bạn có lẽ sẽ muốn nhìn nó.


1
Nếu bạn đọc cuốn sách cũ này, bạn cũng nên tìm hiểu về Åke Phương pháp số của Bjorck cho các vấn đề bình phương nhỏ nhất , những thứ không được thảo luận trong Lawson / Hanson. Các thói quen có trong sách Lawson / Hanson có sẵn từ Netlib .
JM không phải là một thống kê
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.