- Explaining How To Obtain Optimal Hyperparameter Values
- What Is A Hyperparameter?
- Czym jest wyszukiwanie siatkowe?
- Wdrożenie w Pythonie
- Instalujemy bibliotekę sklearn
- Importujemy bibliotekę sklearn
- Importujemy swój model
- Tworzymy listę słownika hiperparametrów
- Instantujemy GridSearchCV i przekazujemy parametry
- Na koniec wypisz najlepsze parametry:
- Podsumowanie
Explaining How To Obtain Optimal Hyperparameter Values
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.
Dla uproszczenia, możemy podzielić analityczne aspekty projektu data science na trzy części:
- 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:
- C: Jest to parametr regularyzacji
- Jądro: Możemy ustawić parametr jądra na linear, poly, rbf, sigmoid, precomputed lub podać własny callable.
- Stopień: Możemy przekazać niestandardowy stopień w celu wsparcia parametru jądra poly.
- Gamma: Jest to współczynnik dla parametru jądra rbf, poly i sigmoid.
- 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.
.