Poprawianie wydajności modelu ML (ciąg dalszy…)
Poprawa wydajności dzięki dostrajaniu algorytmu
Jak wiemy, modele ML są sparametryzowane w taki sposób, że ich zachowanie można dostosować do konkretnego problemu. Strojenie algorytmu oznacza znalezienie najlepszej kombinacji tych parametrów, tak aby można było poprawić wydajność modelu ML. Proces ten czasami nazywany jest optymalizacją hiperparametrów, a parametry samego algorytmu nazywane są hiperparametrami, a współczynniki znalezione przez algorytm ML nazywane są parametrami.
W tym miejscu omówimy niektóre metody dostrajania parametrów algorytmu udostępniane przez Python Scikit-learn.
Dostrajanie parametrów wyszukiwania siatki
Jest to podejście do strojenia parametrów. Kluczowym punktem pracy tej metody jest to, że buduje i ocenia model metodycznie dla każdej możliwej kombinacji parametrów algorytmu określonych w siatce. Stąd możemy powiedzieć, że ten algorytm ma charakter przeszukiwania.
Example
W poniższym przepisie Pythona zamierzamy przeprowadzić wyszukiwanie w siatce przy użyciu klasy sklearn GridSearchCV do oceny różnych wartości alfa dla algorytmu Ridge Regression na zbiorze danych dotyczących cukrzycy Indian Pima.
Najpierw zaimportuj wymagane pakiety w następujący sposób -
import numpy
from pandas import read_csv
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV
Teraz musimy załadować zestaw danych dotyczących cukrzycy Pima, tak jak w poprzednich przykładach -
path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]
Następnie oceń różne wartości alfa w następujący sposób -
alphas = numpy.array([1,0.1,0.01,0.001,0.0001,0])
param_grid = dict(alpha=alphas)
Teraz musimy zastosować wyszukiwanie siatki w naszym modelu -
model = Ridge()
grid = GridSearchCV(estimator=model, param_grid=param_grid)
grid.fit(X, Y)
Wydrukuj wynik za pomocą następującej linii skryptu -
print(grid.best_score_)
print(grid.best_estimator_.alpha)
Output
0.2796175593129722
1.0
Powyższe dane wyjściowe dają nam optymalny wynik i zestaw parametrów w siatce, które osiągnęły ten wynik. Wartość alfa w tym przypadku wynosi 1,0.
Losowe dostrajanie parametrów wyszukiwania
Jest to podejście do strojenia parametrów. Kluczowym punktem działania tej metody jest próbkowanie parametrów algorytmu z losowego rozkładu dla ustalonej liczby iteracji.
Example
W poniższym przepisie Pythona zamierzamy przeprowadzić losowe wyszukiwanie przy użyciu klasy sklearn RandomizedSearchCV do oceny różnych wartości alfa z zakresu od 0 do 1 dla algorytmu Ridge Regression w zbiorze danych dotyczących cukrzycy Indian Pima.
Najpierw zaimportuj wymagane pakiety w następujący sposób -
import numpy
from pandas import read_csv
from scipy.stats import uniform
from sklearn.linear_model import Ridge
from sklearn.model_selection import RandomizedSearchCV
Teraz musimy załadować zestaw danych dotyczących cukrzycy Pima, tak jak w poprzednich przykładach -
path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]
Następnie oceń różne wartości alfa w algorytmie regresji Ridge w następujący sposób -
param_grid = {'alpha': uniform()}
model = Ridge()
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_grid, n_iter=50,
random_state=7)
random_search.fit(X, Y)
Wydrukuj wynik za pomocą następującej linii skryptu -
print(random_search.best_score_)
print(random_search.best_estimator_.alpha)
Output
0.27961712703051084
0.9779895119966027
Powyższe dane wyjściowe dają nam optymalny wynik, podobny do wyszukiwania w siatce.