Ajustement des hyperparamètres en Python
Alex Scriven
Data Scientist
Très proche de la recherche par grille :
MAIS on choisit plutôt des cases de la grille au hasard.
Bengio et Bergstra (2012) :
Cet article montre, empiriquement et théoriquement, que des essais choisis au hasard sont plus efficaces pour l'optimisation d'hyperparamètres que des essais sur une grille.
Deux raisons principales :
Une recherche par grille :

Combien de modèles faut-il exécuter pour avoir 95 % de chances d'obtenir l'une des cases vertes ?
Nos meilleurs modèles :

Si nous choisissons uniformément des combinaisons d'hyperparamètres au hasard, évaluons la probabilité de MANQUER chaque essai, pour montrer à quel point c'est improbable
Essai 1 = 0,05 de réussite et (1 − 0,05) de l manquer
En fait, avec n essais, on a (1−0,05)^n de chance que chaque essai manque la zone visée.
Combien d'essais pour avoir une forte (95 %) probabilité d'entrer dans cette région ?
Qu'est-ce que ça implique ?
Rappel :
Le maximum reste limité par la grille que vous définissez !
Pour comparer équitablement à la recherche par grille, utilisez le même « budget » de modélisation.
On peut créer notre propre échantillon aléatoire de combinaisons d'hyperparamètres :
# Set some hyperparameter lists
learn_rate_list = np.linspace(0.001,2,150)
min_samples_leaf_list = list(range(1,51))
# Create list of combinations
from itertools import product
combinations_list = [list(x) for x in
product(learn_rate_list, min_samples_leaf_list)]
# Select 100 models from our larger set
random_combinations_index = np.random.choice(
range(0,len(combinations_list)), 100,
replace=False)
combinations_random_chosen = [combinations_list[x] for x in
random_combinations_index]
On peut aussi visualiser la couverture d'une recherche aléatoire en traçant les choix d'hyperparamètres sur les axes X et Y.

Voyez la grande dispersion, mais une couverture peu profonde ?
Ajustement des hyperparamètres en Python