Amélioration des performances du modèle ML (suite…)

Amélioration des performances avec le réglage d'algorithme

Comme nous le savons, les modèles ML sont paramétrés de manière à ce que leur comportement puisse être ajusté pour un problème spécifique. Le réglage de l'algorithme signifie trouver la meilleure combinaison de ces paramètres afin que les performances du modèle ML puissent être améliorées. Ce processus parfois appelé optimisation des hyperparamètres et les paramètres de l'algorithme lui-même sont appelés hyperparamètres et les coefficients trouvés par l'algorithme ML sont appelés paramètres.

Ici, nous allons discuter de certaines méthodes de réglage des paramètres d'algorithme fournies par Python Scikit-learn.

Réglage des paramètres de recherche de grille

C'est une approche de réglage des paramètres. Le point clé du fonctionnement de cette méthode est qu'elle construit et évalue le modèle méthodiquement pour chaque combinaison possible de paramètre d'algorithme spécifié dans une grille. Par conséquent, nous pouvons dire que cet algorithme a un caractère de recherche.

Example

Dans la recette Python suivante, nous allons effectuer une recherche de grille en utilisant la classe GridSearchCV de sklearn pour évaluer diverses valeurs alpha pour l'algorithme de régression Ridge sur l'ensemble de données sur le diabète des Indiens Pima.

Tout d'abord, importez les packages requis comme suit -

import numpy
from pandas import read_csv
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV

Maintenant, nous devons charger l'ensemble de données sur le diabète Pima comme dans les exemples précédents -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]

Ensuite, évaluez les différentes valeurs alpha comme suit -

alphas = numpy.array([1,0.1,0.01,0.001,0.0001,0])
param_grid = dict(alpha=alphas)

Maintenant, nous devons appliquer la recherche de grille sur notre modèle -

model = Ridge()
grid = GridSearchCV(estimator=model, param_grid=param_grid)
grid.fit(X, Y)

Imprimez le résultat avec la ligne de script suivante -

print(grid.best_score_)
print(grid.best_estimator_.alpha)

Output

0.2796175593129722
1.0

Le résultat ci-dessus nous donne le score optimal et l'ensemble des paramètres de la grille qui ont atteint ce score. La valeur alpha dans ce cas est 1.0.

Réglage des paramètres de recherche aléatoire

C'est une approche de réglage des paramètres. Le point clé du fonctionnement de cette méthode est qu'elle échantillonne les paramètres de l'algorithme à partir d'une distribution aléatoire pour un nombre fixe d'itérations.

Example

Dans la recette Python suivante, nous allons effectuer une recherche aléatoire en utilisant la classe RandomizedSearchCV de sklearn pour évaluer différentes valeurs alpha entre 0 et 1 pour l'algorithme de régression de crête sur l'ensemble de données sur le diabète des Indiens Pima.

Tout d'abord, importez les packages requis comme suit -

import numpy
from pandas import read_csv
from scipy.stats import uniform
from sklearn.linear_model import Ridge
from sklearn.model_selection import RandomizedSearchCV

Maintenant, nous devons charger l'ensemble de données sur le diabète Pima comme dans les exemples précédents -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]

Ensuite, évaluez les différentes valeurs alpha sur l'algorithme de régression Ridge comme suit -

param_grid = {'alpha': uniform()}
model = Ridge()
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_grid, n_iter=50,
random_state=7)
random_search.fit(X, Y)

Imprimez le résultat avec la ligne de script suivante -

print(random_search.best_score_)
print(random_search.best_estimator_.alpha)

Output

0.27961712703051084
0.9779895119966027

La sortie ci-dessus nous donne le score optimal tout simplement similaire à la recherche de grille.