Co to jest przeszukiwanie siatki?

Explaining How To Obtain Optimal Hyperparameter Values

Farhad Malik
Farhad Malik

Follow

Feb 18, 2020 – 4 min read

Ten artykuł ma na celu wyjaśnienie czym jest przeszukiwanie siatki i jak możemy je wykorzystać do uzyskania optymalnych wartości hiperparametrów modelu.

Wyjaśnię wszystkie wymagane koncepcje w prostych słowach wraz z nakreśleniem, jak możemy zaimplementować wyszukiwanie siatkowe w Pythonie.

Photo by Evgeni Tcherkasski on Unsplash

Dla uproszczenia, możemy podzielić analityczne aspekty projektu data science na trzy części:

  1. Pierwsza część polegałaby na zbieraniu potrzebnych danych i inżynierii funkcji.

2. Druga część będzie się kręcić wokół wyboru odpowiedniego modelu uczenia maszynowego.

3. Ostatnia część będzie się kręcić wokół znalezienia optymalnych hiperparametrów.

Zrozummy lepiej trzecią część, ponieważ nie tylko dostrajanie hiperparametrów jest uważane za czarną sztukę, jest to również żmudne zadanie i wymaga czasu i wysiłku.

Ten artykuł ma na celu wyjaśnienie, czym jest wyszukiwanie siatkowe i jak możemy go użyć, aby uzyskać optymalne wartości hiperparametrów modelu.

To właśnie tutaj wyszukiwanie siatkowe może być niezwykle pomocne, ponieważ może pomóc nam określić optymalne wartości w elegancki sposób.

What Is A Hyperparameter?

Model uczenia maszynowego ma wiele parametrów, które nie są trenowane przez zestaw treningowy. Parametry te kontrolują dokładność modelu. Dlatego hiperparametry są szczególnie ważne w projekcie data science.

Hiperparametry są konfigurowane z góry i są dostarczane przez wywołującego model, zanim model zostanie wytrenowany.

Jako przykład, szybkość uczenia się sieci neuronowej jest hiperparametrem, ponieważ jest ustawiana przez wywołującego zanim dane treningowe są podawane do modelu. Z drugiej strony, wagi sieci neuronowej nie są jej hiperparametrami, ponieważ są trenowane przez zbiór danych treningowych.

Ponadto, rozważ model klasyfikacji wektorów wspierających (SVC), który jest używany do klasyfikowania zbiorów danych. Istnieje pewna liczba hiperparametrów, których wymaga ten model.

W konsekwencji, biblioteka scikit-learn w wersji SVC może być skonfigurowana z dużą liczbą hiperparametrów, niektóre z popularnych parametrów to:

  1. C: Jest to parametr regularyzacji
  2. Jądro: Możemy ustawić parametr jądra na linear, poly, rbf, sigmoid, precomputed lub podać własny callable.
  3. Stopień: Możemy przekazać niestandardowy stopień w celu wsparcia parametru jądra poly.
  4. Gamma: Jest to współczynnik dla parametru jądra rbf, poly i sigmoid.
  5. Max_Iter: Jest to maksymalna liczba iteracji dla solvera.

Zastanówmy się, że chcemy użyć modelu SVC (z jakiegokolwiek powodu). Wyznaczenie optymalnych wartości hiperparametrów może być trudne i wymagające zasobów. Wyobraźmy sobie, ile permutacji musimy wykonać, aby określić najlepsze wartości parametrów.

W tym miejscu z pomocą przychodzi wyszukiwanie siatkowe.

Czym jest wyszukiwanie siatkowe?

Wyszukiwanie siatkowe jest techniką dostrajania, która próbuje obliczyć optymalne wartości hiperparametrów. Jest to wyczerpujące wyszukiwanie, które jest wykonywane na określonych wartościach parametrów modelu. Model ten znany jest również jako estymator.

Przeszukiwanie siatki może zaoszczędzić nam czas, wysiłek i zasoby.

Wdrożenie w Pythonie

Możemy wykorzystać wyszukiwanie siatkowe w Pythonie, wykonując następujące kroki:

Instalujemy bibliotekę sklearn

pip install sklearn

Importujemy bibliotekę sklearn

from sklearn.model_selection import GridSearchCV

Importujemy swój model

from sklearn.svm import SVC

Tworzymy listę słownika hiperparametrów

To jest kluczowy krok.

Zważmy, że chcemy znaleźć optymalne wartości hiperparametrów dla:

  • kernal: Chcemy, aby model trenował się na następujących jądrach i dał nam najlepszą wartość wśród wartości liniowych, poly, rbf, sigmoid i wstępnie obliczonych
  • C: Chcemy, aby model wypróbował następujące wartości C:
  • max_iter: chcemy, aby model użył następujących wartości max_iter: i dał nam najlepszą wartość.

Możemy utworzyć wymagany słownik:

parameters = , 
'C': ,
'max_iter': }]

Instantujemy GridSearchCV i przekazujemy parametry

clf = GridSearchCV(
SVC(), parameters, scoring='accuracy'
)
clf.fit(X_train, y_train)

Uwaga: zdecydowaliśmy się użyć miary punktowej precyzji do oceny wydajności.

Na koniec wypisz najlepsze parametry:

print(clf.best_params_)

To wszystko.

Zostaną nam teraz przedstawione optymalne wartości hiperparametrów.

Wybrane parametry to te, które zmaksymalizowały wynik precyzji.

Podsumowanie

W tym artykule wyjaśniono, jak wykorzystać Grid Search do uzyskania optymalnych hiperparametrów dla modelu uczenia maszynowego.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.