Scikit Learn - Rozszerzone modelowanie liniowe

Ten rozdział koncentruje się na elementach wielomianowych i narzędziach do tworzenia potoków w Sklearn.

Wprowadzenie do funkcji wielomianowych

Modele liniowe wytrenowane na nieliniowych funkcjach danych generalnie zapewniają szybkie działanie metod liniowych. Pozwala im również dopasować znacznie szerszy zakres danych. Z tego powodu w uczeniu maszynowym używane są takie modele liniowe, które uczą się funkcji nieliniowych.

Jednym z takich przykładów jest to, że prostą regresję liniową można rozszerzyć, konstruując cechy wielomianowe ze współczynników.

Matematycznie załóżmy, że mamy standardowy model regresji liniowej, a dla danych 2-D wyglądałoby to tak:

$$ Y = W_ {0} + W_ {1} X_ {1} + W_ {2} X_ {2} $$

Teraz możemy łączyć cechy w wielomiany drugiego rzędu, a nasz model będzie wyglądał następująco -

$$ Y = W_ {0} + W_ {1} X_ {1} + W_ {2} X_ {2} + W_ {3} X_ {1} X_ {2} + W_ {4} X_1 ^ 2 + W_ { 5} X_2 ^ 2 $$

Powyższe jest nadal modelem liniowym. Tutaj widzieliśmy, że wynikowa regresja wielomianowa należy do tej samej klasy modeli liniowych i można ją rozwiązać w podobny sposób.

Aby to zrobić, scikit-learn udostępnia moduł o nazwie PolynomialFeatures. Moduł ten przekształca macierz danych wejściowych w nową macierz danych danego stopnia.

Parametry

Poniższa tabela zawiera parametry używane przez PolynomialFeatures moduł

Sr.No Parametr i opis
1

degree - liczba całkowita, domyślnie = 2

Przedstawia stopień cech wielomianowych.

2

interaction_only - Boolean, domyślnie = false

Domyślnie jest to fałsz, ale jeśli jest ustawiona jako prawda, tworzone są funkcje, które są produktami o większości różnych cech wejściowych. Takie funkcje nazywane są funkcjami interakcji.

3

include_bias - Boolean, default = true

Zawiera kolumnę odchylenia, czyli cechę, w której wszystkie potęgi wielomianów są zerowe.

4

order - str w {'C', 'F'}, domyślnie = 'C'

Ten parametr reprezentuje kolejność tablicy wyjściowej w gęstym przypadku. Rząd „F” oznacza szybsze obliczenie, ale z drugiej strony może spowolnić kolejne estymatory.

Atrybuty

Poniższa tabela zawiera atrybuty używane przez PolynomialFeatures moduł

Sr.No Atrybuty i opis
1

powers_ - tablica, kształt (n_output_features, n_input_features)

Pokazuje, że potęgi_ [i, j] są wykładnikiem j-tego wejścia w i-tym wyjściu.

2

n_input_features _ - wew

Jak sama nazwa wskazuje, podaje całkowitą liczbę funkcji wejściowych.

3

n_output_features _ - wew

Jak sama nazwa wskazuje, podaje całkowitą liczbę wielomianowych cech wyjściowych.

Przykład implementacji

Następujące użycie skryptu Pythona PolynomialFeatures transformator do przekształcenia macierzy 8 w kształt (4,2) -

from sklearn.preprocessing import PolynomialFeatures
import numpy as np
Y = np.arange(8).reshape(4, 2)
poly = PolynomialFeatures(degree=2)
poly.fit_transform(Y)

Wynik

array(
   [
      [ 1., 0., 1., 0., 0., 1.],
      [ 1., 2., 3., 4., 6., 9.],
      [ 1., 4., 5., 16., 20., 25.],
      [ 1., 6., 7., 36., 42., 49.]
   ]
)

Usprawnianie przy użyciu narzędzi Pipeline

Powyższy rodzaj przetwarzania wstępnego, tj. Przekształcenie macierzy danych wejściowych w nową macierz danych danego stopnia, można usprawnić za pomocą Pipeline narzędzia, które są zasadniczo używane do łączenia wielu estymatorów w jeden.

Przykład

Poniższe skrypty Pythona używają narzędzi Pipeline firmy Scikit-learn do usprawnienia wstępnego przetwarzania (będą pasować do danych wielomianu rzędu 3).

#First, import the necessary packages.
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import Pipeline
import numpy as np

#Next, create an object of Pipeline tool
Stream_model = Pipeline([('poly', PolynomialFeatures(degree=3)), ('linear', LinearRegression(fit_intercept=False))])

#Provide the size of array and order of polynomial data to fit the model.
x = np.arange(5)
y = 3 - 2 * x + x ** 2 - x ** 3
Stream_model = model.fit(x[:, np.newaxis], y)

#Calculate the input polynomial coefficients.
Stream_model.named_steps['linear'].coef_

Wynik

array([ 3., -2., 1., -1.])

Powyższe dane wyjściowe pokazują, że model liniowy wytrenowany na cechach wielomianów jest w stanie odtworzyć dokładne współczynniki wielomianu wejściowego.