Реализация стохастического градиентного спуска

Machine LearningMachine LearningBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Стохастический градиентный спуск (Stochastic Gradient Descent, SGD) — популярный алгоритм оптимизации, используемый в машинном обучении. Это вариант алгоритма градиентного спуска, который на каждой итерации использует случайно выбранное подмножество обучающих данных. Это делает его вычислительно эффективным и подходящим для обработки больших наборов данных. В этом практическом занятии (лабораторной работе) мы рассмотрим шаги по реализации SGD на Python с использованием библиотеки scikit-learn.

Советы по виртуальной машине (VM)

После запуска виртуальной машины нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если у вас возникнут проблемы во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня начальный с процентом завершения 82%. Он получил 100% положительных отзывов от учащихся.

Импорт библиотек

Сначала нам нужно импортировать необходимые библиотеки для этого практического занятия (лабораторной работы), в том числе 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 — это мощный алгоритм оптимизации, который широко используется в машинном обучении для решения задач большого масштаба.