Zrozumienie regresji wielorakiej

Podstawowe zasady działania tego powszechnie stosowanego algorytmu

Regresja liniowa, choć jest użytecznym narzędziem, ma istotne ograniczenia. Jak sama nazwa wskazuje, nie można jej łatwo dopasować do żadnego zestawu danych, które są nieliniowe. Może być używana tylko do przewidywań, które pasują do zakresu danych treningowych. I, co najważniejsze dla tego artykułu, można ją dopasować tylko do zestawów danych z jedną zmienną zależną i jedną zmienną niezależną.

To właśnie tutaj pojawia się regresja wieloraka. Chociaż nie może ona pokonać wszystkich trzech słabości regresji liniowej, jest ona specjalnie zaprojektowana do tworzenia regresji na modelach z pojedynczą zmienną zależną i wieloma zmiennymi niezależnymi.

Jaka jest ogólna forma regresji wielorakiej?

Ogólna postać równania dla regresji liniowej to:

y = B * x + A

gdzie y jest zmienną zależną, x jest zmienną niezależną, a A i B są współczynnikami dyktującymi równanie. Różnica między równaniem regresji liniowej a równaniem regresji wielorakiej polega na tym, że równanie regresji wielorakiej musi być w stanie obsłużyć wiele danych wejściowych, a nie tylko jedno dane wejściowe w regresji liniowej. Aby uwzględnić tę zmianę, równanie regresji wielorakiej przyjmuje postać:

y = B_1 * x_1 + B_2 * x_2 + … + B_n * x_n + A

W tym równaniu indeksy oznaczają różne zmienne niezależne. x_1 to wartość pierwszej zmiennej niezależnej, x_2 to wartość drugiej zmiennej niezależnej itd. I tak dalej, w miarę dodawania kolejnych zmiennych niezależnych, aż do momentu, gdy do równania zostanie dodana ostatnia zmienna niezależna, x_n. Zauważ, że ten model pozwala na posiadanie dowolnej liczby, n, zmiennych niezależnych, a kolejne warunki są dodawane w miarę potrzeb. Współczynniki B mają te same indeksy, wskazujące, że są to współczynniki związane z każdą zmienną niezależną. A, jak poprzednio, jest po prostu stałą określającą wartość zmiennej zależnej, y, gdy wszystkie zmienne niezależne, xs, wynoszą zero.

Jako przykład, wyobraź sobie, że jesteś planistą ruchu drogowego w swoim mieście i musisz oszacować średni czas dojazdu kierowców jadących ze wschodniej strony miasta na zachodnią. Nie wiesz, jak długo to trwa średnio, ale wiesz, że będzie to zależeć od wielu czynników. Prawdopodobnie zależy on od takich rzeczy jak pokonany dystans, liczba przystanków na trasie oraz liczba innych samochodów na drodze. W takim przypadku można utworzyć liniowe równanie regresji wielorakiej, takie jak poniższe:

y = B_1 * Odległość + B_2 * Światła stopu + B_3 * Samochody + A

gdzie y to średni czas dojazdu do pracy, Odległość to odległość między początkowym a końcowym miejscem docelowym, Światła stopu to liczba świateł stopu na trasie, a A to stała reprezentująca innych konsumentów czasu (np. zapinanie pasów, uruchamianie samochodu, być może zatrzymywanie się w kawiarni).

Teraz, gdy masz już model przewidywania czasu dojazdu do pracy, musisz dopasować model do zestawu danych treningowych, aby zminimalizować błędy.

Jak dopasować model regresji wielokrotnej?

Podobnie do tego, jak zminimalizowaliśmy sumę kwadratów błędów, aby znaleźć B w przykładzie regresji liniowej, minimalizujemy sumę kwadratów błędów, aby znaleźć wszystkie terminy B w regresji wielokrotnej.Różnica polega na tym, że ponieważ istnieje wiele terminów i nieokreślona liczba terminów do czasu utworzenia modelu, nie ma prostego rozwiązania algebraicznego, aby znaleźć terminy A i B. Oznacza to, że musimy użyć stochastycznego zejścia gradientowego. Stochastyczne zejście gradientowe to temat na tyle obszerny, że wymaga kolejnego artykułu, więc nie będę się tutaj zagłębiał w szczegóły. Jednakże, dobry opis tego można znaleźć w Data Science from Scratch autorstwa Joela Grosa. Na szczęście, zanim przeczytamy o szczegółach, możemy jeszcze przedstawić równania potrzebne do zaimplementowania tego rozwiązania.

Pierwszym krokiem jest zsumowanie błędów kwadratowych na każdym punkcie. Przyjmuje to postać:

Error_Point = (Actual – Prediction)²

gdzie Error jest błędem w modelu podczas przewidywania czasu dojazdu danej osoby, Actual jest rzeczywistą wartością (lub rzeczywistym czasem dojazdu tej osoby), a Prediction jest wartością przewidywaną przez model (lub przewidywanym przez model czasem dojazdu tej osoby). Actual – Prediction daje błąd dla punktu, a następnie podniesienie go do kwadratu daje błąd kwadratowy dla punktu. Pamiętaj, że podniesienie do kwadratu błędu jest ważne, ponieważ niektóre błędy będą dodatnie, podczas gdy inne będą ujemne, a jeśli nie zostaną podniesione do kwadratu, błędy te będą się wzajemnie znosić, co sprawi, że całkowity błąd modelu będzie wyglądał na znacznie mniejszy niż jest w rzeczywistości.

Aby znaleźć błąd w modelu, błąd z każdego punktu musi zostać zsumowany w całym zestawie danych. Oznacza to zasadniczo, że używasz modelu do przewidywania czasu dojazdu dla każdego punktu danych, który masz, odejmujesz tę wartość od rzeczywistego czasu dojazdu w punkcie danych, aby znaleźć błąd, kwadrat tego błędu, a następnie suma wszystkich kwadratowych błędów razem. Innymi słowy, błąd modelu to:

Error_Model = suma(Actual_i – Prediction_i)²

gdzie i jest indeksem iterującym przez wszystkie punkty w zestawie danych.

Gdy funkcja błędu jest określona, musisz umieścić model i funkcję błędu przez stochastyczny algorytm zstępowania gradientowego, aby zminimalizować błąd. Zrobi to poprzez minimalizację warunków B w równaniu. Wkrótce napiszę szczegółowy artykuł o tym, jak stworzyć stochastyczny algorytm zstępujący gradientu, ale na razie możesz znaleźć szczegóły w Data Science from Scratch lub wykorzystać narzędzia w pakiecie Python scikit-learn.

Po dopasowaniu modelu do danych treningowych, następnym krokiem jest upewnienie się, że model dobrze pasuje do danych.

Jak upewnić się, że model dobrze pasuje do danych?

Krótka odpowiedź brzmi: Użyj tej samej wartości r², która została użyta do regresji liniowej. Wartość r², zwana również współczynnikiem determinacji, określa część zmiany w zestawie danych, która jest przewidywana przez model. Jest to wartość z zakresu od 0 do 1, gdzie 0 oznacza, że model nie jest w stanie przewidzieć wyniku, a 1, że model doskonale przewiduje wynik. Powinieneś oczekiwać, że wartość r² każdego modelu, który tworzysz, będzie pomiędzy tymi dwoma wartościami (jeśli nie jest, popełniłeś gdzieś błąd).

Współczynnik determinacji dla modelu można obliczyć za pomocą następujących równań:

r² = 1 – (Suma błędów kwadratowych) / (Całkowita suma kwadratów)

(Całkowita suma kwadratów) = Suma(y_i – mean(y))²

(Suma błędów kwadratowych) = suma((Actual_i. – Prediction_i)²)

Dodatkowe terminy zawsze poprawiają model, niezależnie od tego, czy nowy termin wnosi do niego znaczącą wartość, czy nie.

W tym miejscu testowanie dopasowania modelu regresji wielorakiej komplikuje się. Dodanie większej liczby terminów do regresji wielorakiej z natury poprawia dopasowanie. Daje to nowy termin dla modelu do wykorzystania w celu dopasowania danych i nowy współczynnik, który może się zmieniać, aby wymusić lepsze dopasowanie. Dodatkowe terminy zawsze poprawiają model, niezależnie od tego, czy nowy termin dodaje znaczącą wartość do modelu, czy nie. W rzeczywistości, dodawanie nowych zmiennych może w rzeczywistości pogorszyć model. Dodawanie coraz większej ilości zmiennych zwiększa prawdopodobieństwo niedopasowania modelu do danych treningowych. Może to skutkować modelem, który wymyśla trendy, które tak naprawdę nie istnieją tylko po to, aby zmusić model do dopasowania punktów, które istnieją.

Fakt ten ma ważne implikacje podczas tworzenia modeli regresji wielorakiej. Tak, mógłbyś dodawać coraz więcej warunków do równania, aż albo uzyskasz idealne dopasowanie, albo zabraknie ci zmiennych do dodania. Ale wtedy skończyłbyś z bardzo dużym, bardzo złożonym modelem, który jest pełen terminów, które nie są w rzeczywistości istotne dla przypadku, który przewidujesz. Na przykład, w naszym przykładzie przewidywania czasu dojazdu do pracy, mógłbyś poprawić swój model dodając termin reprezentujący pozorną wielkość Jowisza na nocnym niebie. Ale to tak naprawdę nie ma wpływu na czas dojazdu do pracy, prawda?

Jak mogę zidentyfikować, które parametry są najważniejsze?

Jednym ze sposobów jest obliczenie standardowego błędu każdego współczynnika. Błąd standardowy określa jak pewny jest model w odniesieniu do każdego współczynnika, z większymi wartościami wskazującymi, że model jest mniej pewny tego parametru. Jest to intuicyjne nawet bez oglądania równań bazowych – jeśli błąd związany z terminem jest zazwyczaj wysoki, oznacza to, że nie ma on zbyt dużego wpływu na dopasowanie modelu do zestawu danych.

Obliczanie błędu standardowego jest skomplikowanym procesem statystycznym i nie może być zwięźle opisane w szybkim artykule na Medium. Na szczęście dostępne są pakiety Pythona, których możesz użyć, aby zrobić to za Ciebie. Pytanie to zostało zadane i odpowiedziane na StackOverflow co najmniej raz. Te narzędzia powinny sprawić, że zaczniesz.

Po obliczeniu błędu standardowego każdego współczynnika możesz użyć wyników, aby określić, które współczynniki są najwyższe, a które najniższe. Ponieważ wysokie wartości wskazują, że te terminy dodają mniejszą wartość predykcyjną do modelu, możesz wiedzieć, że te terminy są najmniej ważne do zachowania. W tym momencie możesz zacząć wybierać, które terminy w modelu mogą zostać usunięte, aby zmniejszyć liczbę terminów w równaniu bez drastycznego zmniejszenia mocy predykcyjnej modelu.

Inną metodą jest użycie techniki zwanej regularnością. Regularyzacja działa poprzez dodanie nowego terminu do obliczenia błędu, który jest oparty na liczbie terminów w równaniu regresji wielorakiej. Więcej terminów w równaniu będzie z natury prowadzić do wyższego błędu regularyzacji, podczas gdy mniej terminów z natury prowadzi do niższego błędu regularyzacji. Dodatkowo, karę za dodawanie terminów w równaniu regularyzacji można dowolnie zwiększać lub zmniejszać. Zwiększenie kary również doprowadzi do wyższego błędu regularności, podczas gdy jej zmniejszenie doprowadzi do niższego błędu regularności.

Z terminem regularności dodanym do równania błędu, minimalizacja błędu oznacza nie tylko minimalizację błędu w modelu, ale również minimalizację liczby terminów w równaniu. To z natury prowadzi do modelu z gorszym dopasowaniem do danych treningowych, ale również z natury prowadzi do modelu z mniejszą liczbą terminów w równaniu. Wyższe wartości kary/terminu w błędzie regularyzacji tworzą większą presję na model, aby miał mniej terminów.

Joel Gros dostarcza dobrego przykładu użycia regresji grzbietowej do regularyzacji w swojej książce Data Science from Scratch.

Jak mogę zrozumieć ten model?

Model, który stworzyłeś nie jest tylko równaniem z garścią liczb. Każdy ze współczynników, które właśnie uzyskałeś, określa wpływ zmiennej niezależnej na zmienną zależną przy założeniu, że wszystkie inne zmienne są równe. Na przykład, nasz przykład czasu dojazdu do pracy mówi, że przeciętny dojazd do pracy będzie trwał B_2 minuty dłużej dla każdego światła na trasie dojazdu danej osoby. Jeśli proces tworzenia modelu zwróci 2,32 dla B_2, oznacza to, że każde światło stopu na ścieżce osoby dodaje 2,32 minuty do jazdy.

Jest to kolejny powód, dla którego ważne jest, aby utrzymać niską liczbę terminów w równaniu. Ponieważ coraz więcej terminów jest dodawanych, coraz trudniej jest śledzić fizyczne znaczenie każdego terminu. Coraz trudniej jest również uzasadnić obecność każdego terminu. Jestem pewien, że ktokolwiek liczący na model przewidujący czas dojazdu do pracy byłby całkiem akceptujący termin dla odległości dojazdu, ale znacznie mniej akceptujący termin dla wielkości Jowisza na nocnym niebie.

Jak ten model może być rozszerzony?

Zauważ, że ten model nie mówi nic o tym, jak parametry mogą wpływać na siebie nawzajem. Patrząc na równanie, nie ma możliwości, aby tak się stało. Różne współczynniki są związane tylko z jednym parametrem fizycznym. Jeśli uważasz, że dwa pojęcia są powiązane, możesz stworzyć nowe pojęcie oparte na kombinacji tych dwóch. Na przykład, liczba świateł stopu na dojeździe do pracy może być funkcją odległości dojazdu. Potencjalne równanie dla tego może być:

Stoplights = C_1 * Odległość + D

gdzie C_1 i D są współczynniki regresji podobne do B i A w równania regresji odległości dojazdu. Ten termin dla świateł stopu może być następnie podstawiony do równania regresji odległości dojazdu, umożliwiając modelowi uchwycenie tej relacji.

Inna możliwa modyfikacja obejmuje dodanie nieliniowych danych wejściowych. Sam model regresji wielorakiej może być tylko liniowy, co jest ograniczeniem. Można jednak utworzyć nieliniowe warunki w modelu. Na przykład, powiedzmy, że jedno światło stopu cofające się może uniemożliwić ruch drogowy z przechodzenia przez wcześniejsze światło stopu. Może to prowadzić do wykładniczego wpływu świateł stopu na czas dojazdu do pracy. Możesz stworzyć nowy termin, aby uchwycić to i odpowiednio zmodyfikować swój algorytm odległości dojazdu. Wyglądałoby to mniej więcej tak:

Stoplights_Squared = Stoplights²

y = B_1 * Odległość + B_2 * Stoplights + B_3 * Samochody + B_4 * Stoplights_Squared + C

Te dwa równania łączą się, aby stworzyć liniowy termin regresji dla twojego nieliniowego wejścia Stoplights_Squared.

Podsumowując

Regresja wielokrotna jest rozszerzeniem modeli regresji liniowej, które pozwala na przewidywanie systemów z wieloma niezależnymi zmiennymi. Odbywa się to poprzez proste dodanie większej ilości terminów do równania regresji liniowej, z każdym terminem reprezentującym wpływ innego parametru fizycznego.

Jest to nadal model liniowy, co oznacza, że terminy zawarte w modelu nie są w stanie wykazać żadnych zależności między sobą lub reprezentować żadnego rodzaju trend nieliniowy. Te wady można przezwyciężyć poprzez dodanie zmodyfikowanych terminów do równania. Nowy parametr może być napędzany przez inne równanie, które śledzi związek między lub zmiennymi lub które stosuje nieliniowy trend do zmiennej. W ten sposób niezależne trendy liniowe w modelu regresji wielorakiej mogą być wymuszone, aby uchwycić związki pomiędzy dwoma i/lub nieliniowymi oddziaływaniami.

Ponieważ w modelu jest więcej parametrów niż w prostej regresji liniowej, potrzebna jest większa ostrożność przy tworzeniu równania. Dodanie większej liczby terminów z natury rzeczy poprawi dopasowanie do danych, ale nowe terminy mogą nie mieć żadnego znaczenia fizycznego. Jest to niebezpieczne, ponieważ prowadzi do modelu, który pasuje do danych, ale w rzeczywistości nie oznacza niczego użytecznego. Dodatkowo, więcej terminów zwiększa szanse na przepasowanie modelu prowadząc do potencjalnie katastrofalnych wyników podczas rzeczywistego przewidywania wartości.

Istnieje wiele technik ograniczania liczby parametrów i związanych z nimi minusów w tych modelach. Dwie z nich obejmują obliczanie błędu standardowego każdego współczynnika oraz regularyzację. Obliczanie błędu standardowego pozwala zobaczyć, które terminy są najmniej wartościowe dla modelu i odpowiednio usunąć zbędne terminy. Regularizacja idzie o krok dalej, dodając termin błędu dla zwiększonej liczby terminów w modelu, tym samym faktycznie zmniejszając dobroć dopasowania w miarę dodawania kolejnych terminów. Ta metoda pomaga znaleźć równowagę w usuwaniu terminów, aby zmniejszyć minusy dodatkowych terminów, jednocześnie wciąż zawierając wystarczająco dużo najważniejszych, aby uzyskać dobre dopasowanie.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *