[PYTHON] Journal d'enquête sur la façon d'optimiser les hyperparamètres LightGBM à l'aide d'Optuna

introduction

Récemment, j'étudie l'apprentissage automatique avec Jupyter Lab. Parmi eux, j'ai pensé écrire un article sur la recherche d'Optuna sur l'optimisation des hyperparamètres LightGBM, qui avait un ancien résultat de recherche sur Google.

environnement

Ce que j'ai fait

Premier résumé approximatif

--Je souhaite optimiser les paramètres Piper de LightGBM avec Optuna. ――Cela ne fonctionne pas bien même si je copie le code qui est sorti par google ――On dit qu'il n'y a pas d'argument car c'est best_params. --Appliquer le document officiel --Essayez l'exemple de document officiel → Cela fonctionne --Vérifiez les échantillons passés de Github et confirmez qu'il y a best_params à partir de la version 1.3 Il semble que ce ne sera pas la version 1.4 ou ultérieure ――Si vous avez un problème, lisez le document officiel. ――Si le comportement est différent des informations sur le net, c'est une bonne idée de vérifier la version de la bibliothèque.

Je souhaite optimiser les hyper paramètres LightGBM avec Optuna

C'est la première chose qui est ressortie lorsque j'ai essayé Google Optimisation automatique des hyperparamètres par l'extension Optuna LightGBM Tuner Voici un extrait du code sur la page ci-dessus

booster = lgb.train(params, dtrain, valid_sets=dval,
                    verbose_eval=0,
                    best_params=best_params,
                    tuning_history=tuning_history)

Lorsque j'ai essayé ce qui précède, j'ai eu l'erreur suivante. TypeError: __init__() got an unexpected keyword argument 'best_params'

HM. Il n'y a pas d'argument de mot-clé pour best_params. Est dit être.

Confirmation de document officiel

Je me suis demandé si les différents arguments signifiaient des versions différentes, j'ai donc décidé de vérifier la documentation officielle. Optuna Il y avait un lien vers Github, alors j'y ai déménagé optuna/optuna

Essayez l'exemple de documentation officielle → fonctionne

Recherchez dans le référentiel avec lightgbm sur optuna / optuna Résultats de la recherche dans le référentiel

En regardant les résultats de la recherche, j'ai trouvé que examples / README.md était comme un échantillon. Confirme-le.

examples/lightgbm_tuner_simple.py

    #Certains sauts de ligne sont utilisés pour faciliter la comparaison des sources de citations
    model = lgb.train(
        params, dtrain, valid_sets=[dtrain, dval], 
        verbose_eval=100, 
        early_stopping_rounds=100
    )

Il n'y a pas de best_params ici, donc la version actuelle ressemble à ceci. Je l'ai essayé ci-dessus et cela a fonctionné! Je l'ai fait.

Au fait, lorsque j'ai vérifié, il y avait best_params jusqu'à v1.3.0, et [v1.4.0](https :: De //github.com/optuna/optuna/blob/v1.4.0/examples/lightgbm_tuner_simple.py), il n'y avait pas de best_params.

Solution et impression

En fait, j'ai vérifié des pages autres que celles ci-dessus, mais j'ai omis celles qui n'ont produit aucun résultat (ou plutôt, j'ai oublié) Lorsque l'enquête et la résolution de tels problèmes et erreurs ne produisent pas de résultats, cela ne sort pas du tout. Il est difficile d'obtenir des résultats. Dans un tel cas, il est recommandé de changer de jour ou de consulter légèrement d'autres personnes, car vous pourrez voir le mode de vie de manière inattendue.

Résumé

Si le résultat de Google ne fonctionne pas, cela est souvent dû à un environnement ou une version différent. Si les spécifications et les exemples sont accessibles au public, il s'agit souvent d'un raccourci pour résoudre le problème en se référant à la documentation officielle et à Github. (Bien que cette heure soit différente) Il est également important de vérifier le contenu du message d'erreur et d'effectuer une recherche par message. Si le nombre d'arguments ou les arguments eux-mêmes sont différents, la version sera probablement différente. Si vous ne trouvez pas de solution, il est important d'en parler à quelqu'un d'autre ou de changer la date.

Recommended Posts

Journal d'enquête sur la façon d'optimiser les hyperparamètres LightGBM à l'aide d'Optuna
Comment configurer SVM à l'aide d'Optuna
Comment configurer XG Boost à l'aide d'Optuna
Comment configurer une forêt aléatoire à l'aide d'Optuna
Comment modifier le niveau de journalisation d'Azure SDK pour Python
ABC170 E - Comment résoudre sans utiliser le multiset de Smart Infants
Comment enregistrer une partie d'une longue vidéo en utilisant OpenCV
Résumé de l'utilisation de pandas.DataFrame.loc
Résumé de l'utilisation de pyenv-virtualenv
Résumé de l'utilisation de csvkit
Comment se connecter à Docker + NGINX
Optimisez RF ou LightGBM avec Optuna
Comment tester chaque version d'IE en utilisant Selenium avec modan.IE (VM)
Comment connaître le nombre de processeurs sans utiliser la commande sar
[Python] Résumé de l'utilisation des pandas
Comment définir optuna (comment écrire un espace de recherche)
Comment se débarrasser des longues inclusions
Comment vérifier la version de Django
Comment dessiner un graphique avec Matplotlib
Comment installer CatBoost [à partir de janvier 2020]
Comment calculer Utiliser% de la commande df
Comment installer un package à l'aide d'un référentiel
Connectez-vous à Slack à l'aide de requêtes en Python
[Python2.7] Résumé de l'utilisation d'unittest
Jupyter Notebook Principes d'utilisation
Bases de PyTorch (1) -Comment utiliser Tensor-
Comment télécharger des vidéos YouTube à l'aide de pytube3
Résumé de l'utilisation de la liste Python
Résumé de l'écriture d'AWS Lambda
[Question] Comment utiliser plot_surface de python
[Circuit x Python] Comment trouver la fonction de transfert d'un circuit en utilisant Lcapy
Comment créer un environnement pour utiliser plusieurs versions de Python sur un Mac