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.
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.