Apprentissage automatique Python – Recherche de grille

Sur cette page, Infodewi.com collabore avec
Académie des sciences des données de NYCpour délivrer des contenus de formation numériques à nos étudiants.
Recherche de grille
La majorité des modèles d’apprentissage automatique contiennent des paramètres qui peuvent être ajustés pour faire varier la façon dont le modèle apprend. Par exemple, le modèle de régression logistique, de sklearn
a un paramètre C
qui contrôle la régularisation, ce qui affecte la complexité du modèle.
Comment choisissons-nous le meilleur rapport qualité-prix pour C
? La meilleure valeur dépend des données utilisées pour entraîner le modèle.
Comment ça marche?
Une méthode consiste à essayer différentes valeurs, puis à choisir la valeur qui donne le meilleur score. Cette technique est connue sous le nom de grille de recherche. Si nous devions sélectionner les valeurs de deux paramètres ou plus, nous évaluerions toutes les combinaisons des ensembles de valeurs, formant ainsi une grille de valeurs.
Avant d’entrer dans l’exemple, il est bon de savoir ce que fait le paramètre que nous modifions. Des valeurs plus élevées de C
indiquez au modèle que les données d’entraînement ressemblent aux informations du monde réel, accordez plus de poids aux données d’entraînement. Alors que des valeurs inférieures de C
faire le contraire.
Utilisation des paramètres par défaut
Voyons d’abord quel type de résultats nous pouvons générer sans une recherche de grille en utilisant uniquement les paramètres de base.
Pour commencer, nous devons d’abord charger le jeu de données avec lequel nous allons travailler.
from sklearn import datasets
iris = datasets.load_iris()
Ensuite, pour créer le modèle, nous devons disposer d’un ensemble de variables indépendantes X et d’une variable dépendante y.
X = iris['data']
y = iris['target']
Nous allons maintenant charger le modèle logistique pour classer les fleurs d’iris.
from sklearn.linear_model import LogisticRegression
Création du modèle, définition de max_iter sur une valeur plus élevée pour s’assurer que le modèle trouve un résultat.
Gardez à l’esprit la valeur par défaut pour C
dans un modèle de régression logistique est 1
nous comparerons cela plus tard.
Dans l’exemple ci-dessous, nous examinons l’ensemble de données de l’iris et essayons de former un modèle avec des valeurs variables pour C
en régression logistique.
logit = LogisticRegression(max_iter = 10000)
Après avoir créé le modèle, nous devons ajuster le modèle aux données.
Pour évaluer le modèle, nous exécutons la méthode de score.
Exemple
à partir d’ensembles de données d’importation sklearn
de sklearn.linear_model importer LogisticRegression
iris = datasets.load_iris()
X = iris[‘data’]
y = iris[‘target’]
logit = LogisticRegression(max_iter = 10000)
print(logit.fit(X,y))
print(logit.score(X,y))
Exemple d’exécution »
Avec le réglage par défaut de C = 1
nous avons obtenu un score de 0.973
.
Voyons si nous pouvons faire mieux en implémentant une recherche par grille avec des valeurs de différence de 0,973.
PUBLICITÉ
Implémentation de la recherche de grille
Nous suivrons les mêmes étapes qu’auparavant, sauf que cette fois, nous définirons une plage de valeurs pour C
.
Savoir quelles valeurs définir pour les paramètres recherchés nécessitera une combinaison de connaissances du domaine et de pratique.
Étant donné que la valeur par défaut de C
est 1
nous définirons une plage de valeurs qui l’entoure.
C = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]
Ensuite, nous allons créer une boucle for pour modifier les valeurs de C
et évaluer le modèle à chaque changement.
Nous allons d’abord créer une liste vide pour y stocker le score.
Pour changer les valeurs de C
nous devons boucler sur la plage de valeurs et mettre à jour le paramètre à chaque fois.
for choice in C:
logit.set_params(C=choice)
logit.fit(X, y)
scores.append(logit.score(X, y))
Avec les scores stockés dans une liste, nous pouvons évaluer quel est le meilleur choix de C
est.
Exemple
à partir d’ensembles de données d’importation sklearn
de sklearn.linear_model importer LogisticRegression
iris = datasets.load_iris()
X = iris[‘data’]
y = iris[‘target’]
logit = LogisticRegression(max_iter = 10000)
C = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]
scores = []
pour le choix en C :
logit.set_params(C=choix)
logit.fit(X, y)
scores.append(logit.score(X, y))
impression (partitions)
Exemple d’exécution »
Résultats expliqués
Nous pouvons voir que les valeurs inférieures de C
moins performant que le paramètre de base de 1
. Cependant, comme nous avons augmenté la valeur de C
pour 1.75
le modèle a connu une précision accrue.
Il semble que l’augmentation C
au-delà de ce montant n’aide pas à augmenter la précision du modèle.
Remarque sur les meilleures pratiques
Nous avons noté notre modèle de régression logistique en utilisant les mêmes données que celles utilisées pour l’entraîner. Si le modèle correspond trop étroitement à ces données, il peut ne pas être efficace pour prédire des données invisibles. Cette erreur statistique est connue sous le nom de trop ajusté.
Pour éviter d’être induit en erreur par les scores sur les données d’apprentissage, nous pouvons mettre de côté une partie de nos données et l’utiliser spécifiquement dans le but de tester le modèle. Reportez-vous au cours sur le fractionnement train/test pour éviter d’être induit en erreur et de sur-adapter.
#Apprentissage #automatique #Python #Recherche #grille