[PYTHON] [Français] scikit-learn 0.18 Guide de l'utilisateur 3.2. Réglage des hyper paramètres de l'estimateur

google traduit http://scikit-learn.org/0.18/modules/grid_search.html [scikit-learn 0.18 Guide de l'utilisateur 3. Sélection et évaluation du modèle](http://qiita.com/nazoking@github/items/267f2371757516f8c168#3-%E3%83%A2%E3%83%87%E3%83] À partir de% AB% E3% 81% AE% E9% 81% B8% E6% 8A% 9E% E3% 81% A8% E8% A9% 95% E4% BE% A1)


3.2. Réglage des hyperparamètres de l'estimateur

Les hyperparamètres sont des paramètres de l'estimateur qui ne sont pas directement entraînés. Dans scikit-learn, ils sont passés comme arguments au constructeur de la classe d'estimateur. Des exemples typiques sont les classificateurs de vecteurs de support "C", "noyau", "gamma" et LASSO "alpha". Il est possible et recommandé de rechercher l'espace des hyperparamètres avec un score de Validation croisée optimale: Résultats de l'estimateur (http://qiita.com/nazoking@github/items/13b167283590f512d99a). Tous les paramètres qui composent l'estimateur peuvent être optimisés de cette manière. Plus précisément, pour trouver les noms et les valeurs courantes de tous les paramètres d'un estimateur donné:

estimator.get_params()

La recherche ressemble à ceci:

--Estimator (variable indépendante ou classifieur comme sklearn.svm.SVC ()) --Espace paramètres

Certains modèles permettent les stratégies spéciales et efficaces d'extraction de paramètres décrites ci-dessous. GridSearchCV combine parfaitement tous les paramètres de la valeur spécifiée. RandomizedSearchCV est donné à partir de l'espace de paramètres avec la distribution spécifiée. Vous pouvez échantillonner le nombre de candidats. Après avoir expliqué ces outils, nous détaillons les meilleures pratiques qui peuvent être appliquées aux deux approches. Un petit sous-ensemble de ces paramètres peut avoir un impact significatif sur les performances prédictives ou de calcul du modèle, et il est courant que d'autres paramètres restent à leurs valeurs par défaut. Il est probablement conseillé de lire les références jointes à la littérature et de lire la documentation de la classe d'estimateur pour mieux comprendre le comportement attendu.

3.2.1. Recherche de grille complète

La recherche de grille fournie par GridSearchCV génère en profondeur des candidats à partir de la grille de valeurs de paramètres spécifiées par le paramètre param_grid. Par exemple, la suivante param_grid:

param_grid = [
  {'C': [1, 10, 100, 1000], 'kernel': ['linear']},
  {'C': [1, 10, 100, 1000], 'gamma': [0.001, 0.0001], 'kernel': ['rbf']},
 ]

Valeur C de [1, 10, 100, 1000] avec noyau linéaire, deux grilles avec noyau RBF et produit externe de la valeur C avec [1, 10, 100, 1000], valeur «gamma» [0,001, 0,0001] y a-t-il. L'instance GridSearchCV implémente l'API d'estimation régulière. Lorsque vous «insérez» dans un ensemble de données, toutes les combinaisons possibles de valeurs de paramètres sont évaluées et la meilleure combinaison est préservée.

--Exemple: --Pour un exemple de calcul de la recherche de grille pour l'ensemble de données de chiffres, [Estimation de paramètre à l'aide de la recherche de grille avec vérification mutuelle](http://scikit-learn.org/0.18/auto_examples/model_selection/grid_search_digits.html#sphx-glr- Voir auto-examples-model-selection-grid-search-digits-py). --Grider les paramètres pour les extracteurs de caractéristiques de document texte (vectoriseurs de nombre de n grammes et convertisseurs TF-IDF) et les classificateurs (SVM linéaire formé par SGD ou pénalités L2) à l'aide du pipeline ・ Un exemple de recherche est "[Exemple de pipeline d'extraction et d'évaluation de caractéristiques de texte](http://scikit-learn.org/0.18/auto_examples/model_selection/grid_search_text_feature_extraction.html#sphx-glr-auto-examples-model] -selection-grid-search-text-feature-extraction-py) ". --Pour un exemple de recherche de grille dans une boucle de validation croisée d'un ensemble de données iris, voir Validation mutuelle imbriquée ou non imbriquée (http://scikit-learn.org/0.18/auto_examples/model_selection/plot_nested_cross_validation_iris.html#sphx Voir -glr-auto-examples-model-selection-plot-nested-cross-validation-iris-py). Il s'agit d'une bonne pratique pour évaluer les performances du modèle à l'aide de la recherche de grille.

3.2.2. Optimisation des paramètres aléatoires

L'utilisation d'une grille de réglages de paramètres est actuellement la méthode la plus utilisée pour l'optimisation des paramètres, mais d'autres méthodes de recherche ont des caractéristiques plus favorables. RandomizedSearchCV implémente une recherche aléatoire pour chaque paramètre. Chaque paramètre est échantillonné à partir d'une distribution pour les valeurs de paramètre possibles. Cela présente deux avantages principaux par rapport à la recherche complète.

--Le budget peut être sélectionné quel que soit le nombre de paramètres et les valeurs possibles.

Utilisez un dictionnaire pour spécifier comment les paramètres sont échantillonnés. Ceci est très similaire à la spécification des paramètres GridSearchCV. De plus, le budget calculé, qui est le nombre d'échantillons échantillonnés ou le nombre d'itérations d'échantillonnage, est spécifié à l'aide du paramètre «n_iter». Pour chaque paramètre, vous pouvez spécifier une distribution des valeurs possibles ou une liste de choix discrets (échantillonnés uniformément).

{'C': scipy.stats.expon(scale=100), 'gamma': scipy.stats.expon(scale=.1),
  'kernel': ['rbf'], 'class_weight':['balanced', None]}

Cet exemple utilise le module scipy.stats, qui contient de nombreuses distributions qui servent des paramètres d'échantillonnage tels que ʻexpon, gamma, ʻuniform ou randint. En règle générale, vous pouvez passer une fonction qui fournit une méthode rvs (random variate sample) pour échantillonner la valeur. Les appels à la fonction rvs doivent fournir un échantillon aléatoire indépendant des valeurs de paramètres possibles avec des appels continus.

** AVERTISSEMENT ** Vous ne pouvez pas spécifier un état aléatoire dans scipy.stats avant scipy 0.16. À la place, utilisez un état aléatoire numpy global qui peut être amorcé via np.random.seed ou défini à l'aide de np.random.set_state. Cependant, lorsque scikit-learn 0.18 est démarré, le module scley.model_selection peut également utiliser scipy> = 0.16 Si, définit un état aléatoire fourni par l'utilisateur.

Pour les paramètres continus comme «C» ci-dessus, il est important de spécifier une distribution continue pour tirer pleinement parti de la randomisation. De cette façon, augmenter n_iter entraînera toujours une recherche plus fine.

--Exemple:

3.2.3. Conseils pour la recherche de paramètres

3.2.3.1. Spécification des paramètres objectifs

Par défaut, la recherche de paramètres utilise la fonction score de l'estimateur pour évaluer les réglages des paramètres. Ce sont [sklearn.metrics.accuracy_score] pour la classification (http://scikit-learn.org/0.18/modules/generated/sklearn.metrics.accuracy_score.html#sklearn.metrics.accuracy_score) et pour la régression. Il existe sklearn.metrics.r2_score. D'autres fonctionnalités de notation conviennent mieux à certaines applications (par exemple, les scores de précision sont souvent inutiles pour les classifications disproportionnées). Vous pouvez spécifier différentes fonctions de notation à l'aide de GridSearchCV, RandomizedSearchCV et du paramètre scoring de l'outil spécial de validation croisée décrit ci-dessous. Pour plus d'informations, voir Paramètres de notation: définition des règles d'évaluation du modèle (http://qiita.com/nazoking@github/items/958426da6448d74279c7#331-%E5%BE%97%E7%82%B9%E3% 83% 91% E3% 83% A9% E3% 83% A1% E3% 83% BC% E3% 82% BF% E3% 83% A2% E3% 83% 87% E3% 83% AB% E8% A9% Voir 95% E4% BE% A1% E3% 83% AB% E3% 83% BC% E3% 83% AB% E3% 81% AE% E5% AE% 9A% E7% BE% A9).

3.2.3.2. Estimateur synthétique et espace des paramètres

[Pipeline: Chain Estimate](http://qiita.com/nazoking@github/items/fdfd207b3127d6d026e0#411-%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9 % E3% 82% A4% E3% 83% B3% E9% 80% A3% E9% 8E% 96% E6% 8E% A8% E5% AE% 9A) est une estimation synthétique qui vous permet de rechercher l'espace des paramètres avec ces outils. Explique comment construire un navire.

3.2.3.3. Sélection du modèle: élaboration et évaluation

La sélection du modèle en évaluant différents réglages de paramètres peut être considérée comme un moyen d'utiliser des données étiquetées pour «former» les paramètres de la grille. Lors de l'évaluation du modèle résultant, il est important d'évaluer les échantillons qui n'ont pas été utilisés pendant le processus de recherche de grille. Nous vous recommandons de diviser les données en ** ensembles de développement ** (fournis aux instances GridSearchCV) et ** ensembles d'évaluation ** pour calculer les métriques de performances. Cela peut être fait en utilisant la fonction utilitaire train_test_split.

3.2.3.4. Parallèle

GridSearchCV et RandomizedSearchCV évaluent chaque paramètre individuellement. Si votre système d'exploitation le prend en charge, vous pouvez utiliser le mot-clé n_jobs = -1 pour effectuer des calculs en parallèle. Voir Signatures de fonction pour plus d'informations.

3.2.3.5. Robustesse au handicap

Certains réglages de paramètres peuvent provoquer une erreur dans fit. Par défaut, la recherche entière échouera, même si les autres réglages de paramètres peuvent être entièrement évalués. Si vous définissez ʻerror_score = 0` (ou = np.NaN), un avertissement sera émis et le score sera mis à 0 (ou NaN), mais la recherche sera terminée.

3.2.4. Alternative à la recherche de paramètres Brute Force

3.2.4.1. Validation mutuelle spécifique au modèle

Dans certains modèles, les données d'une plage de valeurs pour un paramètre peuvent être ajustées à une valeur unique pour ce paramètre aussi efficacement que l'ajustement d'un estimateur. Vous pouvez tirer parti de cette fonctionnalité pour effectuer une validation croisée plus efficace utilisée pour la sélection de modèle pour ce paramètre. Le paramètre le plus courant qui suit cette stratégie est le paramètre qui code la force du régulariseur. Dans ce cas, on dit qu'il calcule le ** chemin de normalisation ** de l'estimateur. Une liste de ces modèles peut être trouvée ici:

3.2.4.2. Normes d'information

Certains modèles peuvent fournir une forme fermée théorique de l'information d'estimations optimales des paramètres de régularisation (plutôt que quelques-unes lors de l'utilisation de tests croisés). Vous trouverez ci-dessous une liste de modèles qui ont bénéficié du critère d'information Aikike (AIC) ou du critère d'information bayésien (BIC) pour la sélection automatique des modèles.

3.2.4.3. Estimation des sacs

Lors de l'utilisation de la méthode d'ensemble basée sur l'ensachage, c'est-à-dire lors de la génération d'un nouvel ensemble d'apprentissage en utilisant l'échantillonnage avec substitution, une partie de l'ensemble d'apprentissage reste inutilisée. Pour chaque classificateur de l'ensemble, différentes parties de l'ensemble d'apprentissage sont exclues. Cette partie restante peut être utilisée pour estimer les erreurs de généralisation sans s'appuyer sur un ensemble distinct de validations. Cette estimation est «gratuite» car elle ne nécessite aucune donnée supplémentaire et peut être utilisée pour la sélection du modèle. Il est actuellement implémenté dans la classe suivante:


[scikit-learn 0.18 Guide de l'utilisateur 3. Sélection et évaluation du modèle](http://qiita.com/nazoking@github/items/267f2371757516f8c168#3-%E3%83%A2%E3%83%87%E3%83] À partir de% AB% E3% 81% AE% E9% 81% B8% E6% 8A% 9E% E3% 81% A8% E8% A9% 95% E4% BE% A1)

© 2010 --2016, développeurs scikit-learn (licence BSD).

Recommended Posts

[Français] scikit-learn 0.18 Guide de l'utilisateur 3.2. Réglage des hyper paramètres de l'estimateur
[Français] scikit-learn 0.18 Guide de l'utilisateur 3.1. Validation croisée: évaluer les performances de l'estimateur
[Français] scikit-learn 0.18 Guide de l'utilisateur Table des matières
[Français] scikit-learn 0.18 Guide de l'utilisateur 3.3. Évaluation du modèle: quantifier la qualité de la prédiction
[Français] scikit-learn 0.18 Guide de l'utilisateur 4.8. Convertir la cible de prédiction (y)
[Français] scikit-learn 0.18 Guide de l'utilisateur 2.7. Détection des nouveautés et des valeurs aberrantes
[Français] scikit-learn 0.18 Guide de l'utilisateur 4.5. Projection aléatoire
[Français] scikit-learn 0.18 Guide de l'utilisateur 1.11. Méthode Ensemble
[Français] scikit-learn 0.18 Guide de l'utilisateur 1.15. Régression isotonique
[Français] scikit-learn 0.18 Guide de l'utilisateur 4.2 Extraction de fonctionnalités
[Français] scikit-learn 0.18 Guide de l'utilisateur 1.16. Étalonnage des probabilités
[Français] scikit-learn 0.18 Guide de l'utilisateur 1.13 Sélection des fonctionnalités
[Français] scikit-learn 0.18 Guide de l'utilisateur 3.4. Persistance du modèle
[Français] scikit-learn 0.18 Guide de l'utilisateur 2.8. Estimation de la densité
[Français] scikit-learn 0.18 Guide de l'utilisateur 4.3. Prétraitement des données
[Français] scikit-learn 0.18 Guide de l'utilisateur 4.4. Réduction de dimension non supervisée
[Français] scikit-learn 0.18 Guide de l'utilisateur 1.4. Support Vector Machine
[Français] scikit-learn 0.18 Guide de l'utilisateur 4.1. Union des pipelines et des fonctionnalités: combinaison d'estimateurs
[Français] scikit-learn 0.18 Guide de l'utilisateur 3.5. Courbe de vérification: tracez le score pour évaluer le modèle
[Français] scikit-learn 0.18 Guide de l'utilisateur 2.5. Décomposer les signaux en composants (problème de décomposition de la matrice)
[Français] scikit-learn 0.18 Guide de l'utilisateur 1.12. Algorithme multi-classes et algorithme multi-étiquettes
Recherche en grille d'hyper paramètres avec Scikit-learn
Traduction japonaise du manuel e2fsprogs
[Français] Table des matières du didacticiel scikit-learn 0.18
Traduction japonaise du manuel man-db
Traduction japonaise du manuel util-linux
Traduction japonaise du manuel iproute2
Guide de l'utilisateur Pandas "fusionner et joindre et concaténer" (document officiel traduction japonaise)
Affinons les hyper paramètres du modèle avec scikit-learn!
[Français] Tutoriel scikit-learn 0.18 Choisir le bon modèle
Traduction japonaise: PEP 20 - Le Zen de Python
À propos de la vitesse de traitement de SVM (SVC) de scikit-learn
Prédisez le deuxième tour de l'été 2016 avec scikit-learn
[Français] scikit-learn 0.18 Introduction de l'apprentissage automatique par le didacticiel scikit-learn
[Français] didacticiel scikit-learn 0.18 Didacticiel d'apprentissage statistique pour le traitement des données scientifiques Apprentissage non supervisé: recherche de représentation des données