Introdução
O Gradiente Descendente Estocástico (SGD) é um algoritmo de otimização popular usado no aprendizado de máquina. É uma variação do algoritmo de gradiente descendente que utiliza um subconjunto aleatoriamente selecionado dos dados de treinamento em cada iteração. Isso o torna computacionalmente eficiente e adequado para lidar com grandes conjuntos de dados. Neste laboratório, iremos percorrer os passos da implementação do SGD em Python usando o scikit-learn.
Dicas da Máquina Virtual
Após o término da inicialização da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para acessar o Jupyter Notebook para praticar.
Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão e resolveremos o problema rapidamente para você.
Importar Bibliotecas
Primeiro, precisamos importar as bibliotecas necessárias para este laboratório, incluindo o 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
Carregar Dados
Em seguida, carregaremos o conjunto de dados iris do scikit-learn. Este conjunto de dados é um conjunto de dados clássico de aprendizado de máquina que consiste em medições de flores de íris, juntamente com suas etiquetas de espécies.
iris = load_iris()
X = iris.data
y = iris.target
Pré-processar Dados
Antes de aplicar o SGD, muitas vezes é benéfico pré-processar os dados. Neste caso, vamos padronizar as características usando o StandardScaler do scikit-learn.
scaler = StandardScaler()
X = scaler.fit_transform(X)
Dividir Dados
Dividiremos o conjunto de dados em um conjunto de treinamento e um conjunto de teste. O conjunto de treinamento será usado para treinar o classificador SGD, enquanto o conjunto de teste será usado para avaliar seu desempenho.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Treinar o Classificador
Agora podemos criar e treinar o classificador SGD usando a classe SGDClassifier do scikit-learn. Usaremos a função de perda 'hinge', comumente utilizada para classificadores lineares.
clf = SGDClassifier(loss='hinge', random_state=42)
clf.fit(X_train, y_train)
Fazer Previsões
Depois de treinado o classificador, podemos usá-lo para fazer previsões em novos dados. Aqui, usaremos para prever as classes-alvo para o conjunto de teste.
y_pred = clf.predict(X_test)
Avaliar o Desempenho
Finalmente, avaliaremos o desempenho do classificador calculando a precisão de suas previsões no conjunto de teste.
accuracy = accuracy_score(y_test, y_pred)
print("Precisão:", accuracy)
Resumo
Neste laboratório, aprendemos como implementar o Gradiente Descendente Estocástico (SGD) usando o scikit-learn. Carregamos o conjunto de dados iris, pré-processamos os dados, dividimos em conjuntos de treino e teste, treinamos um classificador SGD, fizemos previsões e avaliamos o desempenho do classificador. O SGD é um poderoso algoritmo de otimização amplamente utilizado em aprendizado de máquina para problemas de grande escala.