Wprowadzenie do wielowymiarowych splajnów regresji adaptacyjnej


Gdy związek między zbiorem zmiennych predykcyjnych a zmienną odpowiedzi ma charakter liniowy, często możemy zastosować regresję liniową , która zakłada, że związek między daną zmienną predykcyjną a zmienną odpowiedzią ma postać:

Y = β 0 + β 1 X + ε

Jednak w praktyce związek między zmiennymi może w rzeczywistości być nieliniowy, a próba zastosowania regresji liniowej może skutkować słabo dopasowanym modelem.

Jednym ze sposobów wyjaśnienia nieliniowej zależności między predyktorem a zmienną odpowiedzi jest użycie regresji wielomianowej , która przyjmuje postać:

Y = β 0 + β 1 X + β 2 X 2 + … + β godz

W tym równaniu h nazywany jest „stopniem” wielomianu. W miarę zwiększania wartości h model staje się bardziej elastyczny i jest w stanie dostosować się do danych nieliniowych.

Regresja wielomianowa ma jednak pewne wady:

1. Regresja wielomianowa może łatwo dopasować zbiór danych, jeśli stopień h zostanie wybrany zbyt duży. W praktyce h rzadko jest większe niż 3 lub 4, ponieważ poza tym punktem odpowiada po prostu szumowi zbioru treningowego i nie uogólnia dobrze niewidocznych danych.

2. Regresja wielomianowa narzuca na cały zbiór danych funkcję globalną, która nie zawsze jest dokładna.

Alternatywą dla regresji wielomianowej są wielowymiarowe krzywe regresji adaptacyjnej .

Podstawowa idea

Wielowymiarowe krzywe regresji adaptacyjnej działają w następujący sposób:

1. Podziel zbiór danych na k części.

Najpierw dzielimy zbiór danych na k różnych elementów. Punkty, w których dzielimy zbiór danych, nazywane są węzłami .

Identyfikujemy węzły, oceniając każdy punkt dla każdego predyktora jako potencjalny węzeł i tworząc model regresji liniowej przy użyciu cech kandydujących. Punktem, który może zredukować najwięcej błędów w modelu, jest węzeł.

Po zidentyfikowaniu pierwszego węzła powtarzamy proces w celu znalezienia kolejnych węzłów. Na początek możesz znaleźć tyle węzłów, ile uznasz za rozsądne.

2. Dopasuj funkcję regresji do każdej części, tworząc funkcję zawiasu.

Kiedy już wybierzemy węzły i dopasujemy model regresji do każdego elementu zbioru danych, otrzymamy tak zwaną funkcję przegubową , oznaczoną jako h(xa) , gdzie a jest wartością progową.

Na przykład funkcja zawiasu dla modelu jednowęzłowego może wyglądać następująco:

  • y = β 0 + β 1 (4,3 – x) jeśli x < 4,3
  • y = β 0 + β 1 (x – 4,3) jeśli x > 4,3

W tym przypadku ustalono, że wybór 4,3 jako wartości progowej pozwolił na maksymalną redukcję błędu spośród wszystkich możliwych wartości progowych. Następnie dopasowujemy inny model regresji do wartości poniżej 4,3 w porównaniu do wartości powyżej 4,3.

Funkcja przegubu z dwoma węzłami może wyglądać następująco:

  • y = β 0 + β 1 (4,3 – x) jeśli x < 4,3
  • y = β 0 + β 1 (x – 4,3) jeśli x > 4,3 i x < 6,7
  • y = β 0 + β 1 (6,7 – x) jeśli x > 6,7

W tym przypadku ustalono, że wybór wartości progowych 4,3 i 6,7 pozwolił na maksymalną redukcję błędu spośród wszystkich możliwych wartości progowych. Następnie dopasowujemy jeden model regresji do wartości poniżej 4,3, inny model regresji do wartości pomiędzy 4,3 a 6,7, a kolejny model regresji do wartości powyżej 4,3.

3. Wybierz k w oparciu o k-krotną walidację krzyżową.

Wreszcie, gdy już dopasujemy kilka różnych modeli przy użyciu różnej liczby węzłów dla każdego modelu, możemy przeprowadzić k-krotną weryfikację krzyżową , aby zidentyfikować model, który generuje najniższy testowy błąd średniokwadratowy (MSE).

Jako model najlepiej generalizujący na nowe dane wybierany jest model z najniższym testem MSE.

Zalety i wady

Wielowymiarowe krzywe regresji adaptacyjnej mają następujące zalety i wady:

Zalety :

Wady:

  • Zwykle nie działa tak dobrze, jak metody nieliniowe, takie jak losowe lasy i maszyny zwiększające gradient.

Jak dopasować modele MARS w R i Pythonie

Poniższe samouczki zawierają szczegółowe przykłady dopasowywania wielowymiarowych splajnów regresji adaptacyjnej (MARS) w językach R i Python:

Wielowymiarowe krzywe regresji adaptacyjnej w R
Wielowymiarowe krzywe regresji adaptacyjnej w Pythonie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *