Regresja liniowa i metody jej rekonstrukcji

Regresja liniowa i metody jej rekonstrukcji
Źródło: xkcd

Regresja liniowa to jeden z podstawowych algorytmów w wielu dziedzinach związanych z analizą danych. Powód jest oczywisty. Jest to bardzo prosty i zrozumiały algorytm, co przyczynia się do jego szerokiego zastosowania od dziesięcioleci, jeśli nie setek lat. Idea polega na założeniu liniowej zależności jednej zmiennej od zestawu innych zmiennych, a następnie próbę odtworzenia tej zależności.

Jednak w tym artykule nie będziemy mówić o zastosowaniu regresji liniowej do rozwiązywania praktycznych problemów. Skoncentrujemy się na interesujących aspektach realizacji rozproszonych algorytmów jej rekonstrukcji, z którymi zetknęliśmy się podczas pisania modułu uczenia maszynowego w Apache Ignite. Trochę podstawowej matematyki, zasad uczenia maszynowego oraz obliczeń rozproszonych pomoże zrozumieć, jak rekonstruować regresję liniową, nawet gdy dane są rozproszone między tysiącami węzłów.

O co chodzi?

Przed nami zadanie odzyskania liniowej zależności. Jako dane wejściowe otrzymujemy zbiór wektorów przypuszczalnie niezależnych zmiennych, którym przypisuje się pewne wartości zmiennej zależnej. Te dane można przedstawić w postaci dwóch macierzy:

Regresja liniowa i metody jej rekonstrukcji

Teraz, skoro zakładamy zależność, a do tego liniową, zapiszmy nasze przypuszczenie w postaci iloczynu macierzy (dla uproszczenia zapisu w tym i kolejnych przypadkach zakłada się, że człon wolny równania jest ukryty za Regresja liniowa i metody jej rekonstrukcji, a ostatnia kolumna macierzy Regresja liniowa i metody jej rekonstrukcji zawiera jedynki):

Regresja liniowa i metody jej rekonstrukcji

Bardzo podobne do systemu równań liniowych, prawda? Podobne, ale system ten najprawdopodobniej nie ma rozwiązań. Przyczyną jest szum, który występuje praktycznie w każdych rzeczywistych danych. Inną przyczyną może być brak liniowej zależności jako takiej, z którą można próbować walczyć, wprowadzając dodatkowe zmienne, nieliniowo zależne od początkowych. Rozważmy następujący przykład:
Regresja liniowa i metody jej rekonstrukcji
Źródło: Wikipedia

To prosty przykład regresji liniowej, który demonstruje zależność jednej zmiennej (po osi Regresja liniowa i metody jej rekonstrukcji) od innej zmiennej (w kierunku Regresja liniowa i metody jej rekonstrukcji). Aby odpowiedni układ równań liniowych miał rozwiązanie, wszystkie punkty muszą leżeć dokładnie na jednej prostej. Ale tak nie jest. A nie leżą na jednej prostej właśnie z powodu szumu (lub dlatego, że założenie o istnieniu liniowej zależności było błędne). W związku z tym, aby przywrócić liniową zależność na podstawie rzeczywistych danych, zazwyczaj trzeba wprowadzić jeszcze jedno założenie: dane wejściowe zawierają szum i ten szum ma rozłożenie normalne. Można również formułować założenia dotyczące innych typów rozkładów szumu, ale w przeważającej większości przypadków rozważa się właśnie rozkład normalny, o którym mowa będzie dalej.

Metoda największej wiarygodności

Zatem założyliśmy obecność losowego szumu rozłożonego normalnie. Co zatem zrobić w takiej sytuacji? Na ten przypadek w matematyce istnieje i jest szeroko stosowana metoda największej wiarygodności. Mówiąc krótko, jej istota polega na wyborze funkcji wiarygodności i jej maksymalizacji.

Wracamy do przywracania liniowej zależności na podstawie danych z normalnym szumem. Zauważmy, że zakładana liniowa zależność jest matematycznym oczekiwaniem Regresja liniowa i metody jej rekonstrukcji istniejącego rozkładu normalnego. Jednocześnie prawdopodobieństwo, że Regresja liniowa i metody jej rekonstrukcji przyjmuje określoną wartość, pod warunkiem, że istnieją obserwowalne Regresja liniowa i metody jej rekonstrukcji, wygląda w następujący sposób:

Regresja liniowa i metody jej rekonstrukcji

Podstawmy teraz zamiast Regresja liniowa i metody jej rekonstrukcji и Regresja liniowa i metody jej rekonstrukcji potrzebne nam zmienne:

Regresja liniowa i metody jej rekonstrukcji

Pozostaje tylko znaleźć wektor Regresja liniowa i metody jej rekonstrukcji, dla którego to prawdopodobieństwo jest maksymalne. Aby zmaksymalizować taką funkcję, wygodnie jest najpierw ją przełożyć na logarytm (logarytm funkcji osiągnie maksimum w tym samym punkcie, co sama funkcja):

Regresja liniowa i metody jej rekonstrukcji

Co z kolei sprowadza się do minimalizacji następującej funkcji:

Regresja liniowa i metody jej rekonstrukcji

Zresztą to nazywa się metodą najmniejszych kwadratów. Często wszystkie powyższe rozważania są pomijane i po prostu stosuje się tę metodę.

Rozkład QR

Minimum powyższej funkcji można znaleźć, jeśli znajdziemy punkt, w którym gradient tej funkcji jest równy zero. A gradient będzie zapisany w następujący sposób:

Regresja liniowa i metody jej rekonstrukcji

Rozkład QR jest metodą macierzową rozwiązywania problemu minimalizacji, wykorzystywaną w metodzie najmniejszych kwadratów. W związku z tym przepiszemy równanie w formie macierzowej:

Regresja liniowa i metody jej rekonstrukcji

Zatem rozkładamy macierz Regresja liniowa i metody jej rekonstrukcji na macierze Regresja liniowa i metody jej rekonstrukcji и Regresja liniowa i metody jej rekonstrukcji i wykonujemy szereg przekształceń (sam algorytm rozkładu QR nie będzie tutaj omawiany, tylko jego zastosowanie w kontekście danego zadania):

Regresja liniowa i metody jej rekonstrukcji

Macierz Regresja liniowa i metody jej rekonstrukcji jest ortogonalna. Pozwala to nam pozbyć się iloczynu Regresja liniowa i metody jej rekonstrukcji:

Regresja liniowa i metody jej rekonstrukcji

A jeśli zastąpimy Regresja liniowa i metody jej rekonstrukcji na Regresja liniowa i metody jej rekonstrukcji, to otrzymamy Regresja liniowa i metody jej rekonstrukcji. Biorąc pod uwagę, że Regresja liniowa i metody jej rekonstrukcji jest macierzą trójkątną górną, wygląda to następująco:

Regresja liniowa i metody jej rekonstrukcji

Można to rozwiązać metodą podstawienia. Element Regresja liniowa i metody jej rekonstrukcji jest obliczany jako Regresja liniowa i metody jej rekonstrukcji, poprzedni element Regresja liniowa i metody jej rekonstrukcji jest obliczany jako Regresja liniowa i metody jej rekonstrukcji i tak dalej.

Tutaj warto zauważyć, że złożoność otrzymanego algorytmu dzięki zastosowaniu rozkładu QR wynosi Regresja liniowa i metody jej rekonstrukcji. Przy tym, mimo że operacja mnożenia macierzy jest dobrze równoległa, napisanie efektywnej rozproszonej wersji tego algorytmu nie wydaje się możliwe.

Spadek gradientowy

Mówiąc o minimalizacji pewnej funkcji, warto wspomnieć o metodzie (stochastycznego) spadku gradientu. To prosty i skuteczny sposób minimalizacji, oparty na iteracyjnym obliczaniu gradientu funkcji w danym punkcie, a następnie przesuwaniu go w kierunku przeciwnym do gradientu. Każdy taki krok przybliża rozwiązanie do minimum. Gradient wygląda wciąż tak samo:

Regresja liniowa i metody jej rekonstrukcji

Dodatkowo, ta metoda dobrze się paralelizuje i rozkłada dzięki liniowym właściwościom operatora gradientu. Zauważmy, że w powyższej formule pod znakiem sumy znajdują się niezależne składniki. Innymi słowy, możemy obliczyć gradient niezależnie dla wszystkich indeksów Regresja liniowa i metody jej rekonstrukcji od pierwszego do Regresja liniowa i metody jej rekonstrukcji, równolegle obliczając gradient dla indeksów od Regresja liniowa i metody jej rekonstrukcji do Regresja liniowa i metody jej rekonstrukcji. Następnie sumujemy uzyskane gradienty. Rezultatem sumy będzie taki sam wynik, jak gdybyśmy obliczyli gradient dla indeksów od pierwszego do Regresja liniowa i metody jej rekonstrukcji. Tak więc, jeśli dane są rozproszone pomiędzy kilkoma częściami, gradient może być obliczony niezależnie w każdej części, a następnie wyniki tych obliczeń mogą zostać zsumowane w celu uzyskania ostatecznego wyniku:

Regresja liniowa i metody jej rekonstrukcji

Zrealizowanie tego wpisuje się w paradygmat MapReduce. Na każdym etapie spadku gradientu zadanie obliczenia gradientu jest wysyłane do każdego węzła danych, a następnie obliczone gradienty są zbierane i ich suma jest wykorzystywana do poprawy wyników.

Pomimo łatwości realizacji i możliwości wykonania w paradygmacie MapReduce, spadek gradientu ma swoje wady. W szczególności liczba kroków potrzebnych do osiągnięcia zbieżności jest znacznie większa w porównaniu do innych, bardziej specjalistycznych metod.

LSQR

LSQR — kolejna metoda rozwiązania postawionego zadania, która nadaje się zarówno do rekonstrukcji regresji liniowej, jak i rozwiązania układów równań liniowych. Jej główną cechą jest połączenie zalet metod macierzowych i podejścia iteracyjnego. Implementacje tej metody można znaleźć zarówno w bibliotece SciPy, jak i w MATLAB. Opis tej metody nie będzie tutaj podawany (można go znaleźć w artykule LSQR: An algorithm for sparse linear equations and sparse least squares). Zamiast tego zostanie zaprezentowane podejście, które pozwala dostosować LSQR do wykonania w środowisku rozproszonym.

Podstawą metody LSQR jest procedura bidiagonalizacji. Jest to procedura iteracyjna, której każda iteracja składa się z następujących kroków:
Regresja liniowa i metody jej rekonstrukcji

Jednak jeśli założyć, że macierz Regresja liniowa i metody jej rekonstrukcji jest partycjonowana poziomo, to każdą iterację można przedstawić jako dwa kroki MapReduce. Dzięki temu udaje się zminimalizować przesyłanie danych w trakcie każdej z iteracji (tylko wektory o długości równej liczbie niewiadomych):

Regresja liniowa i metody jej rekonstrukcji

To właśnie to podejście jest stosowane przy implementacji regresji liniowej w Apache Ignite ML.

Podsumowanie

Istnieje wiele algorytmów do rekonstrukcji regresji liniowej, ale nie wszystkie mogą być stosowane w każdych warunkach. Rozkład QR doskonale nadaje się do precyzyjnego rozwiązania na małych zbiorach danych. Gradient descent jest łatwy do zaimplementowania i pozwala szybko znaleźć przybliżone rozwiązanie. Z kolei LSQR łączy najlepsze cechy dwóch poprzednich algorytmów, ponieważ może być rozproszony, szybciej zbiega w porównaniu do gradient descent, a także umożliwia wczesne zatrzymanie algorytmu w przeciwieństwie do rozkładu QR w celu znalezienia przybliżonego rozwiązania.

Źródło: habr.com

Kup solidny hosting dla stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting dla stron z ochroną przed DDoS, serwery VPS VDS | ProHoster