Implementando el Descenso de Gradiente Estocástico

Machine LearningMachine LearningBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

El Descenso de Gradiente Estocástico (Stochastic Gradient Descent - SGD) es un algoritmo de optimización popular utilizado en el aprendizaje automático. Es una variación del algoritmo de descenso de gradiente que utiliza un subconjunto aleatoriamente seleccionado de los datos de entrenamiento en cada iteración. Esto lo hace computacionalmente eficiente y adecuado para manejar conjuntos de datos grandes. En este laboratorio, recorreremos los pasos para implementar el SGD en Python utilizando scikit-learn.

Consejos sobre la VM

Una vez que se haya completado la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno para acceder a Jupyter Notebook y practicar.

A veces, es posible que tenga que esperar unos segundos para que Jupyter Notebook termine de cargarse. La validación de operaciones no puede automatizarse debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje comentarios después de la sesión y resolveremos rápidamente el problema para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) 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"]) 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{{"Implementando el Descenso de Gradiente Estocástico"}} sklearn/preprocessing -.-> lab-71102{{"Implementando el Descenso de Gradiente Estocástico"}} sklearn/model_selection -.-> lab-71102{{"Implementando el Descenso de Gradiente Estocástico"}} sklearn/metrics -.-> lab-71102{{"Implementando el Descenso de Gradiente Estocástico"}} sklearn/datasets -.-> lab-71102{{"Implementando el Descenso de Gradiente Estocástico"}} ml/sklearn -.-> lab-71102{{"Implementando el Descenso de Gradiente Estocástico"}} end

Importar bibliotecas

Primero, necesitamos importar las bibliotecas necesarias para este laboratorio, incluyendo 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

Cargar datos

A continuación, cargaremos el conjunto de datos iris de scikit-learn. Este conjunto de datos es un conjunto de datos clásico de aprendizaje automático que consta de mediciones de flores de iris, junto con sus etiquetas de especies.

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

Preprocesar datos

Antes de aplicar el SGD, a menudo es beneficioso preprocesar los datos. En este caso, estandarizaremos las características utilizando StandardScaler de scikit-learn.

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

Dividir datos

Dividiremos el conjunto de datos en un conjunto de entrenamiento y un conjunto de prueba. El conjunto de entrenamiento se utilizará para entrenar el clasificador SGD, mientras que el conjunto de prueba se utilizará para evaluar su rendimiento.

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

Entrenar el clasificador

Ahora podemos crear y entrenar el clasificador SGD utilizando la clase SGDClassifier de scikit-learn. Utilizaremos la función de pérdida 'hinge', que se utiliza comúnmente para clasificadores lineales.

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

Hacer predicciones

Una vez que el clasificador está entrenado, podemos utilizarlo para hacer predicciones en nuevos datos. Aquí, lo utilizaremos para predecir las clases objetivo del conjunto de prueba.

y_pred = clf.predict(X_test)

Evaluar el rendimiento

Finalmente, evaluaremos el rendimiento del clasificador calculando la precisión de sus predicciones en el conjunto de prueba.

accuracy = accuracy_score(y_test, y_pred)
print("Precisión:", accuracy)

Resumen

En este laboratorio, aprendimos cómo implementar el Descenso de Gradiente Estocástico (Stochastic Gradient Descent - SGD) utilizando scikit-learn. Cargamos el conjunto de datos iris, preprocesamos los datos, los dividimos en conjuntos de entrenamiento y prueba, entrenamos un clasificador SGD, hicimos predicciones y evaluamos el rendimiento del clasificador. El SGD es un algoritmo de optimización poderoso que se utiliza ampliamente en el aprendizaje automático para problemas a gran escala.