Krótka odpowiedź:
Tak, równoległa regresja liniowa została wykonana. Na przykład Xiangrui Meng i in. (2016) dla Machine Learning w Apache Spark. Jego działanie polega na użyciu stochastycznego spadku gradientu (SGD). W części 3 kluczowe cechy autor wspomniał:
Uogólnione modele liniowe uczy się za pomocą algorytmów optymalizacji, które równolegle obliczają gradienty, używając szybkich bibliotek algebry opartej na C ++ do obliczeń roboczych.
Przykład działania SGD można znaleźć w mojej odpowiedzi tutaj: W jaki sposób stochastyczne obniżanie gradientu może zaoszczędzić czas w porównaniu do standardowego spadku?
Długa odpowiedź:
Uwaga: notacja nie jest zgodna z linkiem, który podałem, wydaje mi się, że notacja macierzowa jest lepsza w tym pytaniu.
Aby wykonać regresję liniową, próbujemy to zrobić
minimalizuj ∥ X β- y∥2)
Pochodną jest
2 XT.( Xβ- y)
W małych ustawieniach danych możemy ustawić pochodną na i rozwiązać ją bezpośrednio. (np. dekompozycja QR w R.) W ustawieniach dużych danych macierz danych jest zbyt duża, aby ją zapisać w pamięci, i może być trudna do bezpośredniego rozwiązania. (Nie wiem, jak wykonać rozkład QR lub rozkład Cholesky'ego dla wielkich matryc).X0X
Jednym ze sposobów na zrównoleglenie tego jest próba zastosowania metody iteracyjnej: stochastycznego spadku gradientu, w którym możemy aproksymować gradient za pomocą podzbioru danych. (Jeśli stosujemy , reprezentuje podzbiór danych gradient można przybliżyć , i może aktualizować z przybliżonego gradient).y s 2 X T s ( X s β - y s ) βXsys2 XT.s( Xsβ- ys)β
Ponadto w przypadku statystyki możemy obliczyć dla wszystkich danych równolegle lub w przybliżeniu, stosując podzbiór danych.R 2R2)R2)
Intuicja, jak to działa (paradygmat mapreduce):
Powtarzam przybliżenie za pomocą podzbioru; intuicję, dlaczego to działa, można opisać w następującym przykładzie: załóżmy, że mam 100 miliardów punktów danych i chcemy obliczyć średnią wszystkich punktów danych. Załóżmy, że przeprowadzenie takiej operacji zajmuje bardzo dużo czasu, a ponadto całe dane nie mogą być przechowywane w pamięci.
Możemy po prostu wziąć podzbiór, powiedzmy 1 miliard pozycji i obliczyć jego średnią. Tak uzyskane przybliżenie nie powinno być dalekie od prawdy (tj. Z wykorzystaniem całych danych).
Aby zrównoważyć, możemy użyć 100 komputerów, z których każdy pobiera inny podzbiór 1 miliarda punktów danych i oblicza ich średnią. (Powszechnie nazywany krokiem MAP). Na koniec uruchom kolejną średnią dla tych 100 liczb (inaczej krok ZMNIEJSZ).
Zauważ, że „paradygmat mapreduce” działałby dobrze w niektórych przypadkach, ale w innych nie. Na przykład wspomniana wcześniej operacja „średnia” jest bardzo łatwa, ponieważ wiemy , ( przy założeniu, że długość i są takie same). W przypadku niektórych metod iteracyjnych, tj. Bieżąca iteracja zależy od wcześniejszych wyników iteracji, trudno jest zrównoważyć. Stochastyczne obniżanie gradientu rozwiązuje ten problem poprzez aproksymację gradientu za pomocą podzbioru danych. Szczegóły można znaleźć w odpowiedzi na @ user20160.x yśrednia ( < x , y> ) = średnia ( x ) + średnia (y)xy
Bibliografia:
Xiangrui Meng i in. (2016) . MLlib: Uczenie maszynowe w Apache Spark