Câu trả lời ngắn:
Có, chạy hồi quy tuyến tính song song đã được thực hiện. Ví dụ, Xiangrui Meng et al. (2016) cho Học máy trong Apache Spark. Cách thức hoạt động của nó là sử dụng độ dốc dốc ngẫu nhiên (SGD). Trong phần 3, các tính năng cốt lõi, tác giả đã đề cập:
Các mô hình tuyến tính tổng quát được học thông qua các thuật toán tối ưu hóa song song hóa tính toán độ dốc, sử dụng các thư viện đại số tuyến tính nhanh dựa trên C ++ để tính toán công nhân.
Một ví dụ về cách hoạt động của SGD có thể được tìm thấy trong câu trả lời của tôi ở đây: Làm thế nào để giảm độ dốc ngẫu nhiên có thể tiết kiệm thời gian so với độ dốc gốc tiêu chuẩn?
Câu trả lời dài:
Lưu ý, ký hiệu không phù hợp với liên kết tôi cung cấp, tôi cảm thấy ký hiệu ma trận tốt hơn trong câu hỏi này.
Để thực hiện hồi quy tuyến tính, chúng tôi đang cố gắng thực hiện
giảm thiểu ∥ X β- y∥2
Đạo hàm là
2 XT( Xβ- y)
Trong cài đặt dữ liệu nhỏ, chúng ta có thể đặt đạo hàm thành và giải trực tiếp. (ví dụ: phân tách QR trong R.) Trong cài đặt dữ liệu lớn, ma trận dữ liệu quá lớn để được lưu trữ trong bộ nhớ và có thể khó giải quyết trực tiếp. (Tôi không quen với cách thực hiện phân tách QR hoặc phân tách Cholesky cho các ma trận lớn).X0X
Một cách để song song hóa điều này là bằng cách sử dụng một phương pháp lặp: giảm độ dốc ngẫu nhiên, trong đó chúng ta có thể xấp xỉ độ dốc bằng cách sử dụng một tập hợp con của dữ liệu. (Nếu chúng tôi sử dụng , để biểu thị một tập hợp con của dữ liệu, độ dốc có thể được xấp xỉ bằng và chúng tôi có thể cập nhật với độ dốc xấp xỉ).y s 2 X T s ( X s β - y s ) βXSyS2 XTS( XSβ- yS)β
Ngoài ra, đối với thống kê , chúng ta có thể tính cho tất cả dữ liệu song song hoặc xấp xỉ nó bằng cách sử dụng tập hợp con của dữ liệu.R 2R2R2
Trực giác về cách thức hoạt động (mô hình mapreduce):
Tôi tiếp tục nói gần đúng bằng cách sử dụng tập hợp con; trực giác về lý do tại sao công việc này có thể được mô tả trong ví dụ sau: giả sử tôi có 100 tỷ điểm dữ liệu và chúng tôi muốn tính trung bình của tất cả các điểm dữ liệu. Giả sử tiến hành một hoạt động như vậy mất một thời gian rất dài và hơn nữa toàn bộ dữ liệu không thể được lưu trữ trong bộ nhớ.
Những gì chúng ta có thể làm là chỉ cần lấy một tập hợp con, nói 1 tỷ mục và tính trung bình của các mục này. Do đó, xấp xỉ được tạo ra không nên xa sự thật (nghĩa là sử dụng toàn bộ dữ liệu).
Để song song, chúng ta có thể sử dụng 100 máy tính, với mỗi máy tính lấy một tập hợp con khác nhau trong 1 tỷ điểm dữ liệu và tính trung bình của các máy tính này. (Thường được gọi là bước MAP). Cuối cùng, chạy trung bình khác trên 100 số này (còn gọi là bước GIẢM).
Lưu ý "mô hình mapreduce" sẽ hoạt động tốt trong một số trường hợp, nhưng không tốt trong những trường hợp khác. Ví dụ: thao tác "trung bình" được đề cập trước đó rất dễ dàng, bởi vì chúng tôi biết , ( giả sử độ dài của và là như nhau). Đối với một số phương pháp lặp, nghĩa là lần lặp hiện tại phụ thuộc vào kết quả lặp trước đó, thật khó để song song. Giảm dần độ dốc ngẫu nhiên giải quyết vấn đề này bằng cách xấp xỉ độ dốc bằng cách sử dụng tập hợp con của dữ liệu. Và chi tiết có thể được tìm thấy trong câu trả lời của @ user20160.x ynghĩa là ( < x , y> ) = trung bình ( x ) + trung bình (y)xy
Người giới thiệu:
Xiangrui Mạnh và cộng sự. (2016) . MLlib: Học máy trong Apache Spark