Implémentation du Gradient Stochastique

Machine LearningMachine LearningBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

La descente de gradient stochastique (SGD) est un algorithme d'optimisation populaire utilisé en apprentissage automatique. C'est une variante de l'algorithme de descente de gradient qui utilise un sous-ensemble aléatoire des données d'entraînement à chaque itération. Cela en fait un algorithme efficace en termes de calcul et adapté à la manipulation de grands ensembles de données. Dans ce laboratoire, nous allons parcourir les étapes de la mise en œuvre de la SGD en Python à l'aide de scikit-learn.

Conseils sur la VM

Une fois le démarrage de la VM terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session, et nous réglerons rapidement le problème pour vous.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/linear_model("Linear Models") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/preprocessing("Preprocessing and Normalization") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/model_selection("Model Selection") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/metrics("Metrics") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/linear_model -.-> lab-71102{{"Implémentation du Gradient Stochastique"}} sklearn/preprocessing -.-> lab-71102{{"Implémentation du Gradient Stochastique"}} sklearn/model_selection -.-> lab-71102{{"Implémentation du Gradient Stochastique"}} sklearn/metrics -.-> lab-71102{{"Implémentation du Gradient Stochastique"}} sklearn/datasets -.-> lab-71102{{"Implémentation du Gradient Stochastique"}} ml/sklearn -.-> lab-71102{{"Implémentation du Gradient Stochastique"}} end

Importation des bibliothèques

Tout d'abord, nous devons importer les bibliothèques nécessaires pour ce laboratoire, y compris scikit-learn.

import numpy as np
from sklearn.linear_model import SGDClassifier
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

Chargement des données

Ensuite, nous allons charger l'ensemble de données iris à partir de scikit-learn. Cet ensemble de données est un ensemble de données d'apprentissage automatique classique qui consiste en des mesures de fleurs d'iris, ainsi que leurs étiquettes d'espèces.

iris = load_iris()
X = iris.data
y = iris.target

Prétraitement des données

Avant d'appliquer la SGD, il est souvent avantageux de prétraiter les données. Dans ce cas, nous allons standardiser les caractéristiques à l'aide de StandardScaler de scikit-learn.

scaler = StandardScaler()
X = scaler.fit_transform(X)

Diviser les données

Nous allons diviser l'ensemble de données en un ensemble d'entraînement et un ensemble de test. L'ensemble d'entraînement sera utilisé pour entraîner le classifieur SGD, tandis que l'ensemble de test sera utilisé pour évaluer ses performances.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Entraîner le classifieur

Maintenant, nous pouvons créer et entraîner le classifieur SGD à l'aide de la classe SGDClassifier de scikit-learn. Nous utiliserons la fonction de perte 'hinge', qui est couramment utilisée pour les classifieurs linéaires.

clf = SGDClassifier(loss='hinge', random_state=42)
clf.fit(X_train, y_train)

Faire des prédictions

Une fois que le classifieur est entraîné, nous pouvons l'utiliser pour faire des prédictions sur de nouvelles données. Ici, nous allons l'utiliser pour prédire les classes cibles pour l'ensemble de test.

y_pred = clf.predict(X_test)

Évaluer les performances

Enfin, nous allons évaluer les performances du classifieur en calculant la précision de ses prédictions sur l'ensemble de test.

accuracy = accuracy_score(y_test, y_pred)
print("Précision :", accuracy)

Sommaire

Dans ce laboratoire, nous avons appris à implémenter le Gradient Stochastique (SGD) à l'aide de scikit-learn. Nous avons chargé l'ensemble de données iris, prétraité les données, les avons divisées en ensembles d'entraînement et de test, avons entraîné un classifieur SGD, avons fait des prédictions et avons évalué les performances du classifieur. Le SGD est un puissant algorithme d'optimisation largement utilisé en apprentissage automatique pour les problèmes à grande échelle.