Descente de gradient stochastique
Ici, nous allons découvrir un algorithme d'optimisation dans Sklearn, appelé descente de gradient stochastique (SGD - Stochastic Gradient Descent).
La descente de gradient stochastique (SGD) est un algorithme d'optimisation simple mais efficace utilisé pour trouver les valeurs des paramètres/coefficients des fonctions qui minimisent une fonction de coût. En d'autres termes, il est utilisé pour l'apprentissage discriminant de classificateurs linéaires sous des fonctions de perte convexes, comme les SVM et la régression logistique. Il a été appliqué avec succès à des ensembles de données à grande échelle car la mise à jour des coefficients est effectuée pour chaque instance d'apprentissage, plutôt qu'à la fin des instances.
Classificateur SGD
Le classificateur SGD (Stochastic Gradient Descent) implémente essentiellement une routine d'apprentissage SGD ordinaire prenant en charge diverses fonctions de perte et pénalités pour la classification. Scikit-learn fournit le module SGDClassifier pour implémenter la classification SGD.
Paramètres
La liste suivante présente les paramètres utilisés par le module SGDClassifier :
- loss - str, default = 'hinge' (perte). Il représente la fonction de perte à utiliser lors de la mise en œuvre. La valeur par défaut est 'hinge' qui nous donnera un SVM linéaire. Les autres options qui peuvent être utilisées sont :
- log - Cette perte nous donnera une régression logistique, c'est-à-dire un classificateur probabiliste.
- modified_huber - une perte lisse qui apporte une tolérance aux valeurs aberrantes ainsi que des estimations de probabilité.
- squared_hinge - similaire à la perte 'hinge' mais elle est pénalisée de manière quadratique.
- perceptron - comme son nom l'indique, il s'agit d'une perte linéaire qui est utilisée par l'algorithme perceptron.
- penalty - str, 'none', 'l2', 'l1', 'elasticnet'. Il s'agit du terme de régularisation utilisé dans le modèle. Par défaut, il s'agit de L2. Nous pouvons également utiliser L1 ou 'elasticnet', mais ces deux termes risquent d'apporter de la sparsité au modèle, ce qui n'est pas réalisable avec L2.
- alpha - flottant, par défaut = 0,0001. Alpha, la constante qui multiplie le terme de régularisation, est le paramètre d'accord qui décide dans quelle mesure nous voulons pénaliser le modèle. La valeur par défaut est 0.0001.
- l1_ratio - float, default = 0.15. Il s'agit du paramètre de mélange ElasticNet. Sa plage est 0 < = l1_ratio < = 1. Si l1_ratio = 1, la pénalité serait la pénalité L1. Si l1_ratio = 0, la pénalité serait une pénalité L2.
- fit_intercept - Booléen, Défaut=True. Ce paramètre indique si une constante (biais ou intercept) doit être ajoutée à la fonction de décision. Aucune ordonnée à l'origine ne sera utilisée dans le calcul et les données seront supposées être déjà centrées, s'il est défini à false.
- tol - flottant ou aucun, facultatif, par défaut = 1.e-3. Ce paramètre représente le critère d'arrêt des itérations. Sa valeur par défaut est False mais s'il est défini sur None, les itérations s'arrêteront lorsque 𝒍loss > best_loss - tol pour n_iter_no_changesuccessives époques.
- shuffle - Booléen, facultatif, par défaut = True. Ce paramètre indique si nous voulons que nos données d'entraînement soient mélangées après chaque époque ou non.
- verbose - entier, par défaut = 0. Il représente le niveau de verbosité. Sa valeur par défaut est 0.
- epsilon - float, default = 0.1. Ce paramètre spécifie la largeur de la région insensible. Si loss = 'epsilon-insensitive', toute différence, entre la prédiction actuelle et l'étiquette correcte, inférieure au seuil sera ignorée.
- max_iter - int, optionnel, défaut = 1000. Comme son nom l'indique, il représente le nombre maximum de passages sur les époques, c'est-à-dire les données d'entraînement.
- warm_start - bool, optional, default = false. Avec ce paramètre réglé sur True, nous pouvons réutiliser la solution de l'appel précédent à fit comme initialisation. Si nous choisissons la valeur par défaut, c'est-à-dire false, la solution précédente sera effacée.
- random_state - int, RandomState instance ou None, facultatif, par défaut = none. Ce paramètre représente la graine du nombre pseudo-aléatoire généré qui est utilisé lors du brassage des données. Les options suivantes sont disponibles :
- int - Dans ce cas, random_state est la graine utilisée par le générateur de nombres aléatoires.
- RandomState instance - Dans ce cas, random_state est le générateur de nombres aléatoires.
- None - Dans ce cas, le générateur de nombres aléatoires est l'instance RandonState utilisée par np.random.
- n_jobs - int ou none, optionnel, Défaut = None. Il représente le nombre de CPUs à utiliser dans le calcul OVA (One Versus All), pour les problèmes multi-classes. La valeur par défaut est none, ce qui signifie 1.
- learning_rate - chaîne de caractères, facultatif, par défaut = 'optimal'.
Si le taux d'apprentissage est 'constant', eta = eta0 ;
Si le taux d'apprentissage est 'optimal', eta = 1.0/(alpha*(t+t0)), où t0 est choisi par Leon Bottou ;
Si le taux d'apprentissage est 'invscalling', eta = eta0/pow(t, power_t).
Si le taux d'apprentissage = 'adaptatif', eta = eta0.
- eta0 - double, par défaut = 0,0. Il représente le taux d'apprentissage initial pour les options de taux d'apprentissage mentionnées ci-dessus, c'est-à-dire 'constant', 'invscalling' ou 'adaptive'.
- power_t - idouble, par défaut = 0.5. C'est l'exposant pour le taux d'apprentissage 'incscalling'.
- early_stopping - bool, default = False. Ce paramètre représente l'utilisation de l'arrêt précoce pour terminer l'apprentissage lorsque le score de validation ne s'améliore pas. Sa valeur par défaut est false mais lorsqu'il est réglé sur true, il met automatiquement de côté une fraction stratifiée de données d'apprentissage comme validation et arrête l'apprentissage lorsque le score de validation ne s'améliore pas.
- validation_fraction - float, default = 0.1. Il n'est utilisé que lorsque early_stopping est vrai. Il représente la proportion de données d'entraînement à mettre de côté comme ensemble de validation pour l'arrêt précoce des données d'entraînement....
- n_iter_no_change - int, default=5. Il représente le nombre d'itérations sans amélioration que l'algorithme doit exécuter avant l'arrêt précoce.
- class_weight - dict, {class_label : weight} ou "balanced", ou None, optional. Ce paramètre représente les poids associés aux classes. S'il n'est pas fourni, les classes sont supposées avoir le poids 1.
- warm_start - bool, optionnel, par défaut = false. Avec ce paramètre réglé sur True, nous pouvons réutiliser la solution de l'appel précédent à fit comme initialisation. Si nous choisissons la valeur par défaut, c'est-à-dire false, cela effacera la solution précédente.
- average - iBooléen ou int, facultatif, par défaut = false. Il représente le nombre de CPU à utiliser dans le calcul OVA (One Versus All), pour les problèmes multi-classes. La valeur par défaut est none, ce qui signifie 1.
Attributs
Besoin d'aide ?
Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !