Hyperparametrit: valitse, miten oppiminen tapahtuu
Hyperparametri (hyperparameter) ohjaa mallia tai koulutusmenettelyä sen sijaan, että tavallinen parametripäivitys sovittaisi sen. Esimerkkejä ovat oppimisnopeus, kerroksen leveys ja painojen vaimennus. Osa asetuksista muuttuu koulutuksen aikana valitun aikataulun mukaan.
Ero liittyy menettelyyn: ulompi optimointi voi etsiä hyperparametreja samalla kun sisempi oppii painot.
Etsi mielekkäältä alueelta
Scikit-learn-esimerkki valitsee ridge-regression regularisointia generoidulla regressioaineistolla. Satunnaishaku poimii arvoja jatkuvalta logaritmiselta alueelta eikä käytä yhtä paljon yrityksiä jokaiseen desimaaliväliin.
from scipy.stats import loguniform
from sklearn.datasets import make_regression
from sklearn.linear_model import Ridge
from sklearn.model_selection import RandomizedSearchCV
features, targets = make_regression(n_samples=300, n_features=12, noise=10, random_state=7)
search = RandomizedSearchCV(
Ridge(), {"alpha": loguniform(1e-4, 1e3)},
n_iter=20, cv=5, scoring="neg_mean_squared_error", random_state=7,
)
search.fit(features, targets)
model = search.best_estimator_
search.best_estimator_ sovitetaan uudelleen kaikkiin annettuihin koulutusriveihin, kun ristiinvalidointi on valinnut asetuksen. Arvioi se erillisellä testiaineistolla: voittavaa ristiinvalidointitulosta käytettiin jo valintaan.
Satunnaishaku on hyödyllinen, jos vain osa asetuksista vaikuttaa tulokseen voimakkaasti. Lisäyritykset maksavat silti laskentaa, ja monen ehdokkaan vertailu helpottaa sattumalta hyvän validointituloksen löytämistä.