Regresja grzbietu w pythonie (krok po kroku)


Regresja grzbietowa to metoda, której możemy użyć do dopasowania modelu regresji, gdy w danych występuje wieloliniowość .

W skrócie, regresja metodą najmniejszych kwadratów próbuje znaleźć oszacowania współczynników, które minimalizują rezydualną sumę kwadratów (RSS):

RSS = Σ(y i – ŷ i )2

Złoto:

  • Σ : Grecki symbol oznaczający sumę
  • y i : rzeczywista wartość odpowiedzi dla i-tej obserwacji
  • ŷ i : Przewidywana wartość odpowiedzi na podstawie modelu wielokrotnej regresji liniowej

I odwrotnie, regresja grzbietu ma na celu zminimalizowanie następujących elementów:

RSS + λΣβ j 2

gdzie j przechodzi od 1 do p zmiennych predykcyjnych i λ ≥ 0.

Ten drugi człon równania nazywany jest karą za wycofanie . W regresji grzbietowej wybieramy wartość λ, która daje najniższy możliwy test MSE (średni błąd kwadratowy).

Ten samouczek zawiera przykład krok po kroku wykonywania regresji grzbietu w języku Python.

Krok 1: Zaimportuj niezbędne pakiety

Najpierw zaimportujemy niezbędne pakiety, aby wykonać regresję grzbietową w Pythonie:

 import pandas as pd
from numpy import arange
from sklearn. linear_model import Ridge
from sklearn. linear_model import RidgeCV
from sklearn. model_selection import RepeatedKFold

Krok 2: Załaduj dane

W tym przykładzie użyjemy zbioru danych o nazwie mtcars , który zawiera informacje o 33 różnych samochodach. Użyjemy hp jako zmiennej odpowiedzi i następujących zmiennych jako predyktorów:

  • mpg
  • waga
  • gówno
  • sek

Poniższy kod pokazuje, jak załadować i wyświetlić ten zestaw danych:

 #define URL where data is located
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/mtcars.csv"

#read in data
data_full = pd. read_csv (url)

#select subset of data
data = data_full[["mpg", "wt", "drat", "qsec", "hp"]]

#view first six rows of data
data[0:6]

	mpg wt drat qsec hp
0 21.0 2.620 3.90 16.46 110
1 21.0 2.875 3.90 17.02 110
2 22.8 2.320 3.85 18.61 93
3 21.4 3.215 3.08 19.44 110
4 18.7 3,440 3.15 17.02 175
5 18.1 3.460 2.76 20.22 105

Krok 3: Dopasuj model regresji grzbietu

Następnie użyjemy funkcji RidgeCV() sklearna do dopasowania modelu regresji grzbietu i funkcji RepeatedKFold() do przeprowadzenia k-krotnej walidacji krzyżowej w celu znalezienia optymalnej wartości alfa do zastosowania dla składnika kary.

Uwaga: w Pythonie zamiast słowa „lambda” używany jest termin „alfa”.

W tym przykładzie wybierzemy k = 10 krotności i powtórzymy proces weryfikacji krzyżowej 3 razy.

Należy również pamiętać, że RidgeCV() domyślnie testuje tylko wartości alfa 0,1, 1 i 10. Możemy jednak ustawić własny zakres alfa od 0 do 1 w przyrostach co 0,01:

 #define predictor and response variables
X = data[["mpg", "wt", "drat", "qsec"]]
y = data["hp"]

#define cross-validation method to evaluate model
cv = RepeatedKFold(n_splits= 10 , n_repeats= 3 , random_state= 1 )

#define model
model = RidgeCV(alphas= arange (0, 1, 0.01), cv=cv, scoring=' neg_mean_absolute_error ')

#fit model
model. fit (x,y)

#display lambda that produced the lowest test MSE
print( model.alpha_ )

0.99

Wartość lambda minimalizująca MSE testu okazuje się wynosić 0,99 .

Krok 4: Użyj modelu do przewidywania

Wreszcie możemy użyć ostatecznego modelu regresji grzbietu, aby przewidzieć nowe obserwacje. Na przykład poniższy kod pokazuje, jak zdefiniować nowy samochód z następującymi atrybutami:

  • mpg: 24
  • waga: 2,5
  • cena: 3,5
  • sek.: 18,5

Poniższy kod pokazuje, jak używać dopasowanego modelu regresji grzbietu do przewidywania wartości HP tej nowej obserwacji:

 #define new observation
new = [24, 2.5, 3.5, 18.5]

#predict hp value using ridge regression model
model. predict ([new])

array([104.16398018])

Na podstawie wprowadzonych wartości model przewiduje, że ten samochód będzie miał wartość KM wynoszącą 104,16398018 .

Pełny kod Pythona użyty w tym przykładzie znajdziesz tutaj .

Dodaj komentarz

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