Введение
Стохастический градиентный спуск (Stochastic Gradient Descent, SGD) — популярный алгоритм оптимизации, используемый в машинном обучении. Это вариант алгоритма градиентного спуска, который на каждой итерации использует случайно выбранное подмножество обучающих данных. Это делает его вычислительно эффективным и подходящим для обработки больших наборов данных. В этом практическом занятии (лабораторной работе) мы рассмотрим шаги по реализации SGD на Python с использованием библиотеки scikit-learn.
Советы по виртуальной машине (VM)
После запуска виртуальной машины нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если у вас возникнут проблемы во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импорт библиотек
Сначала нам нужно импортировать необходимые библиотеки для этого практического занятия (лабораторной работы), в том числе 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
Загрузка данных
Далее мы загрузим набор данных ирисов (iris dataset) из библиотеки scikit-learn. Этот набор данных является классическим набором данных для машинного обучения, который состоит из измерений ирисов и меток их видов.
iris = load_iris()
X = iris.data
y = iris.target
Предварительная обработка данных
Перед применением стохастического градиентного спуска (SGD) часто полезно предварительно обработать данные. В этом случае мы стандартизируем признаки с использованием StandardScaler из библиотеки scikit-learn.
scaler = StandardScaler()
X = scaler.fit_transform(X)
Разделение данных
Мы разделим набор данных на обучающую и тестовую выборки. Обучающая выборка будет использоваться для обучения классификатора на основе стохастического градиентного спуска (SGD classifier), а тестовая выборка — для оценки его производительности.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Обучение классификатора
Теперь мы можем создать и обучить классификатор на основе стохастического градиентного спуска (SGD classifier) с использованием класса SGDClassifier из библиотеки scikit-learn. Мы будем использовать функцию потерь 'hinge', которая обычно используется для линейных классификаторов.
clf = SGDClassifier(loss='hinge', random_state=42)
clf.fit(X_train, y_train)
Сделать предсказания
После того, как классификатор обучен, мы можем использовать его для создания предсказаний на новых данных. Здесь мы будем использовать его для предсказания целевых классов для тестовой выборки.
y_pred = clf.predict(X_test)
Оценка производительности
Наконец, мы оценим производительность классификатора, вычислив точность (accuracy) его предсказаний на тестовой выборке.
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
Резюме
В этом практическом занятии (lab) мы научились реализовывать стохастический градиентный спуск (Stochastic Gradient Descent, SGD) с использованием библиотеки scikit-learn. Мы загрузили набор данных ирисов (iris dataset), выполнили предварительную обработку данных, разделили их на обучающую и тестовую выборки, обучили классификатор на основе SGD, сделали предсказания и оценили производительность классификатора. SGD — это мощный алгоритм оптимизации, который широко используется в машинном обучении для решения задач большого масштаба.