Le réglage des hyperparamètres est une technique utilisée pour améliorer la précision du modèle. Si vous créez un modèle avec scikit-learn et ne définissez pas de paramètres, il sera défini avec la complexité appropriée.
C'est un paramètre qui est spécifié avant l'entraînement et qui détermine la méthode d'entraînement, la vitesse et la complexité du modèle.
Source: http://www.jmlr.org/papers/volume13/bergstra12a/bergstra12a.pdf
C'est une méthode pour décider des candidats pour chaque paramètre et essayer toutes les combinaisons d'entre eux. Comme tous sont essayés, il n'est pas possible d'augmenter le nombre de paramètres candidats.
C'est une méthode pour choisir les candidats pour chaque paramètre et répéter une combinaison aléatoire de paramètres n fois. Il peut ne pas être possible de rechercher une meilleure combinaison de paramètres car nous ne les essayons pas tous.
import numpy as np
params_list01 = [1, 3, 5, 7]
params_list02 = [1, 2, 3, 4, 5]
#Recherche de grille
grid_search_params = []
for p1 in params_list01:
for p2 in params_list02:
grid_search_params.append(p1, p2)
# append():Ajouter un élément à la fin de la liste
#Recherche aléatoire
random_search_params = []
count = 10
for i in range(count):
p1 = np.random.choice(params_list01) # random.choice():Obtenez le contenu du tableau au hasard
p2 = np.random.choice(params_list02)
random_search_params.append(p1, p2)
scikit-learn
Cliquez ici pour une référence à scikit-learn
from sklearn.model_selection import GridSearchCV, RandomizedSearchCV
params = {
"max_depth": [2, 4, 6, 8, None],
"n_estimators": [50,100,200,300,400,500],
"max_features": range(1, 11),
"min_samples_split": range(2, 11),
"min_samples_leaf": range(1, 11)
}
#Recherche de grille
gscv = GridSearchCV(RandomForestRegressor(), params, cv=3, n_jobs=-1, verbose=1)
gscv.fit(X_train_valid, y_train_valid)
print("Best score: {}".format(gscv.best_score_))
print("Best parameters: {}".format(gscv.best_params_))
#Recherche aléatoire
rscv = RandomizedSearchCV(RandomForestRegressor(), params, cv=3, n_iter=10, n_jobs=-1, verbose=1)
rscv.fit(X_train_valid, y_train_valid)
print("Best score: {}".format(rscv.best_score_))
print("Best parameters: {}".format(rscv.best_params_))
Lorsqu'on demande lequel adopter, une recherche aléatoire est effectuée, il semble qu'une bonne combinaison de paramètres puisse être trouvée efficacement.
Livre: Technologie d'analyse de données qui gagne avec Kaggle (Revue technique)
Recommended Posts